/* * 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_ */