/*
* Copyright (c) 2007-2009 The Khronos Group Inc.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy of
* this software and /or associated documentation files (the "Materials "), to
* deal in the Materials without restriction, including without limitation the
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
* sell copies of the Materials, and to permit persons to whom the Materials are
* furnished to do so, subject to
* the following conditions:
*
* The above copyright notice and this permission notice shall be included
* in all copies or substantial portions of the Materials.
*
* THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE MATERIALS OR THE USE OR OTHER DEALINGS IN THE
* MATERIALS.
*
* OpenSLES.h - OpenSL ES version 1.0.1
*
*/
/****************************************************************************/
/* NOTE: This file is a standard OpenSL ES header file and should not be */
/* modified in any way. */
/****************************************************************************/
#ifndef OPENSL_ES_H_
#define OPENSL_ES_H_
#ifdef __cplusplus
extern "C" {
#endif
#include "OpenSLES_Platform.h"
/*****************************************************************************/
/* Common types, structures, and defines */
/*****************************************************************************/
#ifndef _KHRONOS_KEYS_
#define _KHRONOS_KEYS_
#define KHRONOS_TITLE "KhronosTitle"
#define KHRONOS_ALBUM "KhronosAlbum"
#define KHRONOS_TRACK_NUMBER "KhronosTrackNumber"
#define KHRONOS_ARTIST "KhronosArtist"
#define KHRONOS_GENRE "KhronosGenre"
#define KHRONOS_YEAR "KhronosYear"
#define KHRONOS_COMMENT "KhronosComment"
#define KHRONOS_ARTIST_URL "KhronosArtistURL"
#define KHRONOS_CONTENT_URL "KhronosContentURL"
#define KHRONOS_RATING "KhronosRating"
#define KHRONOS_ALBUM_ART "KhronosAlbumArt"
#define KHRONOS_COPYRIGHT "KhronosCopyright"
#endif
/* remap common types to SL types for clarity */
typedef sl_int8_t SLint8; /* 8 bit signed integer */
typedef sl_uint8_t SLuint8; /* 8 bit unsigned integer */
typedef sl_int16_t SLint16; /* 16 bit signed integer */
typedef sl_uint16_t SLuint16; /* 16 bit unsigned integer */
typedef sl_int32_t SLint32; /* 32 bit signed integer */
typedef sl_uint32_t SLuint32; /* 32 bit unsigned integer */
typedef SLuint32 SLboolean;
#define SL_BOOLEAN_FALSE ((SLboolean) 0x00000000)
#define SL_BOOLEAN_TRUE ((SLboolean) 0x00000001)
typedef SLuint8 SLchar; /* UTF-8 is to be used */
typedef SLint16 SLmillibel;
typedef SLuint32 SLmillisecond;
typedef SLuint32 SLmilliHertz;
typedef SLint32 SLmillimeter;
typedef SLint32 SLmillidegree;
typedef SLint16 SLpermille;
typedef SLuint32 SLmicrosecond;
typedef SLuint32 SLresult;
#define SL_MILLIBEL_MAX ((SLmillibel) 0x7FFF)
#define SL_MILLIBEL_MIN ((SLmillibel) (-SL_MILLIBEL_MAX-1))
#define SL_MILLIHERTZ_MAX ((SLmilliHertz) 0xFFFFFFFF)
#define SL_MILLIMETER_MAX ((SLmillimeter) 0x7FFFFFFF)
/** Interface ID defined as a UUID */
typedef const struct SLInterfaceID_ {
SLuint32 time_low;
SLuint16 time_mid;
SLuint16 time_hi_and_version;
SLuint16 clock_seq;
SLuint8 node[6];
} * SLInterfaceID;
/* Forward declaration for the object interface */
struct SLObjectItf_;
typedef const struct SLObjectItf_ * const * SLObjectItf;
/* Objects ID's */
#define SL_OBJECTID_ENGINE ((SLuint32) 0x00001001)
#define SL_OBJECTID_LEDDEVICE ((SLuint32) 0x00001002)
#define SL_OBJECTID_VIBRADEVICE ((SLuint32) 0x00001003)
#define SL_OBJECTID_AUDIOPLAYER ((SLuint32) 0x00001004)
#define SL_OBJECTID_AUDIORECORDER ((SLuint32) 0x00001005)
#define SL_OBJECTID_MIDIPLAYER ((SLuint32) 0x00001006)
#define SL_OBJECTID_LISTENER ((SLuint32) 0x00001007)
#define SL_OBJECTID_3DGROUP ((SLuint32) 0x00001008)
#define SL_OBJECTID_OUTPUTMIX ((SLuint32) 0x00001009)
#define SL_OBJECTID_METADATAEXTRACTOR ((SLuint32) 0x0000100A)
/* SL Profiles */
#define SL_PROFILES_PHONE ((SLuint16) 0x0001)
#define SL_PROFILES_MUSIC ((SLuint16) 0x0002)
#define SL_PROFILES_GAME ((SLuint16) 0x0004)
/* Types of voices supported by the system */
#define SL_VOICETYPE_2D_AUDIO ((SLuint16) 0x0001)
#define SL_VOICETYPE_MIDI ((SLuint16) 0x0002)
#define SL_VOICETYPE_3D_AUDIO ((SLuint16) 0x0004)
#define SL_VOICETYPE_3D_MIDIOUTPUT ((SLuint16) 0x0008)
/* Convenient macros representing various different priority levels, for use with the SetPriority method */
#define SL_PRIORITY_LOWEST ((SLint32) (-0x7FFFFFFF-1))
#define SL_PRIORITY_VERYLOW ((SLint32) -0x60000000)
#define SL_PRIORITY_LOW ((SLint32) -0x40000000)
#define SL_PRIORITY_BELOWNORMAL ((SLint32) -0x20000000)
#define SL_PRIORITY_NORMAL ((SLint32) 0x00000000)
#define SL_PRIORITY_ABOVENORMAL ((SLint32) 0x20000000)
#define SL_PRIORITY_HIGH ((SLint32) 0x40000000)
#define SL_PRIORITY_VERYHIGH ((SLint32) 0x60000000)
#define SL_PRIORITY_HIGHEST ((SLint32) 0x7FFFFFFF)
/** These macros list the various sample formats that are possible on audio input and output devices. */
#define SL_PCMSAMPLEFORMAT_FIXED_8 ((SLuint16) 0x0008)
#define SL_PCMSAMPLEFORMAT_FIXED_16 ((SLuint16) 0x0010)
#define SL_PCMSAMPLEFORMAT_FIXED_20 ((SLuint16) 0x0014)
#define SL_PCMSAMPLEFORMAT_FIXED_24 ((SLuint16) 0x0018)
#define SL_PCMSAMPLEFORMAT_FIXED_28 ((SLuint16) 0x001C)
#define SL_PCMSAMPLEFORMAT_FIXED_32 ((SLuint16) 0x0020)
/** These macros specify the commonly used sampling rates (in milliHertz) supported by most audio I/O devices. */
#define SL_SAMPLINGRATE_8 ((SLuint32) 8000000)
#define SL_SAMPLINGRATE_11_025 ((SLuint32) 11025000)
#define SL_SAMPLINGRATE_12 ((SLuint32) 12000000)
#define SL_SAMPLINGRATE_16 ((SLuint32) 16000000)
#define SL_SAMPLINGRATE_22_05 ((SLuint32) 22050000)
#define SL_SAMPLINGRATE_24 ((SLuint32) 24000000)
#define SL_SAMPLINGRATE_32 ((SLuint32) 32000000)
#define SL_SAMPLINGRATE_44_1 ((SLuint32) 44100000)
#define SL_SAMPLINGRATE_48 ((SLuint32) 48000000)
#define SL_SAMPLINGRATE_64 ((SLuint32) 64000000)
#define SL_SAMPLINGRATE_88_2 ((SLuint32) 88200000)
#define SL_SAMPLINGRATE_96 ((SLuint32) 96000000)
#define SL_SAMPLINGRATE_192 ((SLuint32) 192000000)
#define SL_SPEAKER_FRONT_LEFT ((SLuint32) 0x00000001)
#define SL_SPEAKER_FRONT_RIGHT ((SLuint32) 0x00000002)
#define SL_SPEAKER_FRONT_CENTER ((SLuint32) 0x00000004)
#define SL_SPEAKER_LOW_FREQUENCY ((SLuint32) 0x00000008)
#define SL_SPEAKER_BACK_LEFT ((SLuint32) 0x00000010)
#define SL_SPEAKER_BACK_RIGHT ((SLuint32) 0x00000020)
#define SL_SPEAKER_FRONT_LEFT_OF_CENTER ((SLuint32) 0x00000040)
#define SL_SPEAKER_FRONT_RIGHT_OF_CENTER ((SLuint32) 0x00000080)
#define SL_SPEAKER_BACK_CENTER ((SLuint32) 0x00000100)
#define SL_SPEAKER_SIDE_LEFT ((SLuint32) 0x00000200)
#define SL_SPEAKER_SIDE_RIGHT ((SLuint32) 0x00000400)
#define SL_SPEAKER_TOP_CENTER ((SLuint32) 0x00000800)
#define SL_SPEAKER_TOP_FRONT_LEFT ((SLuint32) 0x00001000)
#define SL_SPEAKER_TOP_FRONT_CENTER ((SLuint32) 0x00002000)
#define SL_SPEAKER_TOP_FRONT_RIGHT ((SLuint32) 0x00004000)
#define SL_SPEAKER_TOP_BACK_LEFT ((SLuint32) 0x00008000)
#define SL_SPEAKER_TOP_BACK_CENTER ((SLuint32) 0x00010000)
#define SL_SPEAKER_TOP_BACK_RIGHT ((SLuint32) 0x00020000)
/*****************************************************************************/
/* Errors */
/* */
/*****************************************************************************/
#define SL_RESULT_SUCCESS ((SLuint32) 0x00000000)
#define SL_RESULT_PRECONDITIONS_VIOLATED ((SLuint32) 0x00000001)
#define SL_RESULT_PARAMETER_INVALID ((SLuint32) 0x00000002)
#define SL_RESULT_MEMORY_FAILURE ((SLuint32) 0x00000003)
#define SL_RESULT_RESOURCE_ERROR ((SLuint32) 0x00000004)
#define SL_RESULT_RESOURCE_LOST ((SLuint32) 0x00000005)
#define SL_RESULT_IO_ERROR ((SLuint32) 0x00000006)
#define SL_RESULT_BUFFER_INSUFFICIENT ((SLuint32) 0x00000007)
#define SL_RESULT_CONTENT_CORRUPTED ((SLuint32) 0x00000008)
#define SL_RESULT_CONTENT_UNSUPPORTED ((SLuint32) 0x00000009)
#define SL_RESULT_CONTENT_NOT_FOUND ((SLuint32) 0x0000000A)
#define SL_RESULT_PERMISSION_DENIED ((SLuint32) 0x0000000B)
#define SL_RESULT_FEATURE_UNSUPPORTED ((SLuint32) 0x0000000C)
#define SL_RESULT_INTERNAL_ERROR ((SLuint32) 0x0000000D)
#define SL_RESULT_UNKNOWN_ERROR ((SLuint32) 0x0000000E)
#define SL_RESULT_OPERATION_ABORTED ((SLuint32) 0x0000000F)
#define SL_RESULT_CONTROL_LOST ((SLuint32) 0x00000010)
/* Object state definitions */
#define SL_OBJECT_STATE_UNREALIZED ((SLuint32) 0x00000001)
#define SL_OBJECT_STATE_REALIZED ((SLuint32) 0x00000002)
#define SL_OBJECT_STATE_SUSPENDED ((SLuint32) 0x00000003)
/* Object event definitions */
#define SL_OBJECT_EVENT_RUNTIME_ERROR ((SLuint32) 0x00000001)
#define SL_OBJECT_EVENT_ASYNC_TERMINATION ((SLuint32) 0x00000002)
#define SL_OBJECT_EVENT_RESOURCES_LOST ((SLuint32) 0x00000003)
#define SL_OBJECT_EVENT_RESOURCES_AVAILABLE ((SLuint32) 0x00000004)
#define SL_OBJECT_EVENT_ITF_CONTROL_TAKEN ((SLuint32) 0x00000005)
#define SL_OBJECT_EVENT_ITF_CONTROL_RETURNED ((SLuint32) 0x00000006)
#define SL_OBJECT_EVENT_ITF_PARAMETERS_CHANGED ((SLuint32) 0x00000007)
/*****************************************************************************/
/* Interface definitions */
/*****************************************************************************/
/** NULL Interface */
extern SL_API const SLInterfaceID SL_IID_NULL;
/*---------------------------------------------------------------------------*/
/* Data Source and Data Sink Structures */
/*---------------------------------------------------------------------------*/
/** Data locator macros */
#define SL_DATALOCATOR_URI ((SLuint32) 0x00000001)
#define SL_DATALOCATOR_ADDRESS ((SLuint32) 0x00000002)
#define SL_DATALOCATOR_IODEVICE ((SLuint32) 0x00000003)
#define SL_DATALOCATOR_OUTPUTMIX ((SLuint32) 0x00000004)
#define SL_DATALOCATOR_RESERVED5 ((SLuint32) 0x00000005)
#define SL_DATALOCATOR_BUFFERQUEUE ((SLuint32) 0x00000006)
#define SL_DATALOCATOR_MIDIBUFFERQUEUE ((SLuint32) 0x00000007)
#define SL_DATALOCATOR_RESERVED8 ((SLuint32) 0x00000008)
/** URI-based data locator definition where locatorType must be SL_DATALOCATOR_URI*/
typedef struct SLDataLocator_URI_ {
SLuint32 locatorType;
SLchar * URI;
} SLDataLocator_URI;
/** Address-based data locator definition where locatorType must be SL_DATALOCATOR_ADDRESS*/
typedef struct SLDataLocator_Address_ {
SLuint32 locatorType;
void *pAddress;
SLuint32 length;
} SLDataLocator_Address;
/** IODevice-types */
#define SL_IODEVICE_AUDIOINPUT ((SLuint32) 0x00000001)
#define SL_IODEVICE_LEDARRAY ((SLuint32) 0x00000002)
#define SL_IODEVICE_VIBRA ((SLuint32) 0x00000003)
#define SL_IODEVICE_RESERVED4 ((SLuint32) 0x00000004)
#define SL_IODEVICE_RESERVED5 ((SLuint32) 0x00000005)
/** IODevice-based data locator definition where locatorType must be SL_DATALOCATOR_IODEVICE*/
typedef struct SLDataLocator_IODevice_ {
SLuint32 locatorType;
SLuint32 deviceType;
SLuint32 deviceID;
SLObjectItf device;
} SLDataLocator_IODevice;
/** OutputMix-based data locator definition where locatorType must be SL_DATALOCATOR_OUTPUTMIX*/
typedef struct SLDataLocator_OutputMix {
SLuint32 locatorType;
SLObjectItf outputMix;
} SLDataLocator_OutputMix;
/** BufferQueue-based data locator definition where locatorType must be SL_DATALOCATOR_BUFFERQUEUE*/
typedef struct SLDataLocator_BufferQueue {
SLuint32 locatorType;
SLuint32 numBuffers;
} SLDataLocator_BufferQueue;
/** MidiBufferQueue-based data locator definition where locatorType must be SL_DATALOCATOR_MIDIBUFFERQUEUE*/
typedef struct SLDataLocator_MIDIBufferQueue {
SLuint32 locatorType;
SLuint32 tpqn;
SLuint32 numBuffers;
} SLDataLocator_MIDIBufferQueue;
/** Data format defines */
#define SL_DATAFORMAT_MIME ((SLuint32) 0x00000001)
#define SL_DATAFORMAT_PCM ((SLuint32) 0x00000002)
#define SL_DATAFORMAT_RESERVED3 ((SLuint32) 0x00000003)
/** MIME-type-based data format definition where formatType must be SL_DATAFORMAT_MIME*/
typedef struct SLDataFormat_MIME_ {
SLuint32 formatType;
SLchar * mimeType;
SLuint32 containerType;
} SLDataFormat_MIME;
/* Byte order of a block of 16- or 32-bit data */
#define SL_BYTEORDER_BIGENDIAN ((SLuint32) 0x00000001)
#define SL_BYTEORDER_LITTLEENDIAN ((SLuint32) 0x00000002)
/* Container type */
#define SL_CONTAINERTYPE_UNSPECIFIED ((SLuint32) 0x00000001)
#define SL_CONTAINERTYPE_RAW ((SLuint32) 0x00000002)
#define SL_CONTAINERTYPE_ASF ((SLuint32) 0x00000003)
#define SL_CONTAINERTYPE_AVI ((SLuint32) 0x00000004)
#define SL_CONTAINERTYPE_BMP ((SLuint32) 0x00000005)
#define SL_CONTAINERTYPE_JPG ((SLuint32) 0x00000006)
#define SL_CONTAINERTYPE_JPG2000 ((SLuint32) 0x00000007)
#define SL_CONTAINERTYPE_M4A ((SLuint32) 0x00000008)
#define SL_CONTAINERTYPE_MP3 ((SLuint32) 0x00000009)
#define SL_CONTAINERTYPE_MP4 ((SLuint32) 0x0000000A)
#define SL_CONTAINERTYPE_MPEG_ES ((SLuint32) 0x0000000B)
#define SL_CONTAINERTYPE_MPEG_PS ((SLuint32) 0x0000000C)
#define SL_CONTAINERTYPE_MPEG_TS ((SLuint32) 0x0000000D)
#define SL_CONTAINERTYPE_QT ((SLuint32) 0x0000000E)
#define SL_CONTAINERTYPE_WAV ((SLuint32) 0x0000000F)
#define SL_CONTAINERTYPE_XMF_0 ((SLuint32) 0x00000010)
#define SL_CONTAINERTYPE_XMF_1 ((SLuint32) 0x00000011)
#define SL_CONTAINERTYPE_XMF_2 ((SLuint32) 0x00000012)
#define SL_CONTAINERTYPE_XMF_3 ((SLuint32) 0x00000013)
#define SL_CONTAINERTYPE_XMF_GENERIC ((SLuint32) 0x00000014)
#define SL_CONTAINERTYPE_AMR ((SLuint32) 0x00000015)
#define SL_CONTAINERTYPE_AAC ((SLuint32) 0x00000016)
#define SL_CONTAINERTYPE_3GPP ((SLuint32) 0x00000017)
#define SL_CONTAINERTYPE_3GA ((SLuint32) 0x00000018)
#define SL_CONTAINERTYPE_RM ((SLuint32) 0x00000019)
#define SL_CONTAINERTYPE_DMF ((SLuint32) 0x0000001A)
#define SL_CONTAINERTYPE_SMF ((SLuint32) 0x0000001B)
#define SL_CONTAINERTYPE_MOBILE_DLS ((SLuint32) 0x0000001C)
#define SL_CONTAINERTYPE_OGG ((SLuint32) 0x0000001D)
/** PCM-type-based data format definition where formatType must be SL_DATAFORMAT_PCM*/
typedef struct SLDataFormat_PCM_ {
SLuint32 formatType;
SLuint32 numChannels;
SLuint32 samplesPerSec;
SLuint32 bitsPerSample;
SLuint32 containerSize;
SLuint32 channelMask;
SLuint32 endianness;
} SLDataFormat_PCM;
typedef struct SLDataSource_ {
void *pLocator;
void *pFormat;
} SLDataSource;
typedef struct SLDataSink_ {
void *pLocator;
void *pFormat;
} SLDataSink;
/*---------------------------------------------------------------------------*/
/* Standard Object Interface */
/*---------------------------------------------------------------------------*/
extern SL_API const SLInterfaceID SL_IID_OBJECT;
/** Object callback */
typedef void (SLAPIENTRY *slObjectCallback) (
SLObjectItf caller,
const void * pContext,
SLuint32 event,
SLresult result,
SLuint32 param,
void *pInterface
);
struct SLObjectItf_ {
SLresult (*Realize) (
SLObjectItf self,
SLboolean async
);
SLresult (*Resume) (
SLObjectItf self,
SLboolean async
);
SLresult (*GetState) (
SLObjectItf self,
SLuint32 * pState
);
SLresult (*GetInterface) (
SLObjectItf self,
const SLInterfaceID iid,
void * pInterface
);
SLresult (*RegisterCallback) (
SLObjectItf self,
slObjectCallback callback,
void * pContext
);
void (*AbortAsyncOperation) (
SLObjectItf self
);
void (*Destroy) (
SLObjectItf self
);
SLresult (*SetPriority) (
SLObjectItf self,
SLint32 priority,
SLboolean preemptable
);
SLresult (*GetPriority) (
SLObjectItf self,
SLint32 *pPriority,
SLboolean *pPreemptable
);
SLresult (*SetLossOfControlInterfaces) (
SLObjectItf self,
SLint16 numInterfaces,
SLInterfaceID * pInterfaceIDs,
SLboolean enabled
);
};
/*---------------------------------------------------------------------------*/
/* Audio IO Device capabilities interface */
/*---------------------------------------------------------------------------*/
#define SL_DEFAULTDEVICEID_AUDIOINPUT ((SLuint32) 0xFFFFFFFF)
#define SL_DEFAULTDEVICEID_AUDIOOUTPUT ((SLuint32) 0xFFFFFFFE)
#define SL_DEFAULTDEVICEID_LED ((SLuint32) 0xFFFFFFFD)
#define SL_DEFAULTDEVICEID_VIBRA ((SLuint32) 0xFFFFFFFC)
#define SL_DEFAULTDEVICEID_RESERVED1 ((SLuint32) 0xFFFFFFFB)
#define SL_DEVCONNECTION_INTEGRATED ((SLint16) 0x0001)
#define SL_DEVCONNECTION_ATTACHED_WIRED ((SLint16) 0x0100)
#define SL_DEVCONNECTION_ATTACHED_WIRELESS ((SLint16) 0x0200)
#define SL_DEVCONNECTION_NETWORK ((SLint16) 0x0400)
#define SL_DEVLOCATION_HANDSET ((SLuint16) 0x0001)
#define SL_DEVLOCATION_HEADSET ((SLuint16) 0x0002)
#define SL_DEVLOCATION_CARKIT ((SLuint16) 0x0003)
#define SL_DEVLOCATION_DOCK ((SLuint16) 0x0004)
#define SL_DEVLOCATION_REMOTE ((SLuint16) 0x0005)
/* Note: SL_DEVLOCATION_RESLTE is deprecated, use SL_DEVLOCATION_REMOTE instead. */
#define SL_DEVLOCATION_RESLTE ((SLuint16) 0x0005)
#define SL_DEVSCOPE_UNKNOWN ((SLuint16) 0x0001)
#define SL_DEVSCOPE_ENVIRONMENT ((SLuint16) 0x0002)
#define SL_DEVSCOPE_USER ((SLuint16) 0x0003)
typedef struct SLAudioInputDescriptor_ {
SLchar *deviceName;
SLint16 deviceConnection;
SLint16 deviceScope;
SLint16 deviceLocation;
SLboolean isForTelephony;
SLmilliHertz minSampleRate;
SLmilliHertz maxSampleRate;
SLboolean isFreqRangeContinuous;
SLmilliHertz *samplingRatesSupported;
SLint16 numOfSamplingRatesSupported;
SLint16 maxChannels;
} SLAudioInputDescriptor;
typedef struct SLAudioOutputDescriptor_ {
SLchar *pDeviceName;
SLint16 deviceConnection;
SLint16 deviceScope;
SLint16 deviceLocation;
SLboolean isForTelephony;
SLmilliHertz minSampleRate;
SLmilliHertz maxSampleRate;
SLboolean isFreqRangeContinuous;
SLmilliHertz *samplingRatesSupported;
SLint16 numOfSamplingRatesSupported;
SLint16 maxChannels;
} SLAudioOutputDescriptor;
extern SL_API const SLInterfaceID SL_IID_AUDIOIODEVICECAPABILITIES;
struct SLAudioIODeviceCapabilitiesItf_;
typedef const struct SLAudioIODeviceCapabilitiesItf_ * const * SLAudioIODeviceCapabilitiesItf;
typedef void (SLAPIENTRY *slAvailableAudioInputsChangedCallback) (
SLAudioIODeviceCapabilitiesItf caller,
void *pContext,
SLuint32 deviceID,
SLint32 numInputs,
SLboolean isNew
);
typedef void (SLAPIENTRY *slAvailableAudioOutputsChangedCallback) (
SLAudioIODeviceCapabilitiesItf caller,
void *pContext,
SLuint32 deviceID,
SLint32 numOutputs,
SLboolean isNew
);
typedef void (SLAPIENTRY *slDefaultDeviceIDMapChangedCallback) (
SLAudioIODeviceCapabilitiesItf caller,
void *pContext,
SLboolean isOutput,
SLint32 numDevices
);
struct SLAudioIODeviceCapabilitiesItf_ {
SLresult (*GetAvailableAudioInputs)(
SLAudioIODeviceCapabilitiesItf self,
SLint32 *pNumInputs,
SLuint32 *pInputDeviceIDs
);
SLresult (*QueryAudioInputCapabilities)(
SLAudioIODeviceCapabilitiesItf self,
SLuint32 deviceId,
SLAudioInputDescriptor *pDescriptor
);
SLresult (*RegisterAvailableAudioInputsChangedCallback) (
SLAudioIODeviceCapabilitiesItf self,
slAvailableAudioInputsChangedCallback callback,
void *pContext
);
SLresult (*GetAvailableAudioOutputs)(
SLAudioIODeviceCapabilitiesItf self,
SLint32 *pNumOutputs,
SLuint32 *pOutputDeviceIDs
);
SLresult (*QueryAudioOutputCapabilities)(
SLAudioIODeviceCapabilitiesItf self,
SLuint32 deviceId,
SLAudioOutputDescriptor *pDescriptor
);
SLresult (*RegisterAvailableAudioOutputsChangedCallback) (
SLAudioIODeviceCapabilitiesItf self,
slAvailableAudioOutputsChangedCallback callback,
void *pContext
);
SLresult (*RegisterDefaultDeviceIDMapChangedCallback) (
SLAudioIODeviceCapabilitiesItf self,
slDefaultDeviceIDMapChangedCallback callback,
void *pContext
);
SLresult (*GetAssociatedAudioInputs) (
SLAudioIODeviceCapabilitiesItf self,
SLuint32 deviceId,
SLint32 *pNumAudioInputs,
SLuint32 *pAudioInputDeviceIDs
);
SLresult (*GetAssociatedAudioOutputs) (
SLAudioIODeviceCapabilitiesItf self,
SLuint32 deviceId,
SLint32 *pNumAudioOutputs,
SLuint32 *pAudioOutputDeviceIDs
);
SLresult (*GetDefaultAudioDevices) (
SLAudioIODeviceCapabilitiesItf self,
SLuint32 defaultDeviceID,
SLint32 *pNumAudioDevices,
SLuint32 *pAudioDeviceIDs
);
SLresult (*QuerySampleFormatsSupported)(
SLAudioIODeviceCapabilitiesItf self,
SLuint32 deviceId,
SLmilliHertz samplingRate,
SLint32 *pSampleFormats,
SLint32 *pNumOfSampleFormats
);
};
/*---------------------------------------------------------------------------*/
/* Capabilities of the LED array IODevice */
/*---------------------------------------------------------------------------*/
typedef struct SLLEDDescriptor_ {
SLuint8 ledCount;
SLuint8 primaryLED;
SLuint32 colorMask;
} SLLEDDescriptor;
/*---------------------------------------------------------------------------*/
/* LED Array interface */
/*---------------------------------------------------------------------------*/
typedef struct SLHSL_ {
SLmillidegree hue;
SLpermille saturation;
SLpermille lightness;
} SLHSL;
extern SL_API const SLInterfaceID SL_IID_LED;
struct SLLEDArrayItf_;
typedef const struct SLLEDArrayItf_ * const * SLLEDArrayItf;
struct SLLEDArrayItf_ {
SLresult (*ActivateLEDArray) (
SLLEDArrayItf self,
SLuint32 lightMask
);
SLresult (*IsLEDArrayActivated) (
SLLEDArrayItf self,
SLuint32 *lightMask
);
SLresult (*SetColor) (
SLLEDArrayItf self,
SLuint8 index,
const SLHSL *color
);
SLresult (*GetColor) (
SLLEDArrayItf self,
SLuint8 index,
SLHSL *color
);
};
/*---------------------------------------------------------------------------*/
/* Capabilities of the Vibra IODevice */
/*---------------------------------------------------------------------------*/
typedef struct SLVibraDescriptor_ {
SLboolean supportsFrequency;
SLboolean supportsIntensity;
SLmilliHertz minFrequency;
SLmilliHertz maxFrequency;
} SLVibraDescriptor;
/*---------------------------------------------------------------------------*/
/* Vibra interface */
/*---------------------------------------------------------------------------*/
extern SL_API const SLInterfaceID SL_IID_VIBRA;
struct SLVibraItf_;
typedef const struct SLVibraItf_ * const * SLVibraItf;
struct SLVibraItf_ {
SLresult (*Vibrate) (
SLVibraItf self,
SLboolean vibrate
);
SLresult (*IsVibrating) (
SLVibraItf self,
SLboolean *pVibrating
);
SLresult (*SetFrequency) (
SLVibraItf self,
SLmilliHertz frequency
);
SLresult (*GetFrequency) (
SLVibraItf self,
SLmilliHertz *pFrequency
);
SLresult (*SetIntensity) (
SLVibraItf self,
SLpermille intensity
);
SLresult (*GetIntensity) (
SLVibraItf self,
SLpermille *pIntensity
);
};
/*---------------------------------------------------------------------------*/
/* Meta data extraction related types and interface */
/*---------------------------------------------------------------------------*/
#define SL_CHARACTERENCODING_UNKNOWN ((SLuint32) 0x00000000)
#define SL_CHARACTERENCODING_BINARY ((SLuint32) 0x00000001)
#define SL_CHARACTERENCODING_ASCII ((SLuint32) 0x00000002)
#define SL_CHARACTERENCODING_BIG5 ((SLuint32) 0x00000003)
#define SL_CHARACTERENCODING_CODEPAGE1252 ((SLuint32) 0x00000004)
#define SL_CHARACTERENCODING_GB2312 ((SLuint32) 0x00000005)
#define SL_CHARACTERENCODING_HZGB2312 ((SLuint32) 0x00000006)
#define SL_CHARACTERENCODING_GB12345 ((SLuint32) 0x00000007)
#define SL_CHARACTERENCODING_GB18030 ((SLuint32) 0x00000008)
#define SL_CHARACTERENCODING_GBK ((SLuint32) 0x00000009)
#define SL_CHARACTERENCODING_IMAPUTF7 ((SLuint32) 0x0000000A)
#define SL_CHARACTERENCODING_ISO2022JP ((SLuint32) 0x0000000B)
#define SL_CHARACTERENCODING_ISO2022JP1 ((SLuint32) 0x0000000B)
#define SL_CHARACTERENCODING_ISO88591 ((SLuint32) 0x0000000C)
#define SL_CHARACTERENCODING_ISO885910 ((SLuint32) 0x0000000D)
#define SL_CHARACTERENCODING_ISO885913 ((SLuint32) 0x0000000E)
#define SL_CHARACTERENCODING_ISO885914 ((SLuint32) 0x0000000F)
#define SL_CHARACTERENCODING_ISO885915 ((SLuint32) 0x00000010)
#define SL_CHARACTERENCODING_ISO88592 ((SLuint32) 0x00000011)
#define SL_CHARACTERENCODING_ISO88593 ((SLuint32) 0x00000012)
#define SL_CHARACTERENCODING_ISO88594 ((SLuint32) 0x00000013)
#define SL_CHARACTERENCODING_ISO88595 ((SLuint32) 0x00000014)
#define SL_CHARACTERENCODING_ISO88596 ((SLuint32) 0x00000015)
#define SL_CHARACTERENCODING_ISO88597 ((SLuint32) 0x00000016)
#define SL_CHARACTERENCODING_ISO88598 ((SLuint32) 0x00000017)
#define SL_CHARACTERENCODING_ISO88599 ((SLuint32) 0x00000018)
#define SL_CHARACTERENCODING_ISOEUCJP ((SLuint32) 0x00000019)
#define SL_CHARACTERENCODING_SHIFTJIS ((SLuint32) 0x0000001A)
#define SL_CHARACTERENCODING_SMS7BIT ((SLuint32) 0x0000001B)
#define SL_CHARACTERENCODING_UTF7 ((SLuint32) 0x0000001C)
#define SL_CHARACTERENCODING_UTF8 ((SLuint32) 0x0000001D)
#define SL_CHARACTERENCODING_JAVACONFORMANTUTF8 ((SLuint32) 0x0000001E)
#define SL_CHARACTERENCODING_UTF16BE ((SLuint32) 0x0000001F)
#define SL_CHARACTERENCODING_UTF16LE ((SLuint32) 0x00000020)
#define SL_METADATA_FILTER_KEY ((SLuint8) 0x01)
#define SL_METADATA_FILTER_LANG ((SLuint8) 0x02)
#define SL_METADATA_FILTER_ENCODING ((SLuint8) 0x04)
typedef struct SLMetadataInfo_ {
SLuint32 size;
SLuint32 encoding;
SLchar langCountry[16];
SLuint8 data[1];
} SLMetadataInfo;
extern SL_API const SLInterfaceID SL_IID_METADATAEXTRACTION;
struct SLMetadataExtractionItf_;
typedef const struct SLMetadataExtractionItf_ * const * SLMetadataExtractionItf;
struct SLMetadataExtractionItf_ {
SLresult (*GetItemCount) (
SLMetadataExtractionItf self,
SLuint32 *pItemCount
);
SLresult (*GetKeySize) (
SLMetadataExtractionItf self,
SLuint32 index,
SLuint32 *pKeySize
);
SLresult (*GetKey) (
SLMetadataExtractionItf self,
SLuint32 index,
SLuint32 keySize,
SLMetadataInfo *pKey
);
SLresult (*GetValueSize) (
SLMetadataExtractionItf self,
SLuint32 index,
SLuint32 *pValueSize
);
SLresult (*GetValue) (
SLMetadataExtractionItf self,
SLuint32 index,
SLuint32 valueSize,
SLMetadataInfo *pValue
);
SLresult (*AddKeyFilter) (
SLMetadataExtractionItf self,
SLuint32 keySize,
const void *pKey,
SLuint32 keyEncoding,
const SLchar *pValueLangCountry,
SLuint32 valueEncoding,
SLuint8 filterMask
);
SLresult (*ClearKeyFilter) (
SLMetadataExtractionItf self
);
};
/*---------------------------------------------------------------------------*/
/* Meta data traversal related types and interface */
/*---------------------------------------------------------------------------*/
#define SL_METADATATRAVERSALMODE_ALL ((SLuint32) 0x00000001)
#define SL_METADATATRAVERSALMODE_NODE ((SLuint32) 0x00000002)
#define SL_NODETYPE_UNSPECIFIED ((SLuint32) 0x00000001)
#define SL_NODETYPE_AUDIO ((SLuint32) 0x00000002)
#define SL_NODETYPE_VIDEO ((SLuint32) 0x00000003)
#define SL_NODETYPE_IMAGE ((SLuint32) 0x00000004)
#define SL_NODE_PARENT 0xFFFFFFFF
extern SL_API const SLInterfaceID SL_IID_METADATATRAVERSAL;
struct SLMetadataTraversalItf_;
typedef const struct SLMetadataTraversalItf_ * const * SLMetadataTraversalItf;
struct SLMetadataTraversalItf_ {
SLresult (*SetMode) (
SLMetadataTraversalItf self,
SLuint32 mode
);
SLresult (*GetChildCount) (
SLMetadataTraversalItf self,
SLuint32 *pCount
);
SLresult (*GetChildMIMETypeSize) (
SLMetadataTraversalItf self,
SLuint32 index,
SLuint32 *pSize
);
SLresult (*GetChildInfo) (
SLMetadataTraversalItf self,
SLuint32 index,
SLint32 *pNodeID,
SLuint32 *pType,
SLuint32 size,
SLchar *pMimeType
);
SLresult (*SetActiveNode) (
SLMetadataTraversalItf self,
SLuint32 index
);
};
/*---------------------------------------------------------------------------*/
/* Dynamic Source types and interface */
/*---------------------------------------------------------------------------*/
extern SL_API const SLInterfaceID SL_IID_DYNAMICSOURCE;
struct SLDynamicSourceItf_;
typedef const struct SLDynamicSourceItf_ * const * SLDynamicSourceItf;
struct SLDynamicSourceItf_ {
SLresult (*SetSource) (
SLDynamicSourceItf self,
SLDataSource *pDataSource
);
};
/*---------------------------------------------------------------------------*/
/* Output Mix interface */
/*---------------------------------------------------------------------------*/
extern SL_API const SLInterfaceID SL_IID_OUTPUTMIX;
struct SLOutputMixItf_;
typedef const struct SLOutputMixItf_ * const * SLOutputMixItf;
typedef void (SLAPIENTRY *slMixDeviceChangeCallback) (
SLOutputMixItf caller,
void *pContext
);
struct SLOutputMixItf_ {
SLresult (*GetDestinationOutputDeviceIDs) (
SLOutputMixItf self,
SLint32 *pNumDevices,
SLuint32 *pDeviceIDs
);
SLresult (*RegisterDeviceChangeCallback) (
SLOutputMixItf self,
slMixDeviceChangeCallback callback,
void *pContext
);
SLresult (*ReRoute)(
SLOutputMixItf self,
SLint32 numOutputDevices,
SLuint32 *pOutputDeviceIDs
);
};
/*---------------------------------------------------------------------------*/
/* Playback interface */
/*---------------------------------------------------------------------------*/
/** Playback states */
#define SL_PLAYSTATE_STOPPED ((SLuint32) 0x00000001)
#define SL_PLAYSTATE_PAUSED ((SLuint32) 0x00000002)
#define SL_PLAYSTATE_PLAYING ((SLuint32) 0x00000003)
/** Play events **/
#define SL_PLAYEVENT_HEADATEND ((SLuint32) 0x00000001)
#define SL_PLAYEVENT_HEADATMARKER ((SLuint32) 0x00000002)
#define SL_PLAYEVENT_HEADATNEWPOS ((SLuint32) 0x00000004)
#define SL_PLAYEVENT_HEADMOVING ((SLuint32) 0x00000008)
#define SL_PLAYEVENT_HEADSTALLED ((SLuint32) 0x00000010)
#define SL_TIME_UNKNOWN ((SLuint32) 0xFFFFFFFF)
extern SL_API const SLInterfaceID SL_IID_PLAY;
/** Playback interface methods */
struct SLPlayItf_;
typedef const struct SLPlayItf_ * const * SLPlayItf;
typedef void (SLAPIENTRY *slPlayCallback) (
SLPlayItf caller,
void *pContext,
SLuint32 event
);
struct SLPlayItf_ {
SLresult (*SetPlayState) (
SLPlayItf self,
SLuint32 state
);
SLresult (*GetPlayState) (
SLPlayItf self,
SLuint32 *pState
);
SLresult (*GetDuration) (
SLPlayItf self,
SLmillisecond *pMsec
);
SLresult (*GetPosition) (
SLPlayItf self,
SLmillisecond *pMsec
);
SLresult (*RegisterCallback) (
SLPlayItf self,
slPlayCallback callback,
void *pContext
);
SLresult (*SetCallbackEventsMask) (
SLPlayItf self,
SLuint32 eventFlags
);
SLresult (*GetCallbackEventsMask) (
SLPlayItf self,
SLuint32 *pEventFlags
);
SLresult (*SetMarkerPosition) (
SLPlayItf self,
SLmillisecond mSec
);
SLresult (*ClearMarkerPosition) (
SLPlayItf self
);
SLresult (*GetMarkerPosition) (
SLPlayItf self,
SLmillisecond *pMsec
);
SLresult (*SetPositionUpdatePeriod) (
SLPlayItf self,
SLmillisecond mSec
);
SLresult (*GetPositionUpdatePeriod) (
SLPlayItf self,
SLmillisecond *pMsec
);
};
/*---------------------------------------------------------------------------*/
/* Prefetch status interface */
/*---------------------------------------------------------------------------*/
#define SL_PREFETCHEVENT_STATUSCHANGE ((SLuint32) 0x00000001)
#define SL_PREFETCHEVENT_FILLLEVELCHANGE ((SLuint32) 0x00000002)
#define SL_PREFETCHSTATUS_UNDERFLOW ((SLuint32) 0x00000001)
#define SL_PREFETCHSTATUS_SUFFICIENTDATA ((SLuint32) 0x00000002)
#define SL_PREFETCHSTATUS_OVERFLOW ((SLuint32) 0x00000003)
extern SL_API const SLInterfaceID SL_IID_PREFETCHSTATUS;
/** Prefetch status interface methods */
struct SLPrefetchStatusItf_;
typedef const struct SLPrefetchStatusItf_ * const * SLPrefetchStatusItf;
typedef void (SLAPIENTRY *slPrefetchCallback) (
SLPrefetchStatusItf caller,
void *pContext,
SLuint32 event
);
struct SLPrefetchStatusItf_ {
SLresult (*GetPrefetchStatus) (
SLPrefetchStatusItf self,
SLuint32 *pStatus
);
SLresult (*GetFillLevel) (
SLPrefetchStatusItf self,
SLpermille *pLevel
);
SLresult (*RegisterCallback) (
SLPrefetchStatusItf self,
slPrefetchCallback callback,
void *pContext
);
SLresult (*SetCallbackEventsMask) (
SLPrefetchStatusItf self,
SLuint32 eventFlags
);
SLresult (*GetCallbackEventsMask) (
SLPrefetchStatusItf self,
SLuint32 *pEventFlags
);
SLresult (*SetFillUpdatePeriod) (
SLPrefetchStatusItf self,
SLpermille period
);
SLresult (*GetFillUpdatePeriod) (
SLPrefetchStatusItf self,
SLpermille *pPeriod
);
};
/*---------------------------------------------------------------------------*/
/* Playback Rate interface */
/*---------------------------------------------------------------------------*/
#define SL_RATEPROP_RESERVED1 ((SLuint32) 0x00000001)
#define SL_RATEPROP_RESERVED2 ((SLuint32) 0x00000002)
#define SL_RATEPROP_SILENTAUDIO ((SLuint32) 0x00000100)
#define SL_RATEPROP_STAGGEREDAUDIO ((SLuint32) 0x00000200)
#define SL_RATEPROP_NOPITCHCORAUDIO ((SLuint32) 0x00000400)
#define SL_RATEPROP_PITCHCORAUDIO ((SLuint32) 0x00000800)
extern SL_API const SLInterfaceID SL_IID_PLAYBACKRATE;
struct SLPlaybackRateItf_;
typedef const struct SLPlaybackRateItf_ * const * SLPlaybackRateItf;
struct SLPlaybackRateItf_ {
SLresult (*SetRate)(
SLPlaybackRateItf self,
SLpermille rate
);
SLresult (*GetRate)(
SLPlaybackRateItf self,
SLpermille *pRate
);
SLresult (*SetPropertyConstraints)(
SLPlaybackRateItf self,
SLuint32 constraints
);
SLresult (*GetProperties)(
SLPlaybackRateItf self,
SLuint32 *pProperties
);
SLresult (*GetCapabilitiesOfRate)(
SLPlaybackRateItf self,
SLpermille rate,
SLuint32 *pCapabilities
);
SLresult (*GetRateRange) (
SLPlaybackRateItf self,
SLuint8 index,
SLpermille *pMinRate,
SLpermille *pMaxRate,
SLpermille *pStepSize,
SLuint32 *pCapabilities
);
};
/*---------------------------------------------------------------------------*/
/* Seek Interface */
/*---------------------------------------------------------------------------*/
#define SL_SEEKMODE_FAST ((SLuint32) 0x0001)
#define SL_SEEKMODE_ACCURATE ((SLuint32) 0x0002)
extern SL_API const SLInterfaceID SL_IID_SEEK;
struct SLSeekItf_;
typedef const struct SLSeekItf_ * const * SLSeekItf;
struct SLSeekItf_ {
SLresult (*SetPosition)(
SLSeekItf self,
SLmillisecond pos,
SLuint32 seekMode
);
SLresult (*SetLoop)(
SLSeekItf self,
SLboolean loopEnable,
SLmillisecond startPos,
SLmillisecond endPos
);
SLresult (*GetLoop)(
SLSeekItf self,
SLboolean *pLoopEnabled,
SLmillisecond *pStartPos,
SLmillisecond *pEndPos
);
};
/*---------------------------------------------------------------------------*/
/* Standard Recording Interface */
/*---------------------------------------------------------------------------*/
/** Recording states */
#define SL_RECORDSTATE_STOPPED ((SLuint32) 0x00000001)
#define SL_RECORDSTATE_PAUSED ((SLuint32) 0x00000002)
#define SL_RECORDSTATE_RECORDING ((SLuint32) 0x00000003)
/** Record event **/
#define SL_RECORDEVENT_HEADATLIMIT ((SLuint32) 0x00000001)
#define SL_RECORDEVENT_HEADATMARKER ((SLuint32) 0x00000002)
#define SL_RECORDEVENT_HEADATNEWPOS ((SLuint32) 0x00000004)
#define SL_RECORDEVENT_HEADMOVING ((SLuint32) 0x00000008)
#define SL_RECORDEVENT_HEADSTALLED ((SLuint32) 0x00000010)
/* Note: SL_RECORDEVENT_BUFFER_INSUFFICIENT is deprecated, use SL_RECORDEVENT_BUFFER_FULL instead. */
#define SL_RECORDEVENT_BUFFER_INSUFFICIENT ((SLuint32) 0x00000020)
#define SL_RECORDEVENT_BUFFER_FULL ((SLuint32) 0x00000020)
extern SL_API const SLInterfaceID SL_IID_RECORD;
struct SLRecordItf_;
typedef const struct SLRecordItf_ * const * SLRecordItf;
typedef void (SLAPIENTRY *slRecordCallback) (
SLRecordItf caller,
void *pContext,
SLuint32 event
);
/** Recording interface methods */
struct SLRecordItf_ {
SLresult (*SetRecordState) (
SLRecordItf self,
SLuint32 state
);
SLresult (*GetRecordState) (
SLRecordItf self,
SLuint32 *pState
);
SLresult (*SetDurationLimit) (
SLRecordItf self,
SLmillisecond msec
);
SLresult (*GetPosition) (
SLRecordItf self,
SLmillisecond *pMsec
);
SLresult (*RegisterCallback) (
SLRecordItf self,
slRecordCallback callback,
void *pContext
);
SLresult (*SetCallbackEventsMask) (
SLRecordItf self,
SLuint32 eventFlags
);
SLresult (*GetCallbackEventsMask) (
SLRecordItf self,
SLuint32 *pEventFlags
);
SLresult (*SetMarkerPosition) (
SLRecordItf self,
SLmillisecond mSec
);
SLresult (*ClearMarkerPosition) (
SLRecordItf self
);
SLresult (*GetMarkerPosition) (
SLRecordItf self,
SLmillisecond *pMsec
);
SLresult (*SetPositionUpdatePeriod) (
SLRecordItf self,
SLmillisecond mSec
);
SLresult (*GetPositionUpdatePeriod) (
SLRecordItf self,
SLmillisecond *pMsec
);
};
/*---------------------------------------------------------------------------*/
/* Equalizer interface */
/*---------------------------------------------------------------------------*/
#define SL_EQUALIZER_UNDEFINED ((SLuint16) 0xFFFF)
extern SL_API const SLInterfaceID SL_IID_EQUALIZER;
struct SLEqualizerItf_;
typedef const struct SLEqualizerItf_ * const * SLEqualizerItf;
struct SLEqualizerItf_ {
SLresult (*SetEnabled)(
SLEqualizerItf self,
SLboolean enabled
);
SLresult (*IsEnabled)(
SLEqualizerItf self,
SLboolean *pEnabled
);
SLresult (*GetNumberOfBands)(
SLEqualizerItf self,
SLuint16 *pAmount
);
SLresult (*GetBandLevelRange)(
SLEqualizerItf self,
SLmillibel *pMin,
SLmillibel *pMax
);
SLresult (*SetBandLevel)(
SLEqualizerItf self,
SLuint16 band,
SLmillibel level
);
SLresult (*GetBandLevel)(
SLEqualizerItf self,
SLuint16 band,
SLmillibel *pLevel
);
SLresult (*GetCenterFreq)(
SLEqualizerItf self,
SLuint16 band,
SLmilliHertz *pCenter
);
SLresult (*GetBandFreqRange)(
SLEqualizerItf self,
SLuint16 band,
SLmilliHertz *pMin,
SLmilliHertz *pMax
);
SLresult (*GetBand)(
SLEqualizerItf self,
SLmilliHertz frequency,
SLuint16 *pBand
);
SLresult (*GetCurrentPreset)(
SLEqualizerItf self,
SLuint16 *pPreset
);
SLresult (*UsePreset)(
SLEqualizerItf self,
SLuint16 index
);
SLresult (*GetNumberOfPresets)(
SLEqualizerItf self,
SLuint16 *pNumPresets
);
SLresult (*GetPresetName)(
SLEqualizerItf self,
SLuint16 index,
const SLchar ** ppName
);
};
/*---------------------------------------------------------------------------*/
/* Volume Interface */
/* --------------------------------------------------------------------------*/
extern SL_API const SLInterfaceID SL_IID_VOLUME;
struct SLVolumeItf_;
typedef const struct SLVolumeItf_ * const * SLVolumeItf;
struct SLVolumeItf_ {
SLresult (*SetVolumeLevel) (
SLVolumeItf self,
SLmillibel level
);
SLresult (*GetVolumeLevel) (
SLVolumeItf self,
SLmillibel *pLevel
);
SLresult (*GetMaxVolumeLevel) (
SLVolumeItf self,
SLmillibel *pMaxLevel
);
SLresult (*SetMute) (
SLVolumeItf self,
SLboolean mute
);
SLresult (*GetMute) (
SLVolumeItf self,
SLboolean *pMute
);
SLresult (*EnableStereoPosition) (
SLVolumeItf self,
SLboolean enable
);
SLresult (*IsEnabledStereoPosition) (
SLVolumeItf self,
SLboolean *pEnable
);
SLresult (*SetStereoPosition) (
SLVolumeItf self,
SLpermille stereoPosition
);
SLresult (*GetStereoPosition) (
SLVolumeItf self,
SLpermille *pStereoPosition
);
};
/*---------------------------------------------------------------------------*/
/* Device Volume Interface */
/* --------------------------------------------------------------------------*/
extern SL_API const SLInterfaceID SL_IID_DEVICEVOLUME;
struct SLDeviceVolumeItf_;
typedef const struct SLDeviceVolumeItf_ * const * SLDeviceVolumeItf;
struct SLDeviceVolumeItf_ {
SLresult (*GetVolumeScale) (
SLDeviceVolumeItf self,
SLuint32 deviceID,
SLint32 *pMinValue,
SLint32 *pMaxValue,
SLboolean *pIsMillibelScale
);
SLresult (*SetVolume) (
SLDeviceVolumeItf self,
SLuint32 deviceID,
SLint32 volume
);
SLresult (*GetVolume) (
SLDeviceVolumeItf self,
SLuint32 deviceID,
SLint32 *pVolume
);
};
/*---------------------------------------------------------------------------*/
/* Buffer Queue Interface */
/*---------------------------------------------------------------------------*/
extern SL_API const SLInterfaceID SL_IID_BUFFERQUEUE;
struct SLBufferQueueItf_;
typedef const struct SLBufferQueueItf_ * const * SLBufferQueueItf;
typedef void (SLAPIENTRY *slBufferQueueCallback)(
SLBufferQueueItf caller,
void *pContext
);
/** Buffer queue state **/
typedef struct SLBufferQueueState_ {
SLuint32 count;
SLuint32 playIndex;
} SLBufferQueueState;
struct SLBufferQueueItf_ {
SLresult (*Enqueue) (
SLBufferQueueItf self,
const void *pBuffer,
SLuint32 size
);
SLresult (*Clear) (
SLBufferQueueItf self
);
SLresult (*GetState) (
SLBufferQueueItf self,
SLBufferQueueState *pState
);
SLresult (*RegisterCallback) (
SLBufferQueueItf self,
slBufferQueueCallback callback,
void* pContext
);
};
/*---------------------------------------------------------------------------*/
/* PresetReverb */
/*---------------------------------------------------------------------------*/
#define SL_REVERBPRESET_NONE ((SLuint16) 0x0000)
#define SL_REVERBPRESET_SMALLROOM ((SLuint16) 0x0001)
#define SL_REVERBPRESET_MEDIUMROOM ((SLuint16) 0x0002)
#define SL_REVERBPRESET_LARGEROOM ((SLuint16) 0x0003)
#define SL_REVERBPRESET_MEDIUMHALL ((SLuint16) 0x0004)
#define SL_REVERBPRESET_LARGEHALL ((SLuint16) 0x0005)
#define SL_REVERBPRESET_PLATE ((SLuint16) 0x0006)
extern SL_API const SLInterfaceID SL_IID_PRESETREVERB;
struct SLPresetReverbItf_;
typedef const struct SLPresetReverbItf_ * const * SLPresetReverbItf;
struct SLPresetReverbItf_ {
SLresult (*SetPreset) (
SLPresetReverbItf self,
SLuint16 preset
);
SLresult (*GetPreset) (
SLPresetReverbItf self,
SLuint16 *pPreset
);
};
/*---------------------------------------------------------------------------*/
/* EnvironmentalReverb */
/*---------------------------------------------------------------------------*/
#define SL_I3DL2_ENVIRONMENT_PRESET_DEFAULT \
{ SL_MILLIBEL_MIN, 0, 1000, 500, SL_MILLIBEL_MIN, 20, SL_MILLIBEL_MIN, 40, 1000,1000 }
#define SL_I3DL2_ENVIRONMENT_PRESET_GENERIC \
{ -1000, -100, 1490, 830, -2602, 7, 200, 11, 1000,1000 }
#define SL_I3DL2_ENVIRONMENT_PRESET_PADDEDCELL \
{ -1000,-6000, 170, 100, -1204, 1, 207, 2, 1000,1000 }
#define SL_I3DL2_ENVIRONMENT_PRESET_ROOM \
{ -1000, -454, 400, 830, -1646, 2, 53, 3, 1000,1000 }
#define SL_I3DL2_ENVIRONMENT_PRESET_BATHROOM \
{ -1000,-1200, 1490, 540, -370, 7, 1030, 11, 1000, 600 }
#define SL_I3DL2_ENVIRONMENT_PRESET_LIVINGROOM \
{ -1000,-6000, 500, 100, -1376, 3, -1104, 4, 1000,1000 }
#define SL_I3DL2_ENVIRONMENT_PRESET_STONEROOM \
{ -1000, -300, 2310, 640, -711, 12, 83, 17, 1000,1000 }
#define SL_I3DL2_ENVIRONMENT_PRESET_AUDITORIUM \
{ -1000, -476, 4320, 590, -789, 20, -289, 30, 1000,1000 }
#define SL_I3DL2_ENVIRONMENT_PRESET_CONCERTHALL \
{ -1000, -500, 3920, 700, -1230, 20, -2, 29, 1000,1000 }
#define SL_I3DL2_ENVIRONMENT_PRESET_CAVE \
{ -1000, 0, 2910, 1300, -602, 15, -302, 22, 1000,1000 }
#define SL_I3DL2_ENVIRONMENT_PRESET_ARENA \
{ -1000, -698, 7240, 330, -1166, 20, 16, 30, 1000,1000 }
#define SL_I3DL2_ENVIRONMENT_PRESET_HANGAR \
{ -1000,-1000, 10050, 230, -602, 20, 198, 30, 1000,1000 }
#define SL_I3DL2_ENVIRONMENT_PRESET_CARPETEDHALLWAY \
{ -1000,-4000, 300, 100, -1831, 2, -1630, 30, 1000,1000 }
#define SL_I3DL2_ENVIRONMENT_PRESET_HALLWAY \
{ -1000, -300, 1490, 590, -1219, 7, 441, 11, 1000,1000 }
#define SL_I3DL2_ENVIRONMENT_PRESET_STONECORRIDOR \
{ -1000, -237, 2700, 790, -1214, 13, 395, 20, 1000,1000 }
#define SL_I3DL2_ENVIRONMENT_PRESET_ALLEY \
{ -1000, -270, 1490, 860, -1204, 7, -4, 11, 1000,1000 }
#define SL_I3DL2_ENVIRONMENT_PRESET_FOREST \
{ -1000,-3300, 1490, 540, -2560, 162, -613, 88, 790,1000 }
#define SL_I3DL2_ENVIRONMENT_PRESET_CITY \
{ -1000, -800, 1490, 670, -2273, 7, -2217, 11, 500,1000 }
#define SL_I3DL2_ENVIRONMENT_PRESET_MOUNTAINS \
{ -1000,-2500, 1490, 210, -2780, 300, -2014, 100, 270,1000 }
#define SL_I3DL2_ENVIRONMENT_PRESET_QUARRY \
{ -1000,-1000, 1490, 830, SL_MILLIBEL_MIN, 61, 500, 25, 1000,1000 }
#define SL_I3DL2_ENVIRONMENT_PRESET_PLAIN \
{ -1000,-2000, 1490, 500, -2466, 179, -2514, 100, 210,1000 }
#define SL_I3DL2_ENVIRONMENT_PRESET_PARKINGLOT \
{ -1000, 0, 1650, 1500, -1363, 8, -1153, 12, 1000,1000 }
#define SL_I3DL2_ENVIRONMENT_PRESET_SEWERPIPE \
{ -1000,-1000, 2810, 140, 429, 14, 648, 21, 800, 600 }
#define SL_I3DL2_ENVIRONMENT_PRESET_UNDERWATER \
{ -1000,-4000, 1490, 100, -449, 7, 1700, 11, 1000,1000 }
#define SL_I3DL2_ENVIRONMENT_PRESET_SMALLROOM \
{ -1000,-600, 1100, 830, -400, 5, 500, 10, 1000, 1000 }
#define SL_I3DL2_ENVIRONMENT_PRESET_MEDIUMROOM \
{ -1000,-600, 1300, 830, -1000, 20, -200, 20, 1000, 1000 }
#define SL_I3DL2_ENVIRONMENT_PRESET_LARGEROOM \
{ -1000,-600, 1500, 830, -1600, 5, -1000, 40, 1000, 1000 }
#define SL_I3DL2_ENVIRONMENT_PRESET_MEDIUMHALL \
{ -1000,-600, 1800, 700, -1300, 15, -800, 30, 1000, 1000 }
#define SL_I3DL2_ENVIRONMENT_PRESET_LARGEHALL \
{ -1000,-600, 1800, 700, -2000, 30, -1400, 60, 1000, 1000 }
#define SL_I3DL2_ENVIRONMENT_PRESET_PLATE \
{ -1000,-200, 1300, 900, 0, 2, 0, 10, 1000, 750 }
typedef struct SLEnvironmentalReverbSettings_ {
SLmillibel roomLevel;
SLmillibel roomHFLevel;
SLmillisecond decayTime;
SLpermille decayHFRatio;
SLmillibel reflectionsLevel;
SLmillisecond reflectionsDelay;
SLmillibel reverbLevel;
SLmillisecond reverbDelay;
SLpermille diffusion;
SLpermille density;
} SLEnvironmentalReverbSettings;
extern SL_API const SLInterfaceID SL_IID_ENVIRONMENTALREVERB;
struct SLEnvironmentalReverbItf_;
typedef const struct SLEnvironmentalReverbItf_ * const * SLEnvironmentalReverbItf;
struct SLEnvironmentalReverbItf_ {
SLresult (*SetRoomLevel) (
SLEnvironmentalReverbItf self,
SLmillibel room
);
SLresult (*GetRoomLevel) (
SLEnvironmentalReverbItf self,
SLmillibel *pRoom
);
SLresult (*SetRoomHFLevel) (
SLEnvironmentalReverbItf self,
SLmillibel roomHF
);
SLresult (*GetRoomHFLevel) (
SLEnvironmentalReverbItf self,
SLmillibel *pRoomHF
);
SLresult (*SetDecayTime) (
SLEnvironmentalReverbItf self,
SLmillisecond decayTime
);
SLresult (*GetDecayTime) (
SLEnvironmentalReverbItf self,
SLmillisecond *pDecayTime
);
SLresult (*SetDecayHFRatio) (
SLEnvironmentalReverbItf self,
SLpermille decayHFRatio
);
SLresult (*GetDecayHFRatio) (
SLEnvironmentalReverbItf self,
SLpermille *pDecayHFRatio
);
SLresult (*SetReflectionsLevel) (
SLEnvironmentalReverbItf self,
SLmillibel reflectionsLevel
);
SLresult (*GetReflectionsLevel) (
SLEnvironmentalReverbItf self,
SLmillibel *pReflectionsLevel
);
SLresult (*SetReflectionsDelay) (
SLEnvironmentalReverbItf self,
SLmillisecond reflectionsDelay
);
SLresult (*GetReflectionsDelay) (
SLEnvironmentalReverbItf self,
SLmillisecond *pReflectionsDelay
);
SLresult (*SetReverbLevel) (
SLEnvironmentalReverbItf self,
SLmillibel reverbLevel
);
SLresult (*GetReverbLevel) (
SLEnvironmentalReverbItf self,
SLmillibel *pReverbLevel
);
SLresult (*SetReverbDelay) (
SLEnvironmentalReverbItf self,
SLmillisecond reverbDelay
);
SLresult (*GetReverbDelay) (
SLEnvironmentalReverbItf self,
SLmillisecond *pReverbDelay
);
SLresult (*SetDiffusion) (
SLEnvironmentalReverbItf self,
SLpermille diffusion
);
SLresult (*GetDiffusion) (
SLEnvironmentalReverbItf self,
SLpermille *pDiffusion
);
SLresult (*SetDensity) (
SLEnvironmentalReverbItf self,
SLpermille density
);
SLresult (*GetDensity) (
SLEnvironmentalReverbItf self,
SLpermille *pDensity
);
SLresult (*SetEnvironmentalReverbProperties) (
SLEnvironmentalReverbItf self,
const SLEnvironmentalReverbSettings *pProperties
);
SLresult (*GetEnvironmentalReverbProperties) (
SLEnvironmentalReverbItf self,
SLEnvironmentalReverbSettings *pProperties
);
};
/*---------------------------------------------------------------------------*/
/* Effects Send Interface */
/*---------------------------------------------------------------------------*/
extern SL_API const SLInterfaceID SL_IID_EFFECTSEND;
struct SLEffectSendItf_;
typedef const struct SLEffectSendItf_ * const * SLEffectSendItf;
struct SLEffectSendItf_ {
SLresult (*EnableEffectSend) (
SLEffectSendItf self,
const void *pAuxEffect,
SLboolean enable,
SLmillibel initialLevel
);
SLresult (*IsEnabled) (
SLEffectSendItf self,
const void * pAuxEffect,
SLboolean *pEnable
);
SLresult (*SetDirectLevel) (
SLEffectSendItf self,
SLmillibel directLevel
);
SLresult (*GetDirectLevel) (
SLEffectSendItf self,
SLmillibel *pDirectLevel
);
SLresult (*SetSendLevel) (
SLEffectSendItf self,
const void *pAuxEffect,
SLmillibel sendLevel
);
SLresult (*GetSendLevel)(
SLEffectSendItf self,
const void *pAuxEffect,
SLmillibel *pSendLevel
);
};
/*---------------------------------------------------------------------------*/
/* 3D Grouping Interface */
/*---------------------------------------------------------------------------*/
extern SL_API const SLInterfaceID SL_IID_3DGROUPING;
struct SL3DGroupingItf_ ;
typedef const struct SL3DGroupingItf_ * const * SL3DGroupingItf;
struct SL3DGroupingItf_ {
SLresult (*Set3DGroup) (
SL3DGroupingItf self,
SLObjectItf group
);
SLresult (*Get3DGroup) (
SL3DGroupingItf self,
SLObjectItf *pGroup
);
};
/*---------------------------------------------------------------------------*/
/* 3D Commit Interface */
/*---------------------------------------------------------------------------*/
extern SL_API const SLInterfaceID SL_IID_3DCOMMIT;
struct SL3DCommitItf_;
typedef const struct SL3DCommitItf_* const * SL3DCommitItf;
struct SL3DCommitItf_ {
SLresult (*Commit) (
SL3DCommitItf self
);
SLresult (*SetDeferred) (
SL3DCommitItf self,
SLboolean deferred
);
};
/*---------------------------------------------------------------------------*/
/* 3D Location Interface */
/*---------------------------------------------------------------------------*/
typedef struct SLVec3D_ {
SLint32 x;
SLint32 y;
SLint32 z;
} SLVec3D;
extern SL_API const SLInterfaceID SL_IID_3DLOCATION;
struct SL3DLocationItf_;
typedef const struct SL3DLocationItf_ * const * SL3DLocationItf;
struct SL3DLocationItf_ {
SLresult (*SetLocationCartesian) (
SL3DLocationItf self,
const SLVec3D *pLocation
);
SLresult (*SetLocationSpherical) (
SL3DLocationItf self,
SLmillidegree azimuth,
SLmillidegree elevation,
SLmillimeter distance
);
SLresult (*Move) (
SL3DLocationItf self,
const SLVec3D *pMovement
);
SLresult (*GetLocationCartesian) (
SL3DLocationItf self,
SLVec3D *pLocation
);
SLresult (*SetOrientationVectors) (
SL3DLocationItf self,
const SLVec3D *pFront,
const SLVec3D *pAbove
);
SLresult (*SetOrientationAngles) (
SL3DLocationItf self,
SLmillidegree heading,
SLmillidegree pitch,
SLmillidegree roll
);
SLresult (*Rotate) (
SL3DLocationItf self,
SLmillidegree theta,
const SLVec3D *pAxis
);
SLresult (*GetOrientationVectors) (
SL3DLocationItf self,
SLVec3D *pFront,
SLVec3D *pUp
);
};
/*---------------------------------------------------------------------------*/
/* 3D Doppler Interface */
/*---------------------------------------------------------------------------*/
extern SL_API const SLInterfaceID SL_IID_3DDOPPLER;
struct SL3DDopplerItf_;
typedef const struct SL3DDopplerItf_ * const * SL3DDopplerItf;
struct SL3DDopplerItf_ {
SLresult (*SetVelocityCartesian) (
SL3DDopplerItf self,
const SLVec3D *pVelocity
);
SLresult (*SetVelocitySpherical) (
SL3DDopplerItf self,
SLmillidegree azimuth,
SLmillidegree elevation,
SLmillimeter speed
);
SLresult (*GetVelocityCartesian) (
SL3DDopplerItf self,
SLVec3D *pVelocity
);
SLresult (*SetDopplerFactor) (
SL3DDopplerItf self,
SLpermille dopplerFactor
);
SLresult (*GetDopplerFactor) (
SL3DDopplerItf self,
SLpermille *pDopplerFactor
);
};
/*---------------------------------------------------------------------------*/
/* 3D Source Interface and associated defines */
/* --------------------------------------------------------------------------*/
#define SL_ROLLOFFMODEL_EXPONENTIAL ((SLuint32) 0x00000000)
#define SL_ROLLOFFMODEL_LINEAR ((SLuint32) 0x00000001)
extern SL_API const SLInterfaceID SL_IID_3DSOURCE;
struct SL3DSourceItf_;
typedef const struct SL3DSourceItf_ * const * SL3DSourceItf;
struct SL3DSourceItf_ {
SLresult (*SetHeadRelative) (
SL3DSourceItf self,
SLboolean headRelative
);
SLresult (*GetHeadRelative) (
SL3DSourceItf self,
SLboolean *pHeadRelative
);
SLresult (*SetRolloffDistances) (
SL3DSourceItf self,
SLmillimeter minDistance,
SLmillimeter maxDistance
);
SLresult (*GetRolloffDistances) (
SL3DSourceItf self,
SLmillimeter *pMinDistance,
SLmillimeter *pMaxDistance
);
SLresult (*SetRolloffMaxDistanceMute) (
SL3DSourceItf self,
SLboolean mute
);
SLresult (*GetRolloffMaxDistanceMute) (
SL3DSourceItf self,
SLboolean *pMute
);
SLresult (*SetRolloffFactor) (
SL3DSourceItf self,
SLpermille rolloffFactor
);
SLresult (*GetRolloffFactor) (
SL3DSourceItf self,
SLpermille *pRolloffFactor
);
SLresult (*SetRoomRolloffFactor) (
SL3DSourceItf self,
SLpermille roomRolloffFactor
);
SLresult (*GetRoomRolloffFactor) (
SL3DSourceItf self,
SLpermille *pRoomRolloffFactor
);
SLresult (*SetRolloffModel) (
SL3DSourceItf self,
SLuint8 model
);
SLresult (*GetRolloffModel) (
SL3DSourceItf self,
SLuint8 *pModel
);
SLresult (*SetCone) (
SL3DSourceItf self,
SLmillidegree innerAngle,
SLmillidegree outerAngle,
SLmillibel outerLevel
);
SLresult (*GetCone) (
SL3DSourceItf self,
SLmillidegree *pInnerAngle,
SLmillidegree *pOuterAngle,
SLmillibel *pOuterLevel
);
};
/*---------------------------------------------------------------------------*/
/* 3D Macroscopic Interface */
/* --------------------------------------------------------------------------*/
extern SL_API const SLInterfaceID SL_IID_3DMACROSCOPIC;
struct SL3DMacroscopicItf_;
typedef const struct SL3DMacroscopicItf_ * const * SL3DMacroscopicItf;
struct SL3DMacroscopicItf_ {
SLresult (*SetSize) (
SL3DMacroscopicItf self,
SLmillimeter width,
SLmillimeter height,
SLmillimeter depth
);
SLresult (*GetSize) (
SL3DMacroscopicItf self,
SLmillimeter *pWidth,
SLmillimeter *pHeight,
SLmillimeter *pDepth
);
SLresult (*SetOrientationAngles) (
SL3DMacroscopicItf self,
SLmillidegree heading,
SLmillidegree pitch,
SLmillidegree roll
);
SLresult (*SetOrientationVectors) (
SL3DMacroscopicItf self,
const SLVec3D *pFront,
const SLVec3D *pAbove
);
SLresult (*Rotate) (
SL3DMacroscopicItf self,
SLmillidegree theta,
const SLVec3D *pAxis
);
SLresult (*GetOrientationVectors) (
SL3DMacroscopicItf self,
SLVec3D *pFront,
SLVec3D *pUp
);
};
/*---------------------------------------------------------------------------*/
/* Mute Solo Interface */
/* --------------------------------------------------------------------------*/
extern SL_API const SLInterfaceID SL_IID_MUTESOLO;
struct SLMuteSoloItf_;
typedef const struct SLMuteSoloItf_ * const * SLMuteSoloItf;
struct SLMuteSoloItf_ {
SLresult (*SetChannelMute) (
SLMuteSoloItf self,
SLuint8 chan,
SLboolean mute
);
SLresult (*GetChannelMute) (
SLMuteSoloItf self,
SLuint8 chan,
SLboolean *pMute
);
SLresult (*SetChannelSolo) (
SLMuteSoloItf self,
SLuint8 chan,
SLboolean solo
);
SLresult (*GetChannelSolo) (
SLMuteSoloItf self,
SLuint8 chan,
SLboolean *pSolo
);
SLresult (*GetNumChannels) (
SLMuteSoloItf self,
SLuint8 *pNumChannels
);
};
/*---------------------------------------------------------------------------*/
/* Dynamic Interface Management Interface and associated types and macros */
/* --------------------------------------------------------------------------*/
#define SL_DYNAMIC_ITF_EVENT_RUNTIME_ERROR ((SLuint32) 0x00000001)
#define SL_DYNAMIC_ITF_EVENT_ASYNC_TERMINATION ((SLuint32) 0x00000002)
#define SL_DYNAMIC_ITF_EVENT_RESOURCES_LOST ((SLuint32) 0x00000003)
#define SL_DYNAMIC_ITF_EVENT_RESOURCES_LOST_PERMANENTLY ((SLuint32) 0x00000004)
#define SL_DYNAMIC_ITF_EVENT_RESOURCES_AVAILABLE ((SLuint32) 0x00000005)
extern SL_API const SLInterfaceID SL_IID_DYNAMICINTERFACEMANAGEMENT;
struct SLDynamicInterfaceManagementItf_;
typedef const struct SLDynamicInterfaceManagementItf_ * const * SLDynamicInterfaceManagementItf;
typedef void (SLAPIENTRY *slDynamicInterfaceManagementCallback) (
SLDynamicInterfaceManagementItf caller,
void * pContext,
SLuint32 event,
SLresult result,
const SLInterfaceID iid
);
struct SLDynamicInterfaceManagementItf_ {
SLresult (*AddInterface) (
SLDynamicInterfaceManagementItf self,
const SLInterfaceID iid,
SLboolean async
);
SLresult (*RemoveInterface) (
SLDynamicInterfaceManagementItf self,
const SLInterfaceID iid
);
SLresult (*ResumeInterface) (
SLDynamicInterfaceManagementItf self,
const SLInterfaceID iid,
SLboolean async
);
SLresult (*RegisterCallback) (
SLDynamicInterfaceManagementItf self,
slDynamicInterfaceManagementCallback callback,
void * pContext
);
};
/*---------------------------------------------------------------------------*/
/* Midi Message Interface and associated types */
/* --------------------------------------------------------------------------*/
#define SL_MIDIMESSAGETYPE_NOTE_ON_OFF ((SLuint32) 0x00000001)
#define SL_MIDIMESSAGETYPE_POLY_PRESSURE ((SLuint32) 0x00000002)
#define SL_MIDIMESSAGETYPE_CONTROL_CHANGE ((SLuint32) 0x00000003)
#define SL_MIDIMESSAGETYPE_PROGRAM_CHANGE ((SLuint32) 0x00000004)
#define SL_MIDIMESSAGETYPE_CHANNEL_PRESSURE ((SLuint32) 0x00000005)
#define SL_MIDIMESSAGETYPE_PITCH_BEND ((SLuint32) 0x00000006)
#define SL_MIDIMESSAGETYPE_SYSTEM_MESSAGE ((SLuint32) 0x00000007)
extern SL_API const SLInterfaceID SL_IID_MIDIMESSAGE;
struct SLMIDIMessageItf_;
typedef const struct SLMIDIMessageItf_ * const * SLMIDIMessageItf;
typedef void (SLAPIENTRY *slMetaEventCallback) (
SLMIDIMessageItf caller,
void *pContext,
SLuint8 type,
SLuint32 length,
const SLuint8 *pData,
SLuint32 tick,
SLuint16 track
);
typedef void (SLAPIENTRY *slMIDIMessageCallback) (
SLMIDIMessageItf caller,
void *pContext,
SLuint8 statusByte,
SLuint32 length,
const SLuint8 *pData,
SLuint32 tick,
SLuint16 track
);
struct SLMIDIMessageItf_ {
SLresult (*SendMessage) (
SLMIDIMessageItf self,
const SLuint8 *data,
SLuint32 length
);
SLresult (*RegisterMetaEventCallback) (
SLMIDIMessageItf self,
slMetaEventCallback callback,
void *pContext
);
SLresult (*RegisterMIDIMessageCallback) (
SLMIDIMessageItf self,
slMIDIMessageCallback callback,
void *pContext
);
SLresult (*AddMIDIMessageCallbackFilter) (
SLMIDIMessageItf self,
SLuint32 messageType
);
SLresult (*ClearMIDIMessageCallbackFilter) (
SLMIDIMessageItf self
);
};
/*---------------------------------------------------------------------------*/
/* Midi Mute Solo interface */
/* --------------------------------------------------------------------------*/
extern SL_API const SLInterfaceID SL_IID_MIDIMUTESOLO;
struct SLMIDIMuteSoloItf_;
typedef const struct SLMIDIMuteSoloItf_ * const * SLMIDIMuteSoloItf;
struct SLMIDIMuteSoloItf_ {
SLresult (*SetChannelMute) (
SLMIDIMuteSoloItf self,
SLuint8 channel,
SLboolean mute
);
SLresult (*GetChannelMute) (
SLMIDIMuteSoloItf self,
SLuint8 channel,
SLboolean *pMute
);
SLresult (*SetChannelSolo) (
SLMIDIMuteSoloItf self,
SLuint8 channel,
SLboolean solo
);
SLresult (*GetChannelSolo) (
SLMIDIMuteSoloItf self,
SLuint8 channel,
SLboolean *pSolo
);
SLresult (*GetTrackCount) (
SLMIDIMuteSoloItf self,
SLuint16 *pCount
);
SLresult (*SetTrackMute) (
SLMIDIMuteSoloItf self,
SLuint16 track,
SLboolean mute
);
SLresult (*GetTrackMute) (
SLMIDIMuteSoloItf self,
SLuint16 track,
SLboolean *pMute
);
SLresult (*SetTrackSolo) (
SLMIDIMuteSoloItf self,
SLuint16 track,
SLboolean solo
);
SLresult (*GetTrackSolo) (
SLMIDIMuteSoloItf self,
SLuint16 track,
SLboolean *pSolo
);
};
/*---------------------------------------------------------------------------*/
/* Midi Tempo interface */
/* --------------------------------------------------------------------------*/
extern SL_API const SLInterfaceID SL_IID_MIDITEMPO;
struct SLMIDITempoItf_;
typedef const struct SLMIDITempoItf_ * const * SLMIDITempoItf;
struct SLMIDITempoItf_ {
SLresult (*SetTicksPerQuarterNote) (
SLMIDITempoItf self,
SLuint32 tpqn
);
SLresult (*GetTicksPerQuarterNote) (
SLMIDITempoItf self,
SLuint32 *pTpqn
);
SLresult (*SetMicrosecondsPerQuarterNote) (
SLMIDITempoItf self,
SLmicrosecond uspqn
);
SLresult (*GetMicrosecondsPerQuarterNote) (
SLMIDITempoItf self,
SLmicrosecond *uspqn
);
};
/*---------------------------------------------------------------------------*/
/* Midi Time interface */
/* --------------------------------------------------------------------------*/
extern SL_API const SLInterfaceID SL_IID_MIDITIME;
struct SLMIDITimeItf_;
typedef const struct SLMIDITimeItf_ * const * SLMIDITimeItf;
struct SLMIDITimeItf_ {
SLresult (*GetDuration) (
SLMIDITimeItf self,
SLuint32 *pDuration
);
SLresult (*SetPosition) (
SLMIDITimeItf self,
SLuint32 position
);
SLresult (*GetPosition) (
SLMIDITimeItf self,
SLuint32 *pPosition
);
SLresult (*SetLoopPoints) (
SLMIDITimeItf self,
SLuint32 startTick,
SLuint32 numTicks
);
SLresult (*GetLoopPoints) (
SLMIDITimeItf self,
SLuint32 *pStartTick,
SLuint32 *pNumTicks
);
};
/*---------------------------------------------------------------------------*/
/* Audio Decoder Capabilities Interface */
/* --------------------------------------------------------------------------*/
/*Audio Codec related defines*/
#define SL_RATECONTROLMODE_CONSTANTBITRATE ((SLuint32) 0x00000001)
#define SL_RATECONTROLMODE_VARIABLEBITRATE ((SLuint32) 0x00000002)
#define SL_AUDIOCODEC_PCM ((SLuint32) 0x00000001)
#define SL_AUDIOCODEC_MP3 ((SLuint32) 0x00000002)
#define SL_AUDIOCODEC_AMR ((SLuint32) 0x00000003)
#define SL_AUDIOCODEC_AMRWB ((SLuint32) 0x00000004)
#define SL_AUDIOCODEC_AMRWBPLUS ((SLuint32) 0x00000005)
#define SL_AUDIOCODEC_AAC ((SLuint32) 0x00000006)
#define SL_AUDIOCODEC_WMA ((SLuint32) 0x00000007)
#define SL_AUDIOCODEC_REAL ((SLuint32) 0x00000008)
#define SL_AUDIOPROFILE_PCM ((SLuint32) 0x00000001)
#define SL_AUDIOPROFILE_MPEG1_L3 ((SLuint32) 0x00000001)
#define SL_AUDIOPROFILE_MPEG2_L3 ((SLuint32) 0x00000002)
#define SL_AUDIOPROFILE_MPEG25_L3 ((SLuint32) 0x00000003)
#define SL_AUDIOCHANMODE_MP3_MONO ((SLuint32) 0x00000001)
#define SL_AUDIOCHANMODE_MP3_STEREO ((SLuint32) 0x00000002)
#define SL_AUDIOCHANMODE_MP3_JOINTSTEREO ((SLuint32) 0x00000003)
#define SL_AUDIOCHANMODE_MP3_DUAL ((SLuint32) 0x00000004)
#define SL_AUDIOPROFILE_AMR ((SLuint32) 0x00000001)
#define SL_AUDIOSTREAMFORMAT_CONFORMANCE ((SLuint32) 0x00000001)
#define SL_AUDIOSTREAMFORMAT_IF1 ((SLuint32) 0x00000002)
#define SL_AUDIOSTREAMFORMAT_IF2 ((SLuint32) 0x00000003)
#define SL_AUDIOSTREAMFORMAT_FSF ((SLuint32) 0x00000004)
#define SL_AUDIOSTREAMFORMAT_RTPPAYLOAD ((SLuint32) 0x00000005)
#define SL_AUDIOSTREAMFORMAT_ITU ((SLuint32) 0x00000006)
#define SL_AUDIOPROFILE_AMRWB ((SLuint32) 0x00000001)
#define SL_AUDIOPROFILE_AMRWBPLUS ((SLuint32) 0x00000001)
#define SL_AUDIOPROFILE_AAC_AAC ((SLuint32) 0x00000001)
#define SL_AUDIOMODE_AAC_MAIN ((SLuint32) 0x00000001)
#define SL_AUDIOMODE_AAC_LC ((SLuint32) 0x00000002)
#define SL_AUDIOMODE_AAC_SSR ((SLuint32) 0x00000003)
#define SL_AUDIOMODE_AAC_LTP ((SLuint32) 0x00000004)
#define SL_AUDIOMODE_AAC_HE ((SLuint32) 0x00000005)
#define SL_AUDIOMODE_AAC_SCALABLE ((SLuint32) 0x00000006)
#define SL_AUDIOMODE_AAC_ERLC ((SLuint32) 0x00000007)
#define SL_AUDIOMODE_AAC_LD ((SLuint32) 0x00000008)
#define SL_AUDIOMODE_AAC_HE_PS ((SLuint32) 0x00000009)
#define SL_AUDIOMODE_AAC_HE_MPS ((SLuint32) 0x0000000A)
#define SL_AUDIOSTREAMFORMAT_MP2ADTS ((SLuint32) 0x00000001)
#define SL_AUDIOSTREAMFORMAT_MP4ADTS ((SLuint32) 0x00000002)
#define SL_AUDIOSTREAMFORMAT_MP4LOAS ((SLuint32) 0x00000003)
#define SL_AUDIOSTREAMFORMAT_MP4LATM ((SLuint32) 0x00000004)
#define SL_AUDIOSTREAMFORMAT_ADIF ((SLuint32) 0x00000005)
#define SL_AUDIOSTREAMFORMAT_MP4FF ((SLuint32) 0x00000006)
#define SL_AUDIOSTREAMFORMAT_RAW ((SLuint32) 0x00000007)
#define SL_AUDIOPROFILE_WMA7 ((SLuint32) 0x00000001)
#define SL_AUDIOPROFILE_WMA8 ((SLuint32) 0x00000002)
#define SL_AUDIOPROFILE_WMA9 ((SLuint32) 0x00000003)
#define SL_AUDIOPROFILE_WMA10 ((SLuint32) 0x00000004)
#define SL_AUDIOMODE_WMA_LEVEL1 ((SLuint32) 0x00000001)
#define SL_AUDIOMODE_WMA_LEVEL2 ((SLuint32) 0x00000002)
#define SL_AUDIOMODE_WMA_LEVEL3 ((SLuint32) 0x00000003)
#define SL_AUDIOMODE_WMA_LEVEL4 ((SLuint32) 0x00000004)
#define SL_AUDIOMODE_WMAPRO_LEVELM0 ((SLuint32) 0x00000005)
#define SL_AUDIOMODE_WMAPRO_LEVELM1 ((SLuint32) 0x00000006)
#define SL_AUDIOMODE_WMAPRO_LEVELM2 ((SLuint32) 0x00000007)
#define SL_AUDIOMODE_WMAPRO_LEVELM3 ((SLuint32) 0x00000008)
#define SL_AUDIOPROFILE_REALAUDIO ((SLuint32) 0x00000001)
#define SL_AUDIOMODE_REALAUDIO_G2 ((SLuint32) 0x00000001)
#define SL_AUDIOMODE_REALAUDIO_8 ((SLuint32) 0x00000002)
#define SL_AUDIOMODE_REALAUDIO_10 ((SLuint32) 0x00000003)
#define SL_AUDIOMODE_REALAUDIO_SURROUND ((SLuint32) 0x00000004)
typedef struct SLAudioCodecDescriptor_ {
SLuint32 maxChannels;
SLuint32 minBitsPerSample;
SLuint32 maxBitsPerSample;
SLmilliHertz minSampleRate;
SLmilliHertz maxSampleRate;
SLboolean isFreqRangeContinuous;
SLmilliHertz *pSampleRatesSupported;
SLuint32 numSampleRatesSupported;
SLuint32 minBitRate;
SLuint32 maxBitRate;
SLboolean isBitrateRangeContinuous;
SLuint32 *pBitratesSupported;
SLuint32 numBitratesSupported;
SLuint32 profileSetting;
SLuint32 modeSetting;
} SLAudioCodecDescriptor;
/*Structure used to retrieve the profile and level settings supported by an audio encoder */
typedef struct SLAudioCodecProfileMode_ {
SLuint32 profileSetting;
SLuint32 modeSetting;
} SLAudioCodecProfileMode;
extern SL_API const SLInterfaceID SL_IID_AUDIODECODERCAPABILITIES;
struct SLAudioDecoderCapabilitiesItf_;
typedef const struct SLAudioDecoderCapabilitiesItf_ * const * SLAudioDecoderCapabilitiesItf;
struct SLAudioDecoderCapabilitiesItf_ {
SLresult (*GetAudioDecoders) (
SLAudioDecoderCapabilitiesItf self,
SLuint32 * pNumDecoders ,
SLuint32 *pDecoderIds
);
SLresult (*GetAudioDecoderCapabilities) (
SLAudioDecoderCapabilitiesItf self,
SLuint32 decoderId,
SLuint32 *pIndex,
SLAudioCodecDescriptor *pDescriptor
);
};
/*---------------------------------------------------------------------------*/
/* Audio Encoder Capabilities Interface */
/* --------------------------------------------------------------------------*/
/* Structure used when setting audio encoding parameters */
typedef struct SLAudioEncoderSettings_ {
SLuint32 encoderId;
SLuint32 channelsIn;
SLuint32 channelsOut;
SLmilliHertz sampleRate;
SLuint32 bitRate;
SLuint32 bitsPerSample;
SLuint32 rateControl;
SLuint32 profileSetting;
SLuint32 levelSetting;
SLuint32 channelMode;
SLuint32 streamFormat;
SLuint32 encodeOptions;
SLuint32 blockAlignment;
} SLAudioEncoderSettings;
extern SL_API const SLInterfaceID SL_IID_AUDIOENCODERCAPABILITIES;
struct SLAudioEncoderCapabilitiesItf_;
typedef const struct SLAudioEncoderCapabilitiesItf_ * const * SLAudioEncoderCapabilitiesItf;
struct SLAudioEncoderCapabilitiesItf_ {
SLresult (*GetAudioEncoders) (
SLAudioEncoderCapabilitiesItf self,
SLuint32 *pNumEncoders ,
SLuint32 *pEncoderIds
);
SLresult (*GetAudioEncoderCapabilities) (
SLAudioEncoderCapabilitiesItf self,
SLuint32 encoderId,
SLuint32 *pIndex,
SLAudioCodecDescriptor * pDescriptor
);
};
/*---------------------------------------------------------------------------*/
/* Audio Encoder Interface */
/* --------------------------------------------------------------------------*/
extern SL_API const SLInterfaceID SL_IID_AUDIOENCODER;
struct SLAudioEncoderItf_;
typedef const struct SLAudioEncoderItf_ * const * SLAudioEncoderItf;
struct SLAudioEncoderItf_ {
SLresult (*SetEncoderSettings) (
SLAudioEncoderItf self,
SLAudioEncoderSettings *pSettings
);
SLresult (*GetEncoderSettings) (
SLAudioEncoderItf self,
SLAudioEncoderSettings *pSettings
);
};
/*---------------------------------------------------------------------------*/
/* Bass Boost Interface */
/* --------------------------------------------------------------------------*/
extern SL_API const SLInterfaceID SL_IID_BASSBOOST;
struct SLBassBoostItf_;
typedef const struct SLBassBoostItf_ * const * SLBassBoostItf;
struct SLBassBoostItf_ {
SLresult (*SetEnabled)(
SLBassBoostItf self,
SLboolean enabled
);
SLresult (*IsEnabled)(
SLBassBoostItf self,
SLboolean *pEnabled
);
SLresult (*SetStrength)(
SLBassBoostItf self,
SLpermille strength
);
SLresult (*GetRoundedStrength)(
SLBassBoostItf self,
SLpermille *pStrength
);
SLresult (*IsStrengthSupported)(
SLBassBoostItf self,
SLboolean *pSupported
);
};
/*---------------------------------------------------------------------------*/
/* Pitch Interface */
/* --------------------------------------------------------------------------*/
extern SL_API const SLInterfaceID SL_IID_PITCH;
struct SLPitchItf_;
typedef const struct SLPitchItf_ * const * SLPitchItf;
struct SLPitchItf_ {
SLresult (*SetPitch) (
SLPitchItf self,
SLpermille pitch
);
SLresult (*GetPitch) (
SLPitchItf self,
SLpermille *pPitch
);
SLresult (*GetPitchCapabilities) (
SLPitchItf self,
SLpermille *pMinPitch,
SLpermille *pMaxPitch
);
};
/*---------------------------------------------------------------------------*/
/* Rate Pitch Interface */
/* RatePitchItf is an interface for controlling the rate a sound is played */
/* back. A change in rate will cause a change in pitch. */
/* --------------------------------------------------------------------------*/
extern SL_API const SLInterfaceID SL_IID_RATEPITCH;
struct SLRatePitchItf_;
typedef const struct SLRatePitchItf_ * const * SLRatePitchItf;
struct SLRatePitchItf_ {
SLresult (*SetRate) (
SLRatePitchItf self,
SLpermille rate
);
SLresult (*GetRate) (
SLRatePitchItf self,
SLpermille *pRate
);
SLresult (*GetRatePitchCapabilities) (
SLRatePitchItf self,
SLpermille *pMinRate,
SLpermille *pMaxRate
);
};
/*---------------------------------------------------------------------------*/
/* Virtualizer Interface */
/* --------------------------------------------------------------------------*/
extern SL_API const SLInterfaceID SL_IID_VIRTUALIZER;
struct SLVirtualizerItf_;
typedef const struct SLVirtualizerItf_ * const * SLVirtualizerItf;
struct SLVirtualizerItf_ {
SLresult (*SetEnabled)(
SLVirtualizerItf self,
SLboolean enabled
);
SLresult (*IsEnabled)(
SLVirtualizerItf self,
SLboolean *pEnabled
);
SLresult (*SetStrength)(
SLVirtualizerItf self,
SLpermille strength
);
SLresult (*GetRoundedStrength)(
SLVirtualizerItf self,
SLpermille *pStrength
);
SLresult (*IsStrengthSupported)(
SLVirtualizerItf self,
SLboolean *pSupported
);
};
/*---------------------------------------------------------------------------*/
/* Visualization Interface */
/* --------------------------------------------------------------------------*/
extern SL_API const SLInterfaceID SL_IID_VISUALIZATION;
struct SLVisualizationItf_;
typedef const struct SLVisualizationItf_ * const * SLVisualizationItf;
typedef void (SLAPIENTRY *slVisualizationCallback) (
void *pContext,
const SLuint8 waveform[],
const SLuint8 fft[],
SLmilliHertz samplerate
);
struct SLVisualizationItf_{
SLresult (*RegisterVisualizationCallback)(
SLVisualizationItf self,
slVisualizationCallback callback,
void *pContext,
SLmilliHertz rate
);
SLresult (*GetMaxRate)(
SLVisualizationItf self,
SLmilliHertz* pRate
);
};
/*---------------------------------------------------------------------------*/
/* Engine Interface */
/* --------------------------------------------------------------------------*/
extern SL_API const SLInterfaceID SL_IID_ENGINE;
struct SLEngineItf_;
typedef const struct SLEngineItf_ * const * SLEngineItf;
struct SLEngineItf_ {
SLresult (*CreateLEDDevice) (
SLEngineItf self,
SLObjectItf * pDevice,
SLuint32 deviceID,
SLuint32 numInterfaces,
const SLInterfaceID * pInterfaceIds,
const SLboolean * pInterfaceRequired
);
SLresult (*CreateVibraDevice) (
SLEngineItf self,
SLObjectItf * pDevice,
SLuint32 deviceID,
SLuint32 numInterfaces,
const SLInterfaceID * pInterfaceIds,
const SLboolean * pInterfaceRequired
);
SLresult (*CreateAudioPlayer) (
SLEngineItf self,
SLObjectItf * pPlayer,
SLDataSource *pAudioSrc,
SLDataSink *pAudioSnk,
SLuint32 numInterfaces,
const SLInterfaceID * pInterfaceIds,
const SLboolean * pInterfaceRequired
);
SLresult (*CreateAudioRecorder) (
SLEngineItf self,
SLObjectItf * pRecorder,
SLDataSource *pAudioSrc,
SLDataSink *pAudioSnk,
SLuint32 numInterfaces,
const SLInterfaceID * pInterfaceIds,
const SLboolean * pInterfaceRequired
);
SLresult (*CreateMidiPlayer) (
SLEngineItf self,
SLObjectItf * pPlayer,
SLDataSource *pMIDISrc,
SLDataSource *pBankSrc,
SLDataSink *pAudioOutput,
SLDataSink *pVibra,
SLDataSink *pLEDArray,
SLuint32 numInterfaces,
const SLInterfaceID * pInterfaceIds,
const SLboolean * pInterfaceRequired
);
SLresult (*CreateListener) (
SLEngineItf self,
SLObjectItf * pListener,
SLuint32 numInterfaces,
const SLInterfaceID * pInterfaceIds,
const SLboolean * pInterfaceRequired
);
SLresult (*Create3DGroup) (
SLEngineItf self,
SLObjectItf * pGroup,
SLuint32 numInterfaces,
const SLInterfaceID * pInterfaceIds,
const SLboolean * pInterfaceRequired
);
SLresult (*CreateOutputMix) (
SLEngineItf self,
SLObjectItf * pMix,
SLuint32 numInterfaces,
const SLInterfaceID * pInterfaceIds,
const SLboolean * pInterfaceRequired
);
SLresult (*CreateMetadataExtractor) (
SLEngineItf self,
SLObjectItf * pMetadataExtractor,
SLDataSource * pDataSource,
SLuint32 numInterfaces,
const SLInterfaceID * pInterfaceIds,
const SLboolean * pInterfaceRequired
);
SLresult (*CreateExtensionObject) (
SLEngineItf self,
SLObjectItf * pObject,
void * pParameters,
SLuint32 objectID,
SLuint32 numInterfaces,
const SLInterfaceID * pInterfaceIds,
const SLboolean * pInterfaceRequired
);
SLresult (*QueryNumSupportedInterfaces) (
SLEngineItf self,
SLuint32 objectID,
SLuint32 * pNumSupportedInterfaces
);
SLresult (*QuerySupportedInterfaces) (
SLEngineItf self,
SLuint32 objectID,
SLuint32 index,
SLInterfaceID * pInterfaceId
);
SLresult (*QueryNumSupportedExtensions) (
SLEngineItf self,
SLuint32 * pNumExtensions
);
SLresult (*QuerySupportedExtension) (
SLEngineItf self,
SLuint32 index,
SLchar * pExtensionName,
SLint16 * pNameLength
);
SLresult (*IsExtensionSupported) (
SLEngineItf self,
const SLchar * pExtensionName,
SLboolean * pSupported
);
};
/*---------------------------------------------------------------------------*/
/* Engine Capabilities Interface */
/* --------------------------------------------------------------------------*/
extern SL_API const SLInterfaceID SL_IID_ENGINECAPABILITIES;
struct SLEngineCapabilitiesItf_;
typedef const struct SLEngineCapabilitiesItf_ * const * SLEngineCapabilitiesItf;
struct SLEngineCapabilitiesItf_ {
SLresult (*QuerySupportedProfiles) (
SLEngineCapabilitiesItf self,
SLuint16 *pProfilesSupported
);
SLresult (*QueryAvailableVoices) (
SLEngineCapabilitiesItf self,
SLuint16 voiceType,
SLint16 *pNumMaxVoices,
SLboolean *pIsAbsoluteMax,
SLint16 *pNumFreeVoices
);
SLresult (*QueryNumberOfMIDISynthesizers) (
SLEngineCapabilitiesItf self,
SLint16 *pNumMIDIsynthesizers
);
SLresult (*QueryAPIVersion) (
SLEngineCapabilitiesItf self,
SLint16 *pMajor,
SLint16 *pMinor,
SLint16 *pStep
);
SLresult (*QueryLEDCapabilities) (
SLEngineCapabilitiesItf self,
SLuint32 *pIndex,
SLuint32 *pLEDDeviceID,
SLLEDDescriptor *pDescriptor
);
SLresult (*QueryVibraCapabilities) (
SLEngineCapabilitiesItf self,
SLuint32 *pIndex,
SLuint32 *pVibraDeviceID,
SLVibraDescriptor *pDescriptor
);
SLresult (*IsThreadSafe) (
SLEngineCapabilitiesItf self,
SLboolean *pIsThreadSafe
);
};
/*---------------------------------------------------------------------------*/
/* Thread Sync Interface */
/* --------------------------------------------------------------------------*/
extern SL_API const SLInterfaceID SL_IID_THREADSYNC;
struct SLThreadSyncItf_;
typedef const struct SLThreadSyncItf_ * const * SLThreadSyncItf;
struct SLThreadSyncItf_ {
SLresult (*EnterCriticalSection) (
SLThreadSyncItf self
);
SLresult (*ExitCriticalSection) (
SLThreadSyncItf self
);
};
/*****************************************************************************/
/* SL engine constructor */
/*****************************************************************************/
#define SL_ENGINEOPTION_THREADSAFE ((SLuint32) 0x00000001)
#define SL_ENGINEOPTION_LOSSOFCONTROL ((SLuint32) 0x00000002)
typedef struct SLEngineOption_ {
SLuint32 feature;
SLuint32 data;
} SLEngineOption;
SL_API SLresult SLAPIENTRY slCreateEngine(
SLObjectItf *pEngine,
SLuint32 numOptions,
const SLEngineOption *pEngineOptions,
SLuint32 numInterfaces,
const SLInterfaceID *pInterfaceIds,
const SLboolean * pInterfaceRequired
);
SL_API SLresult SLAPIENTRY slQueryNumSupportedEngineInterfaces(
SLuint32 * pNumSupportedInterfaces
);
SL_API SLresult SLAPIENTRY slQuerySupportedEngineInterfaces(
SLuint32 index,
SLInterfaceID * pInterfaceId
);
#ifdef __cplusplus
} /* extern "C" */
#endif
#endif /* OPENSL_ES_H_ */