summaryrefslogtreecommitdiff
path: root/sysroot/usr/include/SLES/OpenSLES.h
diff options
context:
space:
mode:
Diffstat (limited to 'sysroot/usr/include/SLES/OpenSLES.h')
-rw-r--r--sysroot/usr/include/SLES/OpenSLES.h2774
1 files changed, 2774 insertions, 0 deletions
diff --git a/sysroot/usr/include/SLES/OpenSLES.h b/sysroot/usr/include/SLES/OpenSLES.h
new file mode 100644
index 0000000..16496f9
--- /dev/null
+++ b/sysroot/usr/include/SLES/OpenSLES.h
@@ -0,0 +1,2774 @@
+/*
+ * 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 SLAPIENTRY 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 SLAPIENTRY 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 SLAPIENTRY 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 SLAPIENTRY 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 SLAPIENTRY 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 SLAPIENTRY 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 SLAPIENTRY 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 SLAPIENTRY 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 SLAPIENTRY 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 SLAPIENTRY 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 SLAPIENTRY 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 SLAPIENTRY 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 SLAPIENTRY 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 SLAPIENTRY 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 SLAPIENTRY 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 SLAPIENTRY 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 SLAPIENTRY 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 SLAPIENTRY 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 SLAPIENTRY 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 SLAPIENTRY 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 SLAPIENTRY 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 SLAPIENTRY 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 SLAPIENTRY 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 SLAPIENTRY 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 SLAPIENTRY 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 SLAPIENTRY 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 SLAPIENTRY 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 SLAPIENTRY 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 SLAPIENTRY 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 SLAPIENTRY 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 SLAPIENTRY 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 SLAPIENTRY 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 SLAPIENTRY 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 SLAPIENTRY 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 SLAPIENTRY 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 SLAPIENTRY 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 SLAPIENTRY 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 SLAPIENTRY 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 SLAPIENTRY 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 SLAPIENTRY 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 SLAPIENTRY 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 SLAPIENTRY 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 SLAPIENTRY 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 SLAPIENTRY 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;
+
+
+SLresult SLAPIENTRY slCreateEngine(
+ SLObjectItf *pEngine,
+ SLuint32 numOptions,
+ const SLEngineOption *pEngineOptions,
+ SLuint32 numInterfaces,
+ const SLInterfaceID *pInterfaceIds,
+ const SLboolean * pInterfaceRequired
+);
+
+SLresult SLAPIENTRY slQueryNumSupportedEngineInterfaces(
+ SLuint32 * pNumSupportedInterfaces
+);
+
+SLresult SLAPIENTRY slQuerySupportedEngineInterfaces(
+ SLuint32 index,
+ SLInterfaceID * pInterfaceId
+);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* OPENSL_ES_H_ */