2 * Copyright (c) 2007-2009 The Khronos Group Inc.
4 * Permission is hereby granted, free of charge, to any person obtaining a copy of
5 * this software and /or associated documentation files (the "Materials "), to
6 * deal in the Materials without restriction, including without limitation the
7 * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
8 * sell copies of the Materials, and to permit persons to whom the Materials are
9 * furnished to do so, subject to
10 * the following conditions:
12 * The above copyright notice and this permission notice shall be included
13 * in all copies or substantial portions of the Materials.
15 * THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 * OUT OF OR IN CONNECTION WITH THE MATERIALS OR THE USE OR OTHER DEALINGS IN THE
23 * OpenSLES.h - OpenSL ES version 1.0.1
27 /****************************************************************************/
28 /* NOTE: This file is a standard OpenSL ES header file and should not be */
29 /* modified in any way. */
30 /****************************************************************************/
39 #include "OpenSLES_Platform.h"
42 /*****************************************************************************/
43 /* Common types, structures, and defines */
44 /*****************************************************************************/
46 #ifndef _KHRONOS_KEYS_
47 #define _KHRONOS_KEYS_
49 #define KHRONOS_TITLE "KhronosTitle"
50 #define KHRONOS_ALBUM "KhronosAlbum"
51 #define KHRONOS_TRACK_NUMBER "KhronosTrackNumber"
52 #define KHRONOS_ARTIST "KhronosArtist"
53 #define KHRONOS_GENRE "KhronosGenre"
54 #define KHRONOS_YEAR "KhronosYear"
55 #define KHRONOS_COMMENT "KhronosComment"
56 #define KHRONOS_ARTIST_URL "KhronosArtistURL"
57 #define KHRONOS_CONTENT_URL "KhronosContentURL"
58 #define KHRONOS_RATING "KhronosRating"
59 #define KHRONOS_ALBUM_ART "KhronosAlbumArt"
60 #define KHRONOS_COPYRIGHT "KhronosCopyright"
65 /* remap common types to SL types for clarity */
66 typedef sl_int8_t SLint8
; /* 8 bit signed integer */
67 typedef sl_uint8_t SLuint8
; /* 8 bit unsigned integer */
68 typedef sl_int16_t SLint16
; /* 16 bit signed integer */
69 typedef sl_uint16_t SLuint16
; /* 16 bit unsigned integer */
70 typedef sl_int32_t SLint32
; /* 32 bit signed integer */
71 typedef sl_uint32_t SLuint32
; /* 32 bit unsigned integer */
73 typedef SLuint32 SLboolean
;
74 #define SL_BOOLEAN_FALSE ((SLboolean) 0x00000000)
75 #define SL_BOOLEAN_TRUE ((SLboolean) 0x00000001)
77 typedef SLuint8 SLchar
; /* UTF-8 is to be used */
78 typedef SLint16 SLmillibel
;
79 typedef SLuint32 SLmillisecond
;
80 typedef SLuint32 SLmilliHertz
;
81 typedef SLint32 SLmillimeter
;
82 typedef SLint32 SLmillidegree
;
83 typedef SLint16 SLpermille
;
84 typedef SLuint32 SLmicrosecond
;
85 typedef SLuint32 SLresult
;
87 #define SL_MILLIBEL_MAX ((SLmillibel) 0x7FFF)
88 #define SL_MILLIBEL_MIN ((SLmillibel) (-SL_MILLIBEL_MAX-1))
90 #define SL_MILLIHERTZ_MAX ((SLmilliHertz) 0xFFFFFFFF)
91 #define SL_MILLIMETER_MAX ((SLmillimeter) 0x7FFFFFFF)
93 /** Interface ID defined as a UUID */
94 typedef const struct SLInterfaceID_
{
97 SLuint16 time_hi_and_version
;
102 /* Forward declaration for the object interface */
105 typedef const struct SLObjectItf_
* const * SLObjectItf
;
109 #define SL_OBJECTID_ENGINE ((SLuint32) 0x00001001)
110 #define SL_OBJECTID_LEDDEVICE ((SLuint32) 0x00001002)
111 #define SL_OBJECTID_VIBRADEVICE ((SLuint32) 0x00001003)
112 #define SL_OBJECTID_AUDIOPLAYER ((SLuint32) 0x00001004)
113 #define SL_OBJECTID_AUDIORECORDER ((SLuint32) 0x00001005)
114 #define SL_OBJECTID_MIDIPLAYER ((SLuint32) 0x00001006)
115 #define SL_OBJECTID_LISTENER ((SLuint32) 0x00001007)
116 #define SL_OBJECTID_3DGROUP ((SLuint32) 0x00001008)
117 #define SL_OBJECTID_OUTPUTMIX ((SLuint32) 0x00001009)
118 #define SL_OBJECTID_METADATAEXTRACTOR ((SLuint32) 0x0000100A)
123 #define SL_PROFILES_PHONE ((SLuint16) 0x0001)
124 #define SL_PROFILES_MUSIC ((SLuint16) 0x0002)
125 #define SL_PROFILES_GAME ((SLuint16) 0x0004)
127 /* Types of voices supported by the system */
129 #define SL_VOICETYPE_2D_AUDIO ((SLuint16) 0x0001)
130 #define SL_VOICETYPE_MIDI ((SLuint16) 0x0002)
131 #define SL_VOICETYPE_3D_AUDIO ((SLuint16) 0x0004)
132 #define SL_VOICETYPE_3D_MIDIOUTPUT ((SLuint16) 0x0008)
134 /* Convenient macros representing various different priority levels, for use with the SetPriority method */
136 #define SL_PRIORITY_LOWEST ((SLint32) (-0x7FFFFFFF-1))
137 #define SL_PRIORITY_VERYLOW ((SLint32) -0x60000000)
138 #define SL_PRIORITY_LOW ((SLint32) -0x40000000)
139 #define SL_PRIORITY_BELOWNORMAL ((SLint32) -0x20000000)
140 #define SL_PRIORITY_NORMAL ((SLint32) 0x00000000)
141 #define SL_PRIORITY_ABOVENORMAL ((SLint32) 0x20000000)
142 #define SL_PRIORITY_HIGH ((SLint32) 0x40000000)
143 #define SL_PRIORITY_VERYHIGH ((SLint32) 0x60000000)
144 #define SL_PRIORITY_HIGHEST ((SLint32) 0x7FFFFFFF)
147 /** These macros list the various sample formats that are possible on audio input and output devices. */
149 #define SL_PCMSAMPLEFORMAT_FIXED_8 ((SLuint16) 0x0008)
150 #define SL_PCMSAMPLEFORMAT_FIXED_16 ((SLuint16) 0x0010)
151 #define SL_PCMSAMPLEFORMAT_FIXED_20 ((SLuint16) 0x0014)
152 #define SL_PCMSAMPLEFORMAT_FIXED_24 ((SLuint16) 0x0018)
153 #define SL_PCMSAMPLEFORMAT_FIXED_28 ((SLuint16) 0x001C)
154 #define SL_PCMSAMPLEFORMAT_FIXED_32 ((SLuint16) 0x0020)
157 /** These macros specify the commonly used sampling rates (in milliHertz) supported by most audio I/O devices. */
159 #define SL_SAMPLINGRATE_8 ((SLuint32) 8000000)
160 #define SL_SAMPLINGRATE_11_025 ((SLuint32) 11025000)
161 #define SL_SAMPLINGRATE_12 ((SLuint32) 12000000)
162 #define SL_SAMPLINGRATE_16 ((SLuint32) 16000000)
163 #define SL_SAMPLINGRATE_22_05 ((SLuint32) 22050000)
164 #define SL_SAMPLINGRATE_24 ((SLuint32) 24000000)
165 #define SL_SAMPLINGRATE_32 ((SLuint32) 32000000)
166 #define SL_SAMPLINGRATE_44_1 ((SLuint32) 44100000)
167 #define SL_SAMPLINGRATE_48 ((SLuint32) 48000000)
168 #define SL_SAMPLINGRATE_64 ((SLuint32) 64000000)
169 #define SL_SAMPLINGRATE_88_2 ((SLuint32) 88200000)
170 #define SL_SAMPLINGRATE_96 ((SLuint32) 96000000)
171 #define SL_SAMPLINGRATE_192 ((SLuint32) 192000000)
173 #define SL_SPEAKER_FRONT_LEFT ((SLuint32) 0x00000001)
174 #define SL_SPEAKER_FRONT_RIGHT ((SLuint32) 0x00000002)
175 #define SL_SPEAKER_FRONT_CENTER ((SLuint32) 0x00000004)
176 #define SL_SPEAKER_LOW_FREQUENCY ((SLuint32) 0x00000008)
177 #define SL_SPEAKER_BACK_LEFT ((SLuint32) 0x00000010)
178 #define SL_SPEAKER_BACK_RIGHT ((SLuint32) 0x00000020)
179 #define SL_SPEAKER_FRONT_LEFT_OF_CENTER ((SLuint32) 0x00000040)
180 #define SL_SPEAKER_FRONT_RIGHT_OF_CENTER ((SLuint32) 0x00000080)
181 #define SL_SPEAKER_BACK_CENTER ((SLuint32) 0x00000100)
182 #define SL_SPEAKER_SIDE_LEFT ((SLuint32) 0x00000200)
183 #define SL_SPEAKER_SIDE_RIGHT ((SLuint32) 0x00000400)
184 #define SL_SPEAKER_TOP_CENTER ((SLuint32) 0x00000800)
185 #define SL_SPEAKER_TOP_FRONT_LEFT ((SLuint32) 0x00001000)
186 #define SL_SPEAKER_TOP_FRONT_CENTER ((SLuint32) 0x00002000)
187 #define SL_SPEAKER_TOP_FRONT_RIGHT ((SLuint32) 0x00004000)
188 #define SL_SPEAKER_TOP_BACK_LEFT ((SLuint32) 0x00008000)
189 #define SL_SPEAKER_TOP_BACK_CENTER ((SLuint32) 0x00010000)
190 #define SL_SPEAKER_TOP_BACK_RIGHT ((SLuint32) 0x00020000)
193 /*****************************************************************************/
196 /*****************************************************************************/
198 #define SL_RESULT_SUCCESS ((SLuint32) 0x00000000)
199 #define SL_RESULT_PRECONDITIONS_VIOLATED ((SLuint32) 0x00000001)
200 #define SL_RESULT_PARAMETER_INVALID ((SLuint32) 0x00000002)
201 #define SL_RESULT_MEMORY_FAILURE ((SLuint32) 0x00000003)
202 #define SL_RESULT_RESOURCE_ERROR ((SLuint32) 0x00000004)
203 #define SL_RESULT_RESOURCE_LOST ((SLuint32) 0x00000005)
204 #define SL_RESULT_IO_ERROR ((SLuint32) 0x00000006)
205 #define SL_RESULT_BUFFER_INSUFFICIENT ((SLuint32) 0x00000007)
206 #define SL_RESULT_CONTENT_CORRUPTED ((SLuint32) 0x00000008)
207 #define SL_RESULT_CONTENT_UNSUPPORTED ((SLuint32) 0x00000009)
208 #define SL_RESULT_CONTENT_NOT_FOUND ((SLuint32) 0x0000000A)
209 #define SL_RESULT_PERMISSION_DENIED ((SLuint32) 0x0000000B)
210 #define SL_RESULT_FEATURE_UNSUPPORTED ((SLuint32) 0x0000000C)
211 #define SL_RESULT_INTERNAL_ERROR ((SLuint32) 0x0000000D)
212 #define SL_RESULT_UNKNOWN_ERROR ((SLuint32) 0x0000000E)
213 #define SL_RESULT_OPERATION_ABORTED ((SLuint32) 0x0000000F)
214 #define SL_RESULT_CONTROL_LOST ((SLuint32) 0x00000010)
217 /* Object state definitions */
219 #define SL_OBJECT_STATE_UNREALIZED ((SLuint32) 0x00000001)
220 #define SL_OBJECT_STATE_REALIZED ((SLuint32) 0x00000002)
221 #define SL_OBJECT_STATE_SUSPENDED ((SLuint32) 0x00000003)
223 /* Object event definitions */
225 #define SL_OBJECT_EVENT_RUNTIME_ERROR ((SLuint32) 0x00000001)
226 #define SL_OBJECT_EVENT_ASYNC_TERMINATION ((SLuint32) 0x00000002)
227 #define SL_OBJECT_EVENT_RESOURCES_LOST ((SLuint32) 0x00000003)
228 #define SL_OBJECT_EVENT_RESOURCES_AVAILABLE ((SLuint32) 0x00000004)
229 #define SL_OBJECT_EVENT_ITF_CONTROL_TAKEN ((SLuint32) 0x00000005)
230 #define SL_OBJECT_EVENT_ITF_CONTROL_RETURNED ((SLuint32) 0x00000006)
231 #define SL_OBJECT_EVENT_ITF_PARAMETERS_CHANGED ((SLuint32) 0x00000007)
234 /*****************************************************************************/
235 /* Interface definitions */
236 /*****************************************************************************/
238 /** NULL Interface */
240 extern SL_API
const SLInterfaceID SL_IID_NULL
;
242 /*---------------------------------------------------------------------------*/
243 /* Data Source and Data Sink Structures */
244 /*---------------------------------------------------------------------------*/
246 /** Data locator macros */
247 #define SL_DATALOCATOR_URI ((SLuint32) 0x00000001)
248 #define SL_DATALOCATOR_ADDRESS ((SLuint32) 0x00000002)
249 #define SL_DATALOCATOR_IODEVICE ((SLuint32) 0x00000003)
250 #define SL_DATALOCATOR_OUTPUTMIX ((SLuint32) 0x00000004)
251 #define SL_DATALOCATOR_RESERVED5 ((SLuint32) 0x00000005)
252 #define SL_DATALOCATOR_BUFFERQUEUE ((SLuint32) 0x00000006)
253 #define SL_DATALOCATOR_MIDIBUFFERQUEUE ((SLuint32) 0x00000007)
254 #define SL_DATALOCATOR_RESERVED8 ((SLuint32) 0x00000008)
258 /** URI-based data locator definition where locatorType must be SL_DATALOCATOR_URI*/
259 typedef struct SLDataLocator_URI_
{
260 SLuint32 locatorType
;
264 /** Address-based data locator definition where locatorType must be SL_DATALOCATOR_ADDRESS*/
265 typedef struct SLDataLocator_Address_
{
266 SLuint32 locatorType
;
269 } SLDataLocator_Address
;
271 /** IODevice-types */
272 #define SL_IODEVICE_AUDIOINPUT ((SLuint32) 0x00000001)
273 #define SL_IODEVICE_LEDARRAY ((SLuint32) 0x00000002)
274 #define SL_IODEVICE_VIBRA ((SLuint32) 0x00000003)
275 #define SL_IODEVICE_RESERVED4 ((SLuint32) 0x00000004)
276 #define SL_IODEVICE_RESERVED5 ((SLuint32) 0x00000005)
278 /** IODevice-based data locator definition where locatorType must be SL_DATALOCATOR_IODEVICE*/
279 typedef struct SLDataLocator_IODevice_
{
280 SLuint32 locatorType
;
284 } SLDataLocator_IODevice
;
286 /** OutputMix-based data locator definition where locatorType must be SL_DATALOCATOR_OUTPUTMIX*/
287 typedef struct SLDataLocator_OutputMix
{
288 SLuint32 locatorType
;
289 SLObjectItf outputMix
;
290 } SLDataLocator_OutputMix
;
293 /** BufferQueue-based data locator definition where locatorType must be SL_DATALOCATOR_BUFFERQUEUE*/
294 typedef struct SLDataLocator_BufferQueue
{
295 SLuint32 locatorType
;
297 } SLDataLocator_BufferQueue
;
299 /** MidiBufferQueue-based data locator definition where locatorType must be SL_DATALOCATOR_MIDIBUFFERQUEUE*/
300 typedef struct SLDataLocator_MIDIBufferQueue
{
301 SLuint32 locatorType
;
304 } SLDataLocator_MIDIBufferQueue
;
306 /** Data format defines */
307 #define SL_DATAFORMAT_MIME ((SLuint32) 0x00000001)
308 #define SL_DATAFORMAT_PCM ((SLuint32) 0x00000002)
309 #define SL_DATAFORMAT_RESERVED3 ((SLuint32) 0x00000003)
312 /** MIME-type-based data format definition where formatType must be SL_DATAFORMAT_MIME*/
313 typedef struct SLDataFormat_MIME_
{
316 SLuint32 containerType
;
319 /* Byte order of a block of 16- or 32-bit data */
320 #define SL_BYTEORDER_BIGENDIAN ((SLuint32) 0x00000001)
321 #define SL_BYTEORDER_LITTLEENDIAN ((SLuint32) 0x00000002)
324 #define SL_CONTAINERTYPE_UNSPECIFIED ((SLuint32) 0x00000001)
325 #define SL_CONTAINERTYPE_RAW ((SLuint32) 0x00000002)
326 #define SL_CONTAINERTYPE_ASF ((SLuint32) 0x00000003)
327 #define SL_CONTAINERTYPE_AVI ((SLuint32) 0x00000004)
328 #define SL_CONTAINERTYPE_BMP ((SLuint32) 0x00000005)
329 #define SL_CONTAINERTYPE_JPG ((SLuint32) 0x00000006)
330 #define SL_CONTAINERTYPE_JPG2000 ((SLuint32) 0x00000007)
331 #define SL_CONTAINERTYPE_M4A ((SLuint32) 0x00000008)
332 #define SL_CONTAINERTYPE_MP3 ((SLuint32) 0x00000009)
333 #define SL_CONTAINERTYPE_MP4 ((SLuint32) 0x0000000A)
334 #define SL_CONTAINERTYPE_MPEG_ES ((SLuint32) 0x0000000B)
335 #define SL_CONTAINERTYPE_MPEG_PS ((SLuint32) 0x0000000C)
336 #define SL_CONTAINERTYPE_MPEG_TS ((SLuint32) 0x0000000D)
337 #define SL_CONTAINERTYPE_QT ((SLuint32) 0x0000000E)
338 #define SL_CONTAINERTYPE_WAV ((SLuint32) 0x0000000F)
339 #define SL_CONTAINERTYPE_XMF_0 ((SLuint32) 0x00000010)
340 #define SL_CONTAINERTYPE_XMF_1 ((SLuint32) 0x00000011)
341 #define SL_CONTAINERTYPE_XMF_2 ((SLuint32) 0x00000012)
342 #define SL_CONTAINERTYPE_XMF_3 ((SLuint32) 0x00000013)
343 #define SL_CONTAINERTYPE_XMF_GENERIC ((SLuint32) 0x00000014)
344 #define SL_CONTAINERTYPE_AMR ((SLuint32) 0x00000015)
345 #define SL_CONTAINERTYPE_AAC ((SLuint32) 0x00000016)
346 #define SL_CONTAINERTYPE_3GPP ((SLuint32) 0x00000017)
347 #define SL_CONTAINERTYPE_3GA ((SLuint32) 0x00000018)
348 #define SL_CONTAINERTYPE_RM ((SLuint32) 0x00000019)
349 #define SL_CONTAINERTYPE_DMF ((SLuint32) 0x0000001A)
350 #define SL_CONTAINERTYPE_SMF ((SLuint32) 0x0000001B)
351 #define SL_CONTAINERTYPE_MOBILE_DLS ((SLuint32) 0x0000001C)
352 #define SL_CONTAINERTYPE_OGG ((SLuint32) 0x0000001D)
355 /** PCM-type-based data format definition where formatType must be SL_DATAFORMAT_PCM*/
356 typedef struct SLDataFormat_PCM_
{
358 SLuint32 numChannels
;
359 SLuint32 samplesPerSec
;
360 SLuint32 bitsPerSample
;
361 SLuint32 containerSize
;
362 SLuint32 channelMask
;
366 typedef struct SLDataSource_
{
372 typedef struct SLDataSink_
{
382 /*---------------------------------------------------------------------------*/
383 /* Standard Object Interface */
384 /*---------------------------------------------------------------------------*/
386 extern SL_API
const SLInterfaceID SL_IID_OBJECT
;
388 /** Object callback */
391 typedef void (SLAPIENTRY
*slObjectCallback
) (
393 const void * pContext
,
401 struct SLObjectItf_
{
402 SLresult (*Realize
) (
410 SLresult (*GetState
) (
414 SLresult (*GetInterface
) (
416 const SLInterfaceID iid
,
419 SLresult (*RegisterCallback
) (
421 slObjectCallback callback
,
424 void (*AbortAsyncOperation
) (
430 SLresult (*SetPriority
) (
433 SLboolean preemptable
435 SLresult (*GetPriority
) (
438 SLboolean
*pPreemptable
440 SLresult (*SetLossOfControlInterfaces
) (
442 SLint16 numInterfaces
,
443 SLInterfaceID
* pInterfaceIDs
,
449 /*---------------------------------------------------------------------------*/
450 /* Audio IO Device capabilities interface */
451 /*---------------------------------------------------------------------------*/
453 #define SL_DEFAULTDEVICEID_AUDIOINPUT ((SLuint32) 0xFFFFFFFF)
454 #define SL_DEFAULTDEVICEID_AUDIOOUTPUT ((SLuint32) 0xFFFFFFFE)
455 #define SL_DEFAULTDEVICEID_LED ((SLuint32) 0xFFFFFFFD)
456 #define SL_DEFAULTDEVICEID_VIBRA ((SLuint32) 0xFFFFFFFC)
457 #define SL_DEFAULTDEVICEID_RESERVED1 ((SLuint32) 0xFFFFFFFB)
460 #define SL_DEVCONNECTION_INTEGRATED ((SLint16) 0x0001)
461 #define SL_DEVCONNECTION_ATTACHED_WIRED ((SLint16) 0x0100)
462 #define SL_DEVCONNECTION_ATTACHED_WIRELESS ((SLint16) 0x0200)
463 #define SL_DEVCONNECTION_NETWORK ((SLint16) 0x0400)
466 #define SL_DEVLOCATION_HANDSET ((SLuint16) 0x0001)
467 #define SL_DEVLOCATION_HEADSET ((SLuint16) 0x0002)
468 #define SL_DEVLOCATION_CARKIT ((SLuint16) 0x0003)
469 #define SL_DEVLOCATION_DOCK ((SLuint16) 0x0004)
470 #define SL_DEVLOCATION_REMOTE ((SLuint16) 0x0005)
471 /* Note: SL_DEVLOCATION_RESLTE is deprecated, use SL_DEVLOCATION_REMOTE instead. */
472 #define SL_DEVLOCATION_RESLTE ((SLuint16) 0x0005)
475 #define SL_DEVSCOPE_UNKNOWN ((SLuint16) 0x0001)
476 #define SL_DEVSCOPE_ENVIRONMENT ((SLuint16) 0x0002)
477 #define SL_DEVSCOPE_USER ((SLuint16) 0x0003)
480 typedef struct SLAudioInputDescriptor_
{
482 SLint16 deviceConnection
;
484 SLint16 deviceLocation
;
485 SLboolean isForTelephony
;
486 SLmilliHertz minSampleRate
;
487 SLmilliHertz maxSampleRate
;
488 SLboolean isFreqRangeContinuous
;
489 SLmilliHertz
*samplingRatesSupported
;
490 SLint16 numOfSamplingRatesSupported
;
492 } SLAudioInputDescriptor
;
495 typedef struct SLAudioOutputDescriptor_
{
497 SLint16 deviceConnection
;
499 SLint16 deviceLocation
;
500 SLboolean isForTelephony
;
501 SLmilliHertz minSampleRate
;
502 SLmilliHertz maxSampleRate
;
503 SLboolean isFreqRangeContinuous
;
504 SLmilliHertz
*samplingRatesSupported
;
505 SLint16 numOfSamplingRatesSupported
;
507 } SLAudioOutputDescriptor
;
511 extern SL_API
const SLInterfaceID SL_IID_AUDIOIODEVICECAPABILITIES
;
513 struct SLAudioIODeviceCapabilitiesItf_
;
514 typedef const struct SLAudioIODeviceCapabilitiesItf_
* const * SLAudioIODeviceCapabilitiesItf
;
517 typedef void (SLAPIENTRY
*slAvailableAudioInputsChangedCallback
) (
518 SLAudioIODeviceCapabilitiesItf caller
,
526 typedef void (SLAPIENTRY
*slAvailableAudioOutputsChangedCallback
) (
527 SLAudioIODeviceCapabilitiesItf caller
,
534 typedef void (SLAPIENTRY
*slDefaultDeviceIDMapChangedCallback
) (
535 SLAudioIODeviceCapabilitiesItf caller
,
542 struct SLAudioIODeviceCapabilitiesItf_
{
543 SLresult (*GetAvailableAudioInputs
)(
544 SLAudioIODeviceCapabilitiesItf self
,
546 SLuint32
*pInputDeviceIDs
548 SLresult (*QueryAudioInputCapabilities
)(
549 SLAudioIODeviceCapabilitiesItf self
,
551 SLAudioInputDescriptor
*pDescriptor
553 SLresult (*RegisterAvailableAudioInputsChangedCallback
) (
554 SLAudioIODeviceCapabilitiesItf self
,
555 slAvailableAudioInputsChangedCallback callback
,
558 SLresult (*GetAvailableAudioOutputs
)(
559 SLAudioIODeviceCapabilitiesItf self
,
560 SLint32
*pNumOutputs
,
561 SLuint32
*pOutputDeviceIDs
563 SLresult (*QueryAudioOutputCapabilities
)(
564 SLAudioIODeviceCapabilitiesItf self
,
566 SLAudioOutputDescriptor
*pDescriptor
568 SLresult (*RegisterAvailableAudioOutputsChangedCallback
) (
569 SLAudioIODeviceCapabilitiesItf self
,
570 slAvailableAudioOutputsChangedCallback callback
,
573 SLresult (*RegisterDefaultDeviceIDMapChangedCallback
) (
574 SLAudioIODeviceCapabilitiesItf self
,
575 slDefaultDeviceIDMapChangedCallback callback
,
578 SLresult (*GetAssociatedAudioInputs
) (
579 SLAudioIODeviceCapabilitiesItf self
,
581 SLint32
*pNumAudioInputs
,
582 SLuint32
*pAudioInputDeviceIDs
584 SLresult (*GetAssociatedAudioOutputs
) (
585 SLAudioIODeviceCapabilitiesItf self
,
587 SLint32
*pNumAudioOutputs
,
588 SLuint32
*pAudioOutputDeviceIDs
590 SLresult (*GetDefaultAudioDevices
) (
591 SLAudioIODeviceCapabilitiesItf self
,
592 SLuint32 defaultDeviceID
,
593 SLint32
*pNumAudioDevices
,
594 SLuint32
*pAudioDeviceIDs
596 SLresult (*QuerySampleFormatsSupported
)(
597 SLAudioIODeviceCapabilitiesItf self
,
599 SLmilliHertz samplingRate
,
600 SLint32
*pSampleFormats
,
601 SLint32
*pNumOfSampleFormats
607 /*---------------------------------------------------------------------------*/
608 /* Capabilities of the LED array IODevice */
609 /*---------------------------------------------------------------------------*/
611 typedef struct SLLEDDescriptor_
{
618 /*---------------------------------------------------------------------------*/
619 /* LED Array interface */
620 /*---------------------------------------------------------------------------*/
622 typedef struct SLHSL_
{
624 SLpermille saturation
;
625 SLpermille lightness
;
629 extern SL_API
const SLInterfaceID SL_IID_LED
;
631 struct SLLEDArrayItf_
;
632 typedef const struct SLLEDArrayItf_
* const * SLLEDArrayItf
;
634 struct SLLEDArrayItf_
{
635 SLresult (*ActivateLEDArray
) (
639 SLresult (*IsLEDArrayActivated
) (
643 SLresult (*SetColor
) (
648 SLresult (*GetColor
) (
655 /*---------------------------------------------------------------------------*/
656 /* Capabilities of the Vibra IODevice */
657 /*---------------------------------------------------------------------------*/
659 typedef struct SLVibraDescriptor_
{
660 SLboolean supportsFrequency
;
661 SLboolean supportsIntensity
;
662 SLmilliHertz minFrequency
;
663 SLmilliHertz maxFrequency
;
668 /*---------------------------------------------------------------------------*/
669 /* Vibra interface */
670 /*---------------------------------------------------------------------------*/
673 extern SL_API
const SLInterfaceID SL_IID_VIBRA
;
677 typedef const struct SLVibraItf_
* const * SLVibraItf
;
680 SLresult (*Vibrate
) (
684 SLresult (*IsVibrating
) (
686 SLboolean
*pVibrating
688 SLresult (*SetFrequency
) (
690 SLmilliHertz frequency
692 SLresult (*GetFrequency
) (
694 SLmilliHertz
*pFrequency
696 SLresult (*SetIntensity
) (
700 SLresult (*GetIntensity
) (
702 SLpermille
*pIntensity
707 /*---------------------------------------------------------------------------*/
708 /* Meta data extraction related types and interface */
709 /*---------------------------------------------------------------------------*/
711 #define SL_CHARACTERENCODING_UNKNOWN ((SLuint32) 0x00000000)
712 #define SL_CHARACTERENCODING_BINARY ((SLuint32) 0x00000001)
713 #define SL_CHARACTERENCODING_ASCII ((SLuint32) 0x00000002)
714 #define SL_CHARACTERENCODING_BIG5 ((SLuint32) 0x00000003)
715 #define SL_CHARACTERENCODING_CODEPAGE1252 ((SLuint32) 0x00000004)
716 #define SL_CHARACTERENCODING_GB2312 ((SLuint32) 0x00000005)
717 #define SL_CHARACTERENCODING_HZGB2312 ((SLuint32) 0x00000006)
718 #define SL_CHARACTERENCODING_GB12345 ((SLuint32) 0x00000007)
719 #define SL_CHARACTERENCODING_GB18030 ((SLuint32) 0x00000008)
720 #define SL_CHARACTERENCODING_GBK ((SLuint32) 0x00000009)
721 #define SL_CHARACTERENCODING_IMAPUTF7 ((SLuint32) 0x0000000A)
722 #define SL_CHARACTERENCODING_ISO2022JP ((SLuint32) 0x0000000B)
723 #define SL_CHARACTERENCODING_ISO2022JP1 ((SLuint32) 0x0000000B)
724 #define SL_CHARACTERENCODING_ISO88591 ((SLuint32) 0x0000000C)
725 #define SL_CHARACTERENCODING_ISO885910 ((SLuint32) 0x0000000D)
726 #define SL_CHARACTERENCODING_ISO885913 ((SLuint32) 0x0000000E)
727 #define SL_CHARACTERENCODING_ISO885914 ((SLuint32) 0x0000000F)
728 #define SL_CHARACTERENCODING_ISO885915 ((SLuint32) 0x00000010)
729 #define SL_CHARACTERENCODING_ISO88592 ((SLuint32) 0x00000011)
730 #define SL_CHARACTERENCODING_ISO88593 ((SLuint32) 0x00000012)
731 #define SL_CHARACTERENCODING_ISO88594 ((SLuint32) 0x00000013)
732 #define SL_CHARACTERENCODING_ISO88595 ((SLuint32) 0x00000014)
733 #define SL_CHARACTERENCODING_ISO88596 ((SLuint32) 0x00000015)
734 #define SL_CHARACTERENCODING_ISO88597 ((SLuint32) 0x00000016)
735 #define SL_CHARACTERENCODING_ISO88598 ((SLuint32) 0x00000017)
736 #define SL_CHARACTERENCODING_ISO88599 ((SLuint32) 0x00000018)
737 #define SL_CHARACTERENCODING_ISOEUCJP ((SLuint32) 0x00000019)
738 #define SL_CHARACTERENCODING_SHIFTJIS ((SLuint32) 0x0000001A)
739 #define SL_CHARACTERENCODING_SMS7BIT ((SLuint32) 0x0000001B)
740 #define SL_CHARACTERENCODING_UTF7 ((SLuint32) 0x0000001C)
741 #define SL_CHARACTERENCODING_UTF8 ((SLuint32) 0x0000001D)
742 #define SL_CHARACTERENCODING_JAVACONFORMANTUTF8 ((SLuint32) 0x0000001E)
743 #define SL_CHARACTERENCODING_UTF16BE ((SLuint32) 0x0000001F)
744 #define SL_CHARACTERENCODING_UTF16LE ((SLuint32) 0x00000020)
747 #define SL_METADATA_FILTER_KEY ((SLuint8) 0x01)
748 #define SL_METADATA_FILTER_LANG ((SLuint8) 0x02)
749 #define SL_METADATA_FILTER_ENCODING ((SLuint8) 0x04)
752 typedef struct SLMetadataInfo_
{
755 SLchar langCountry
[16];
759 extern SL_API
const SLInterfaceID SL_IID_METADATAEXTRACTION
;
761 struct SLMetadataExtractionItf_
;
762 typedef const struct SLMetadataExtractionItf_
* const * SLMetadataExtractionItf
;
765 struct SLMetadataExtractionItf_
{
766 SLresult (*GetItemCount
) (
767 SLMetadataExtractionItf self
,
770 SLresult (*GetKeySize
) (
771 SLMetadataExtractionItf self
,
776 SLMetadataExtractionItf self
,
781 SLresult (*GetValueSize
) (
782 SLMetadataExtractionItf self
,
786 SLresult (*GetValue
) (
787 SLMetadataExtractionItf self
,
790 SLMetadataInfo
*pValue
792 SLresult (*AddKeyFilter
) (
793 SLMetadataExtractionItf self
,
796 SLuint32 keyEncoding
,
797 const SLchar
*pValueLangCountry
,
798 SLuint32 valueEncoding
,
801 SLresult (*ClearKeyFilter
) (
802 SLMetadataExtractionItf self
807 /*---------------------------------------------------------------------------*/
808 /* Meta data traversal related types and interface */
809 /*---------------------------------------------------------------------------*/
811 #define SL_METADATATRAVERSALMODE_ALL ((SLuint32) 0x00000001)
812 #define SL_METADATATRAVERSALMODE_NODE ((SLuint32) 0x00000002)
815 #define SL_NODETYPE_UNSPECIFIED ((SLuint32) 0x00000001)
816 #define SL_NODETYPE_AUDIO ((SLuint32) 0x00000002)
817 #define SL_NODETYPE_VIDEO ((SLuint32) 0x00000003)
818 #define SL_NODETYPE_IMAGE ((SLuint32) 0x00000004)
820 #define SL_NODE_PARENT 0xFFFFFFFF
822 extern SL_API
const SLInterfaceID SL_IID_METADATATRAVERSAL
;
824 struct SLMetadataTraversalItf_
;
825 typedef const struct SLMetadataTraversalItf_
* const * SLMetadataTraversalItf
;
827 struct SLMetadataTraversalItf_
{
828 SLresult (*SetMode
) (
829 SLMetadataTraversalItf self
,
832 SLresult (*GetChildCount
) (
833 SLMetadataTraversalItf self
,
836 SLresult (*GetChildMIMETypeSize
) (
837 SLMetadataTraversalItf self
,
841 SLresult (*GetChildInfo
) (
842 SLMetadataTraversalItf self
,
849 SLresult (*SetActiveNode
) (
850 SLMetadataTraversalItf self
,
855 /*---------------------------------------------------------------------------*/
856 /* Dynamic Source types and interface */
857 /*---------------------------------------------------------------------------*/
859 extern SL_API
const SLInterfaceID SL_IID_DYNAMICSOURCE
;
861 struct SLDynamicSourceItf_
;
862 typedef const struct SLDynamicSourceItf_
* const * SLDynamicSourceItf
;
864 struct SLDynamicSourceItf_
{
865 SLresult (*SetSource
) (
866 SLDynamicSourceItf self
,
867 SLDataSource
*pDataSource
871 /*---------------------------------------------------------------------------*/
872 /* Output Mix interface */
873 /*---------------------------------------------------------------------------*/
875 extern SL_API
const SLInterfaceID SL_IID_OUTPUTMIX
;
877 struct SLOutputMixItf_
;
878 typedef const struct SLOutputMixItf_
* const * SLOutputMixItf
;
880 typedef void (SLAPIENTRY
*slMixDeviceChangeCallback
) (
881 SLOutputMixItf caller
,
886 struct SLOutputMixItf_
{
887 SLresult (*GetDestinationOutputDeviceIDs
) (
889 SLint32
*pNumDevices
,
892 SLresult (*RegisterDeviceChangeCallback
) (
894 slMixDeviceChangeCallback callback
,
899 SLint32 numOutputDevices
,
900 SLuint32
*pOutputDeviceIDs
905 /*---------------------------------------------------------------------------*/
906 /* Playback interface */
907 /*---------------------------------------------------------------------------*/
909 /** Playback states */
910 #define SL_PLAYSTATE_STOPPED ((SLuint32) 0x00000001)
911 #define SL_PLAYSTATE_PAUSED ((SLuint32) 0x00000002)
912 #define SL_PLAYSTATE_PLAYING ((SLuint32) 0x00000003)
915 #define SL_PLAYEVENT_HEADATEND ((SLuint32) 0x00000001)
916 #define SL_PLAYEVENT_HEADATMARKER ((SLuint32) 0x00000002)
917 #define SL_PLAYEVENT_HEADATNEWPOS ((SLuint32) 0x00000004)
918 #define SL_PLAYEVENT_HEADMOVING ((SLuint32) 0x00000008)
919 #define SL_PLAYEVENT_HEADSTALLED ((SLuint32) 0x00000010)
921 #define SL_TIME_UNKNOWN ((SLuint32) 0xFFFFFFFF)
924 extern SL_API
const SLInterfaceID SL_IID_PLAY
;
926 /** Playback interface methods */
929 typedef const struct SLPlayItf_
* const * SLPlayItf
;
931 typedef void (SLAPIENTRY
*slPlayCallback
) (
938 SLresult (*SetPlayState
) (
942 SLresult (*GetPlayState
) (
946 SLresult (*GetDuration
) (
950 SLresult (*GetPosition
) (
954 SLresult (*RegisterCallback
) (
956 slPlayCallback callback
,
959 SLresult (*SetCallbackEventsMask
) (
963 SLresult (*GetCallbackEventsMask
) (
965 SLuint32
*pEventFlags
967 SLresult (*SetMarkerPosition
) (
971 SLresult (*ClearMarkerPosition
) (
974 SLresult (*GetMarkerPosition
) (
978 SLresult (*SetPositionUpdatePeriod
) (
982 SLresult (*GetPositionUpdatePeriod
) (
988 /*---------------------------------------------------------------------------*/
989 /* Prefetch status interface */
990 /*---------------------------------------------------------------------------*/
992 #define SL_PREFETCHEVENT_STATUSCHANGE ((SLuint32) 0x00000001)
993 #define SL_PREFETCHEVENT_FILLLEVELCHANGE ((SLuint32) 0x00000002)
995 #define SL_PREFETCHSTATUS_UNDERFLOW ((SLuint32) 0x00000001)
996 #define SL_PREFETCHSTATUS_SUFFICIENTDATA ((SLuint32) 0x00000002)
997 #define SL_PREFETCHSTATUS_OVERFLOW ((SLuint32) 0x00000003)
1000 extern SL_API
const SLInterfaceID SL_IID_PREFETCHSTATUS
;
1003 /** Prefetch status interface methods */
1005 struct SLPrefetchStatusItf_
;
1006 typedef const struct SLPrefetchStatusItf_
* const * SLPrefetchStatusItf
;
1008 typedef void (SLAPIENTRY
*slPrefetchCallback
) (
1009 SLPrefetchStatusItf caller
,
1014 struct SLPrefetchStatusItf_
{
1015 SLresult (*GetPrefetchStatus
) (
1016 SLPrefetchStatusItf self
,
1019 SLresult (*GetFillLevel
) (
1020 SLPrefetchStatusItf self
,
1023 SLresult (*RegisterCallback
) (
1024 SLPrefetchStatusItf self
,
1025 slPrefetchCallback callback
,
1028 SLresult (*SetCallbackEventsMask
) (
1029 SLPrefetchStatusItf self
,
1032 SLresult (*GetCallbackEventsMask
) (
1033 SLPrefetchStatusItf self
,
1034 SLuint32
*pEventFlags
1036 SLresult (*SetFillUpdatePeriod
) (
1037 SLPrefetchStatusItf self
,
1040 SLresult (*GetFillUpdatePeriod
) (
1041 SLPrefetchStatusItf self
,
1046 /*---------------------------------------------------------------------------*/
1047 /* Playback Rate interface */
1048 /*---------------------------------------------------------------------------*/
1050 #define SL_RATEPROP_RESERVED1 ((SLuint32) 0x00000001)
1051 #define SL_RATEPROP_RESERVED2 ((SLuint32) 0x00000002)
1052 #define SL_RATEPROP_SILENTAUDIO ((SLuint32) 0x00000100)
1053 #define SL_RATEPROP_STAGGEREDAUDIO ((SLuint32) 0x00000200)
1054 #define SL_RATEPROP_NOPITCHCORAUDIO ((SLuint32) 0x00000400)
1055 #define SL_RATEPROP_PITCHCORAUDIO ((SLuint32) 0x00000800)
1058 extern SL_API
const SLInterfaceID SL_IID_PLAYBACKRATE
;
1060 struct SLPlaybackRateItf_
;
1061 typedef const struct SLPlaybackRateItf_
* const * SLPlaybackRateItf
;
1063 struct SLPlaybackRateItf_
{
1064 SLresult (*SetRate
)(
1065 SLPlaybackRateItf self
,
1068 SLresult (*GetRate
)(
1069 SLPlaybackRateItf self
,
1072 SLresult (*SetPropertyConstraints
)(
1073 SLPlaybackRateItf self
,
1074 SLuint32 constraints
1076 SLresult (*GetProperties
)(
1077 SLPlaybackRateItf self
,
1078 SLuint32
*pProperties
1080 SLresult (*GetCapabilitiesOfRate
)(
1081 SLPlaybackRateItf self
,
1083 SLuint32
*pCapabilities
1085 SLresult (*GetRateRange
) (
1086 SLPlaybackRateItf self
,
1088 SLpermille
*pMinRate
,
1089 SLpermille
*pMaxRate
,
1090 SLpermille
*pStepSize
,
1091 SLuint32
*pCapabilities
1095 /*---------------------------------------------------------------------------*/
1096 /* Seek Interface */
1097 /*---------------------------------------------------------------------------*/
1099 #define SL_SEEKMODE_FAST ((SLuint32) 0x0001)
1100 #define SL_SEEKMODE_ACCURATE ((SLuint32) 0x0002)
1102 extern SL_API
const SLInterfaceID SL_IID_SEEK
;
1105 typedef const struct SLSeekItf_
* const * SLSeekItf
;
1108 SLresult (*SetPosition
)(
1113 SLresult (*SetLoop
)(
1115 SLboolean loopEnable
,
1116 SLmillisecond startPos
,
1117 SLmillisecond endPos
1119 SLresult (*GetLoop
)(
1121 SLboolean
*pLoopEnabled
,
1122 SLmillisecond
*pStartPos
,
1123 SLmillisecond
*pEndPos
1127 /*---------------------------------------------------------------------------*/
1128 /* Standard Recording Interface */
1129 /*---------------------------------------------------------------------------*/
1131 /** Recording states */
1132 #define SL_RECORDSTATE_STOPPED ((SLuint32) 0x00000001)
1133 #define SL_RECORDSTATE_PAUSED ((SLuint32) 0x00000002)
1134 #define SL_RECORDSTATE_RECORDING ((SLuint32) 0x00000003)
1137 /** Record event **/
1138 #define SL_RECORDEVENT_HEADATLIMIT ((SLuint32) 0x00000001)
1139 #define SL_RECORDEVENT_HEADATMARKER ((SLuint32) 0x00000002)
1140 #define SL_RECORDEVENT_HEADATNEWPOS ((SLuint32) 0x00000004)
1141 #define SL_RECORDEVENT_HEADMOVING ((SLuint32) 0x00000008)
1142 #define SL_RECORDEVENT_HEADSTALLED ((SLuint32) 0x00000010)
1143 /* Note: SL_RECORDEVENT_BUFFER_INSUFFICIENT is deprecated, use SL_RECORDEVENT_BUFFER_FULL instead. */
1144 #define SL_RECORDEVENT_BUFFER_INSUFFICIENT ((SLuint32) 0x00000020)
1145 #define SL_RECORDEVENT_BUFFER_FULL ((SLuint32) 0x00000020)
1148 extern SL_API
const SLInterfaceID SL_IID_RECORD
;
1150 struct SLRecordItf_
;
1151 typedef const struct SLRecordItf_
* const * SLRecordItf
;
1153 typedef void (SLAPIENTRY
*slRecordCallback
) (
1159 /** Recording interface methods */
1160 struct SLRecordItf_
{
1161 SLresult (*SetRecordState
) (
1165 SLresult (*GetRecordState
) (
1169 SLresult (*SetDurationLimit
) (
1173 SLresult (*GetPosition
) (
1175 SLmillisecond
*pMsec
1177 SLresult (*RegisterCallback
) (
1179 slRecordCallback callback
,
1182 SLresult (*SetCallbackEventsMask
) (
1186 SLresult (*GetCallbackEventsMask
) (
1188 SLuint32
*pEventFlags
1190 SLresult (*SetMarkerPosition
) (
1194 SLresult (*ClearMarkerPosition
) (
1197 SLresult (*GetMarkerPosition
) (
1199 SLmillisecond
*pMsec
1201 SLresult (*SetPositionUpdatePeriod
) (
1205 SLresult (*GetPositionUpdatePeriod
) (
1207 SLmillisecond
*pMsec
1211 /*---------------------------------------------------------------------------*/
1212 /* Equalizer interface */
1213 /*---------------------------------------------------------------------------*/
1215 #define SL_EQUALIZER_UNDEFINED ((SLuint16) 0xFFFF)
1217 extern SL_API
const SLInterfaceID SL_IID_EQUALIZER
;
1219 struct SLEqualizerItf_
;
1220 typedef const struct SLEqualizerItf_
* const * SLEqualizerItf
;
1222 struct SLEqualizerItf_
{
1223 SLresult (*SetEnabled
)(
1224 SLEqualizerItf self
,
1227 SLresult (*IsEnabled
)(
1228 SLEqualizerItf self
,
1231 SLresult (*GetNumberOfBands
)(
1232 SLEqualizerItf self
,
1235 SLresult (*GetBandLevelRange
)(
1236 SLEqualizerItf self
,
1240 SLresult (*SetBandLevel
)(
1241 SLEqualizerItf self
,
1245 SLresult (*GetBandLevel
)(
1246 SLEqualizerItf self
,
1250 SLresult (*GetCenterFreq
)(
1251 SLEqualizerItf self
,
1253 SLmilliHertz
*pCenter
1255 SLresult (*GetBandFreqRange
)(
1256 SLEqualizerItf self
,
1261 SLresult (*GetBand
)(
1262 SLEqualizerItf self
,
1263 SLmilliHertz frequency
,
1266 SLresult (*GetCurrentPreset
)(
1267 SLEqualizerItf self
,
1270 SLresult (*UsePreset
)(
1271 SLEqualizerItf self
,
1274 SLresult (*GetNumberOfPresets
)(
1275 SLEqualizerItf self
,
1276 SLuint16
*pNumPresets
1278 SLresult (*GetPresetName
)(
1279 SLEqualizerItf self
,
1281 const SLchar
** ppName
1285 /*---------------------------------------------------------------------------*/
1286 /* Volume Interface */
1287 /* --------------------------------------------------------------------------*/
1289 extern SL_API
const SLInterfaceID SL_IID_VOLUME
;
1291 struct SLVolumeItf_
;
1292 typedef const struct SLVolumeItf_
* const * SLVolumeItf
;
1294 struct SLVolumeItf_
{
1295 SLresult (*SetVolumeLevel
) (
1299 SLresult (*GetVolumeLevel
) (
1303 SLresult (*GetMaxVolumeLevel
) (
1305 SLmillibel
*pMaxLevel
1307 SLresult (*SetMute
) (
1311 SLresult (*GetMute
) (
1315 SLresult (*EnableStereoPosition
) (
1319 SLresult (*IsEnabledStereoPosition
) (
1323 SLresult (*SetStereoPosition
) (
1325 SLpermille stereoPosition
1327 SLresult (*GetStereoPosition
) (
1329 SLpermille
*pStereoPosition
1334 /*---------------------------------------------------------------------------*/
1335 /* Device Volume Interface */
1336 /* --------------------------------------------------------------------------*/
1338 extern SL_API
const SLInterfaceID SL_IID_DEVICEVOLUME
;
1340 struct SLDeviceVolumeItf_
;
1341 typedef const struct SLDeviceVolumeItf_
* const * SLDeviceVolumeItf
;
1343 struct SLDeviceVolumeItf_
{
1344 SLresult (*GetVolumeScale
) (
1345 SLDeviceVolumeItf self
,
1349 SLboolean
*pIsMillibelScale
1351 SLresult (*SetVolume
) (
1352 SLDeviceVolumeItf self
,
1356 SLresult (*GetVolume
) (
1357 SLDeviceVolumeItf self
,
1364 /*---------------------------------------------------------------------------*/
1365 /* Buffer Queue Interface */
1366 /*---------------------------------------------------------------------------*/
1368 extern SL_API
const SLInterfaceID SL_IID_BUFFERQUEUE
;
1370 struct SLBufferQueueItf_
;
1371 typedef const struct SLBufferQueueItf_
* const * SLBufferQueueItf
;
1373 typedef void (SLAPIENTRY
*slBufferQueueCallback
)(
1374 SLBufferQueueItf caller
,
1378 /** Buffer queue state **/
1380 typedef struct SLBufferQueueState_
{
1383 } SLBufferQueueState
;
1386 struct SLBufferQueueItf_
{
1387 SLresult (*Enqueue
) (
1388 SLBufferQueueItf self
,
1389 const void *pBuffer
,
1393 SLBufferQueueItf self
1395 SLresult (*GetState
) (
1396 SLBufferQueueItf self
,
1397 SLBufferQueueState
*pState
1399 SLresult (*RegisterCallback
) (
1400 SLBufferQueueItf self
,
1401 slBufferQueueCallback callback
,
1407 /*---------------------------------------------------------------------------*/
1409 /*---------------------------------------------------------------------------*/
1411 #define SL_REVERBPRESET_NONE ((SLuint16) 0x0000)
1412 #define SL_REVERBPRESET_SMALLROOM ((SLuint16) 0x0001)
1413 #define SL_REVERBPRESET_MEDIUMROOM ((SLuint16) 0x0002)
1414 #define SL_REVERBPRESET_LARGEROOM ((SLuint16) 0x0003)
1415 #define SL_REVERBPRESET_MEDIUMHALL ((SLuint16) 0x0004)
1416 #define SL_REVERBPRESET_LARGEHALL ((SLuint16) 0x0005)
1417 #define SL_REVERBPRESET_PLATE ((SLuint16) 0x0006)
1420 extern SL_API
const SLInterfaceID SL_IID_PRESETREVERB
;
1422 struct SLPresetReverbItf_
;
1423 typedef const struct SLPresetReverbItf_
* const * SLPresetReverbItf
;
1425 struct SLPresetReverbItf_
{
1426 SLresult (*SetPreset
) (
1427 SLPresetReverbItf self
,
1430 SLresult (*GetPreset
) (
1431 SLPresetReverbItf self
,
1437 /*---------------------------------------------------------------------------*/
1438 /* EnvironmentalReverb */
1439 /*---------------------------------------------------------------------------*/
1441 #define SL_I3DL2_ENVIRONMENT_PRESET_DEFAULT \
1442 { SL_MILLIBEL_MIN, 0, 1000, 500, SL_MILLIBEL_MIN, 20, SL_MILLIBEL_MIN, 40, 1000,1000 }
1443 #define SL_I3DL2_ENVIRONMENT_PRESET_GENERIC \
1444 { -1000, -100, 1490, 830, -2602, 7, 200, 11, 1000,1000 }
1445 #define SL_I3DL2_ENVIRONMENT_PRESET_PADDEDCELL \
1446 { -1000,-6000, 170, 100, -1204, 1, 207, 2, 1000,1000 }
1447 #define SL_I3DL2_ENVIRONMENT_PRESET_ROOM \
1448 { -1000, -454, 400, 830, -1646, 2, 53, 3, 1000,1000 }
1449 #define SL_I3DL2_ENVIRONMENT_PRESET_BATHROOM \
1450 { -1000,-1200, 1490, 540, -370, 7, 1030, 11, 1000, 600 }
1451 #define SL_I3DL2_ENVIRONMENT_PRESET_LIVINGROOM \
1452 { -1000,-6000, 500, 100, -1376, 3, -1104, 4, 1000,1000 }
1453 #define SL_I3DL2_ENVIRONMENT_PRESET_STONEROOM \
1454 { -1000, -300, 2310, 640, -711, 12, 83, 17, 1000,1000 }
1455 #define SL_I3DL2_ENVIRONMENT_PRESET_AUDITORIUM \
1456 { -1000, -476, 4320, 590, -789, 20, -289, 30, 1000,1000 }
1457 #define SL_I3DL2_ENVIRONMENT_PRESET_CONCERTHALL \
1458 { -1000, -500, 3920, 700, -1230, 20, -2, 29, 1000,1000 }
1459 #define SL_I3DL2_ENVIRONMENT_PRESET_CAVE \
1460 { -1000, 0, 2910, 1300, -602, 15, -302, 22, 1000,1000 }
1461 #define SL_I3DL2_ENVIRONMENT_PRESET_ARENA \
1462 { -1000, -698, 7240, 330, -1166, 20, 16, 30, 1000,1000 }
1463 #define SL_I3DL2_ENVIRONMENT_PRESET_HANGAR \
1464 { -1000,-1000, 10050, 230, -602, 20, 198, 30, 1000,1000 }
1465 #define SL_I3DL2_ENVIRONMENT_PRESET_CARPETEDHALLWAY \
1466 { -1000,-4000, 300, 100, -1831, 2, -1630, 30, 1000,1000 }
1467 #define SL_I3DL2_ENVIRONMENT_PRESET_HALLWAY \
1468 { -1000, -300, 1490, 590, -1219, 7, 441, 11, 1000,1000 }
1469 #define SL_I3DL2_ENVIRONMENT_PRESET_STONECORRIDOR \
1470 { -1000, -237, 2700, 790, -1214, 13, 395, 20, 1000,1000 }
1471 #define SL_I3DL2_ENVIRONMENT_PRESET_ALLEY \
1472 { -1000, -270, 1490, 860, -1204, 7, -4, 11, 1000,1000 }
1473 #define SL_I3DL2_ENVIRONMENT_PRESET_FOREST \
1474 { -1000,-3300, 1490, 540, -2560, 162, -613, 88, 790,1000 }
1475 #define SL_I3DL2_ENVIRONMENT_PRESET_CITY \
1476 { -1000, -800, 1490, 670, -2273, 7, -2217, 11, 500,1000 }
1477 #define SL_I3DL2_ENVIRONMENT_PRESET_MOUNTAINS \
1478 { -1000,-2500, 1490, 210, -2780, 300, -2014, 100, 270,1000 }
1479 #define SL_I3DL2_ENVIRONMENT_PRESET_QUARRY \
1480 { -1000,-1000, 1490, 830, SL_MILLIBEL_MIN, 61, 500, 25, 1000,1000 }
1481 #define SL_I3DL2_ENVIRONMENT_PRESET_PLAIN \
1482 { -1000,-2000, 1490, 500, -2466, 179, -2514, 100, 210,1000 }
1483 #define SL_I3DL2_ENVIRONMENT_PRESET_PARKINGLOT \
1484 { -1000, 0, 1650, 1500, -1363, 8, -1153, 12, 1000,1000 }
1485 #define SL_I3DL2_ENVIRONMENT_PRESET_SEWERPIPE \
1486 { -1000,-1000, 2810, 140, 429, 14, 648, 21, 800, 600 }
1487 #define SL_I3DL2_ENVIRONMENT_PRESET_UNDERWATER \
1488 { -1000,-4000, 1490, 100, -449, 7, 1700, 11, 1000,1000 }
1489 #define SL_I3DL2_ENVIRONMENT_PRESET_SMALLROOM \
1490 { -1000,-600, 1100, 830, -400, 5, 500, 10, 1000, 1000 }
1491 #define SL_I3DL2_ENVIRONMENT_PRESET_MEDIUMROOM \
1492 { -1000,-600, 1300, 830, -1000, 20, -200, 20, 1000, 1000 }
1493 #define SL_I3DL2_ENVIRONMENT_PRESET_LARGEROOM \
1494 { -1000,-600, 1500, 830, -1600, 5, -1000, 40, 1000, 1000 }
1495 #define SL_I3DL2_ENVIRONMENT_PRESET_MEDIUMHALL \
1496 { -1000,-600, 1800, 700, -1300, 15, -800, 30, 1000, 1000 }
1497 #define SL_I3DL2_ENVIRONMENT_PRESET_LARGEHALL \
1498 { -1000,-600, 1800, 700, -2000, 30, -1400, 60, 1000, 1000 }
1499 #define SL_I3DL2_ENVIRONMENT_PRESET_PLATE \
1500 { -1000,-200, 1300, 900, 0, 2, 0, 10, 1000, 750 }
1503 typedef struct SLEnvironmentalReverbSettings_
{
1504 SLmillibel roomLevel
;
1505 SLmillibel roomHFLevel
;
1506 SLmillisecond decayTime
;
1507 SLpermille decayHFRatio
;
1508 SLmillibel reflectionsLevel
;
1509 SLmillisecond reflectionsDelay
;
1510 SLmillibel reverbLevel
;
1511 SLmillisecond reverbDelay
;
1512 SLpermille diffusion
;
1514 } SLEnvironmentalReverbSettings
;
1519 extern SL_API
const SLInterfaceID SL_IID_ENVIRONMENTALREVERB
;
1522 struct SLEnvironmentalReverbItf_
;
1523 typedef const struct SLEnvironmentalReverbItf_
* const * SLEnvironmentalReverbItf
;
1525 struct SLEnvironmentalReverbItf_
{
1526 SLresult (*SetRoomLevel
) (
1527 SLEnvironmentalReverbItf self
,
1530 SLresult (*GetRoomLevel
) (
1531 SLEnvironmentalReverbItf self
,
1534 SLresult (*SetRoomHFLevel
) (
1535 SLEnvironmentalReverbItf self
,
1538 SLresult (*GetRoomHFLevel
) (
1539 SLEnvironmentalReverbItf self
,
1542 SLresult (*SetDecayTime
) (
1543 SLEnvironmentalReverbItf self
,
1544 SLmillisecond decayTime
1546 SLresult (*GetDecayTime
) (
1547 SLEnvironmentalReverbItf self
,
1548 SLmillisecond
*pDecayTime
1550 SLresult (*SetDecayHFRatio
) (
1551 SLEnvironmentalReverbItf self
,
1552 SLpermille decayHFRatio
1554 SLresult (*GetDecayHFRatio
) (
1555 SLEnvironmentalReverbItf self
,
1556 SLpermille
*pDecayHFRatio
1558 SLresult (*SetReflectionsLevel
) (
1559 SLEnvironmentalReverbItf self
,
1560 SLmillibel reflectionsLevel
1562 SLresult (*GetReflectionsLevel
) (
1563 SLEnvironmentalReverbItf self
,
1564 SLmillibel
*pReflectionsLevel
1566 SLresult (*SetReflectionsDelay
) (
1567 SLEnvironmentalReverbItf self
,
1568 SLmillisecond reflectionsDelay
1570 SLresult (*GetReflectionsDelay
) (
1571 SLEnvironmentalReverbItf self
,
1572 SLmillisecond
*pReflectionsDelay
1574 SLresult (*SetReverbLevel
) (
1575 SLEnvironmentalReverbItf self
,
1576 SLmillibel reverbLevel
1578 SLresult (*GetReverbLevel
) (
1579 SLEnvironmentalReverbItf self
,
1580 SLmillibel
*pReverbLevel
1582 SLresult (*SetReverbDelay
) (
1583 SLEnvironmentalReverbItf self
,
1584 SLmillisecond reverbDelay
1586 SLresult (*GetReverbDelay
) (
1587 SLEnvironmentalReverbItf self
,
1588 SLmillisecond
*pReverbDelay
1590 SLresult (*SetDiffusion
) (
1591 SLEnvironmentalReverbItf self
,
1592 SLpermille diffusion
1594 SLresult (*GetDiffusion
) (
1595 SLEnvironmentalReverbItf self
,
1596 SLpermille
*pDiffusion
1598 SLresult (*SetDensity
) (
1599 SLEnvironmentalReverbItf self
,
1602 SLresult (*GetDensity
) (
1603 SLEnvironmentalReverbItf self
,
1604 SLpermille
*pDensity
1606 SLresult (*SetEnvironmentalReverbProperties
) (
1607 SLEnvironmentalReverbItf self
,
1608 const SLEnvironmentalReverbSettings
*pProperties
1610 SLresult (*GetEnvironmentalReverbProperties
) (
1611 SLEnvironmentalReverbItf self
,
1612 SLEnvironmentalReverbSettings
*pProperties
1616 /*---------------------------------------------------------------------------*/
1617 /* Effects Send Interface */
1618 /*---------------------------------------------------------------------------*/
1621 extern SL_API
const SLInterfaceID SL_IID_EFFECTSEND
;
1623 struct SLEffectSendItf_
;
1624 typedef const struct SLEffectSendItf_
* const * SLEffectSendItf
;
1626 struct SLEffectSendItf_
{
1627 SLresult (*EnableEffectSend
) (
1628 SLEffectSendItf self
,
1629 const void *pAuxEffect
,
1631 SLmillibel initialLevel
1633 SLresult (*IsEnabled
) (
1634 SLEffectSendItf self
,
1635 const void * pAuxEffect
,
1638 SLresult (*SetDirectLevel
) (
1639 SLEffectSendItf self
,
1640 SLmillibel directLevel
1642 SLresult (*GetDirectLevel
) (
1643 SLEffectSendItf self
,
1644 SLmillibel
*pDirectLevel
1646 SLresult (*SetSendLevel
) (
1647 SLEffectSendItf self
,
1648 const void *pAuxEffect
,
1649 SLmillibel sendLevel
1651 SLresult (*GetSendLevel
)(
1652 SLEffectSendItf self
,
1653 const void *pAuxEffect
,
1654 SLmillibel
*pSendLevel
1659 /*---------------------------------------------------------------------------*/
1660 /* 3D Grouping Interface */
1661 /*---------------------------------------------------------------------------*/
1664 extern SL_API
const SLInterfaceID SL_IID_3DGROUPING
;
1667 struct SL3DGroupingItf_
;
1668 typedef const struct SL3DGroupingItf_
* const * SL3DGroupingItf
;
1670 struct SL3DGroupingItf_
{
1671 SLresult (*Set3DGroup
) (
1672 SL3DGroupingItf self
,
1675 SLresult (*Get3DGroup
) (
1676 SL3DGroupingItf self
,
1682 /*---------------------------------------------------------------------------*/
1683 /* 3D Commit Interface */
1684 /*---------------------------------------------------------------------------*/
1687 extern SL_API
const SLInterfaceID SL_IID_3DCOMMIT
;
1689 struct SL3DCommitItf_
;
1690 typedef const struct SL3DCommitItf_
* const * SL3DCommitItf
;
1692 struct SL3DCommitItf_
{
1693 SLresult (*Commit
) (
1696 SLresult (*SetDeferred
) (
1703 /*---------------------------------------------------------------------------*/
1704 /* 3D Location Interface */
1705 /*---------------------------------------------------------------------------*/
1707 typedef struct SLVec3D_
{
1713 extern SL_API
const SLInterfaceID SL_IID_3DLOCATION
;
1715 struct SL3DLocationItf_
;
1716 typedef const struct SL3DLocationItf_
* const * SL3DLocationItf
;
1718 struct SL3DLocationItf_
{
1719 SLresult (*SetLocationCartesian
) (
1720 SL3DLocationItf self
,
1721 const SLVec3D
*pLocation
1723 SLresult (*SetLocationSpherical
) (
1724 SL3DLocationItf self
,
1725 SLmillidegree azimuth
,
1726 SLmillidegree elevation
,
1727 SLmillimeter distance
1730 SL3DLocationItf self
,
1731 const SLVec3D
*pMovement
1733 SLresult (*GetLocationCartesian
) (
1734 SL3DLocationItf self
,
1737 SLresult (*SetOrientationVectors
) (
1738 SL3DLocationItf self
,
1739 const SLVec3D
*pFront
,
1740 const SLVec3D
*pAbove
1742 SLresult (*SetOrientationAngles
) (
1743 SL3DLocationItf self
,
1744 SLmillidegree heading
,
1745 SLmillidegree pitch
,
1748 SLresult (*Rotate
) (
1749 SL3DLocationItf self
,
1750 SLmillidegree theta
,
1751 const SLVec3D
*pAxis
1753 SLresult (*GetOrientationVectors
) (
1754 SL3DLocationItf self
,
1761 /*---------------------------------------------------------------------------*/
1762 /* 3D Doppler Interface */
1763 /*---------------------------------------------------------------------------*/
1766 extern SL_API
const SLInterfaceID SL_IID_3DDOPPLER
;
1768 struct SL3DDopplerItf_
;
1769 typedef const struct SL3DDopplerItf_
* const * SL3DDopplerItf
;
1771 struct SL3DDopplerItf_
{
1772 SLresult (*SetVelocityCartesian
) (
1773 SL3DDopplerItf self
,
1774 const SLVec3D
*pVelocity
1776 SLresult (*SetVelocitySpherical
) (
1777 SL3DDopplerItf self
,
1778 SLmillidegree azimuth
,
1779 SLmillidegree elevation
,
1782 SLresult (*GetVelocityCartesian
) (
1783 SL3DDopplerItf self
,
1786 SLresult (*SetDopplerFactor
) (
1787 SL3DDopplerItf self
,
1788 SLpermille dopplerFactor
1790 SLresult (*GetDopplerFactor
) (
1791 SL3DDopplerItf self
,
1792 SLpermille
*pDopplerFactor
1796 /*---------------------------------------------------------------------------*/
1797 /* 3D Source Interface and associated defines */
1798 /* --------------------------------------------------------------------------*/
1800 #define SL_ROLLOFFMODEL_EXPONENTIAL ((SLuint32) 0x00000000)
1801 #define SL_ROLLOFFMODEL_LINEAR ((SLuint32) 0x00000001)
1804 extern SL_API
const SLInterfaceID SL_IID_3DSOURCE
;
1806 struct SL3DSourceItf_
;
1807 typedef const struct SL3DSourceItf_
* const * SL3DSourceItf
;
1809 struct SL3DSourceItf_
{
1810 SLresult (*SetHeadRelative
) (
1812 SLboolean headRelative
1814 SLresult (*GetHeadRelative
) (
1816 SLboolean
*pHeadRelative
1818 SLresult (*SetRolloffDistances
) (
1820 SLmillimeter minDistance
,
1821 SLmillimeter maxDistance
1823 SLresult (*GetRolloffDistances
) (
1825 SLmillimeter
*pMinDistance
,
1826 SLmillimeter
*pMaxDistance
1828 SLresult (*SetRolloffMaxDistanceMute
) (
1832 SLresult (*GetRolloffMaxDistanceMute
) (
1836 SLresult (*SetRolloffFactor
) (
1838 SLpermille rolloffFactor
1840 SLresult (*GetRolloffFactor
) (
1842 SLpermille
*pRolloffFactor
1844 SLresult (*SetRoomRolloffFactor
) (
1846 SLpermille roomRolloffFactor
1848 SLresult (*GetRoomRolloffFactor
) (
1850 SLpermille
*pRoomRolloffFactor
1852 SLresult (*SetRolloffModel
) (
1856 SLresult (*GetRolloffModel
) (
1860 SLresult (*SetCone
) (
1862 SLmillidegree innerAngle
,
1863 SLmillidegree outerAngle
,
1864 SLmillibel outerLevel
1866 SLresult (*GetCone
) (
1868 SLmillidegree
*pInnerAngle
,
1869 SLmillidegree
*pOuterAngle
,
1870 SLmillibel
*pOuterLevel
1874 /*---------------------------------------------------------------------------*/
1875 /* 3D Macroscopic Interface */
1876 /* --------------------------------------------------------------------------*/
1878 extern SL_API
const SLInterfaceID SL_IID_3DMACROSCOPIC
;
1880 struct SL3DMacroscopicItf_
;
1881 typedef const struct SL3DMacroscopicItf_
* const * SL3DMacroscopicItf
;
1883 struct SL3DMacroscopicItf_
{
1884 SLresult (*SetSize
) (
1885 SL3DMacroscopicItf self
,
1887 SLmillimeter height
,
1890 SLresult (*GetSize
) (
1891 SL3DMacroscopicItf self
,
1892 SLmillimeter
*pWidth
,
1893 SLmillimeter
*pHeight
,
1894 SLmillimeter
*pDepth
1896 SLresult (*SetOrientationAngles
) (
1897 SL3DMacroscopicItf self
,
1898 SLmillidegree heading
,
1899 SLmillidegree pitch
,
1902 SLresult (*SetOrientationVectors
) (
1903 SL3DMacroscopicItf self
,
1904 const SLVec3D
*pFront
,
1905 const SLVec3D
*pAbove
1907 SLresult (*Rotate
) (
1908 SL3DMacroscopicItf self
,
1909 SLmillidegree theta
,
1910 const SLVec3D
*pAxis
1912 SLresult (*GetOrientationVectors
) (
1913 SL3DMacroscopicItf self
,
1919 /*---------------------------------------------------------------------------*/
1920 /* Mute Solo Interface */
1921 /* --------------------------------------------------------------------------*/
1924 extern SL_API
const SLInterfaceID SL_IID_MUTESOLO
;
1926 struct SLMuteSoloItf_
;
1927 typedef const struct SLMuteSoloItf_
* const * SLMuteSoloItf
;
1929 struct SLMuteSoloItf_
{
1930 SLresult (*SetChannelMute
) (
1935 SLresult (*GetChannelMute
) (
1940 SLresult (*SetChannelSolo
) (
1945 SLresult (*GetChannelSolo
) (
1950 SLresult (*GetNumChannels
) (
1952 SLuint8
*pNumChannels
1957 /*---------------------------------------------------------------------------*/
1958 /* Dynamic Interface Management Interface and associated types and macros */
1959 /* --------------------------------------------------------------------------*/
1961 #define SL_DYNAMIC_ITF_EVENT_RUNTIME_ERROR ((SLuint32) 0x00000001)
1962 #define SL_DYNAMIC_ITF_EVENT_ASYNC_TERMINATION ((SLuint32) 0x00000002)
1963 #define SL_DYNAMIC_ITF_EVENT_RESOURCES_LOST ((SLuint32) 0x00000003)
1964 #define SL_DYNAMIC_ITF_EVENT_RESOURCES_LOST_PERMANENTLY ((SLuint32) 0x00000004)
1965 #define SL_DYNAMIC_ITF_EVENT_RESOURCES_AVAILABLE ((SLuint32) 0x00000005)
1970 extern SL_API
const SLInterfaceID SL_IID_DYNAMICINTERFACEMANAGEMENT
;
1972 struct SLDynamicInterfaceManagementItf_
;
1973 typedef const struct SLDynamicInterfaceManagementItf_
* const * SLDynamicInterfaceManagementItf
;
1975 typedef void (SLAPIENTRY
*slDynamicInterfaceManagementCallback
) (
1976 SLDynamicInterfaceManagementItf caller
,
1980 const SLInterfaceID iid
1984 struct SLDynamicInterfaceManagementItf_
{
1985 SLresult (*AddInterface
) (
1986 SLDynamicInterfaceManagementItf self
,
1987 const SLInterfaceID iid
,
1990 SLresult (*RemoveInterface
) (
1991 SLDynamicInterfaceManagementItf self
,
1992 const SLInterfaceID iid
1994 SLresult (*ResumeInterface
) (
1995 SLDynamicInterfaceManagementItf self
,
1996 const SLInterfaceID iid
,
1999 SLresult (*RegisterCallback
) (
2000 SLDynamicInterfaceManagementItf self
,
2001 slDynamicInterfaceManagementCallback callback
,
2006 /*---------------------------------------------------------------------------*/
2007 /* Midi Message Interface and associated types */
2008 /* --------------------------------------------------------------------------*/
2010 #define SL_MIDIMESSAGETYPE_NOTE_ON_OFF ((SLuint32) 0x00000001)
2011 #define SL_MIDIMESSAGETYPE_POLY_PRESSURE ((SLuint32) 0x00000002)
2012 #define SL_MIDIMESSAGETYPE_CONTROL_CHANGE ((SLuint32) 0x00000003)
2013 #define SL_MIDIMESSAGETYPE_PROGRAM_CHANGE ((SLuint32) 0x00000004)
2014 #define SL_MIDIMESSAGETYPE_CHANNEL_PRESSURE ((SLuint32) 0x00000005)
2015 #define SL_MIDIMESSAGETYPE_PITCH_BEND ((SLuint32) 0x00000006)
2016 #define SL_MIDIMESSAGETYPE_SYSTEM_MESSAGE ((SLuint32) 0x00000007)
2019 extern SL_API
const SLInterfaceID SL_IID_MIDIMESSAGE
;
2021 struct SLMIDIMessageItf_
;
2022 typedef const struct SLMIDIMessageItf_
* const * SLMIDIMessageItf
;
2024 typedef void (SLAPIENTRY
*slMetaEventCallback
) (
2025 SLMIDIMessageItf caller
,
2029 const SLuint8
*pData
,
2034 typedef void (SLAPIENTRY
*slMIDIMessageCallback
) (
2035 SLMIDIMessageItf caller
,
2039 const SLuint8
*pData
,
2044 struct SLMIDIMessageItf_
{
2045 SLresult (*SendMessage
) (
2046 SLMIDIMessageItf self
,
2047 const SLuint8
*data
,
2050 SLresult (*RegisterMetaEventCallback
) (
2051 SLMIDIMessageItf self
,
2052 slMetaEventCallback callback
,
2055 SLresult (*RegisterMIDIMessageCallback
) (
2056 SLMIDIMessageItf self
,
2057 slMIDIMessageCallback callback
,
2060 SLresult (*AddMIDIMessageCallbackFilter
) (
2061 SLMIDIMessageItf self
,
2062 SLuint32 messageType
2064 SLresult (*ClearMIDIMessageCallbackFilter
) (
2065 SLMIDIMessageItf self
2070 /*---------------------------------------------------------------------------*/
2071 /* Midi Mute Solo interface */
2072 /* --------------------------------------------------------------------------*/
2075 extern SL_API
const SLInterfaceID SL_IID_MIDIMUTESOLO
;
2077 struct SLMIDIMuteSoloItf_
;
2078 typedef const struct SLMIDIMuteSoloItf_
* const * SLMIDIMuteSoloItf
;
2080 struct SLMIDIMuteSoloItf_
{
2081 SLresult (*SetChannelMute
) (
2082 SLMIDIMuteSoloItf self
,
2086 SLresult (*GetChannelMute
) (
2087 SLMIDIMuteSoloItf self
,
2091 SLresult (*SetChannelSolo
) (
2092 SLMIDIMuteSoloItf self
,
2096 SLresult (*GetChannelSolo
) (
2097 SLMIDIMuteSoloItf self
,
2101 SLresult (*GetTrackCount
) (
2102 SLMIDIMuteSoloItf self
,
2105 SLresult (*SetTrackMute
) (
2106 SLMIDIMuteSoloItf self
,
2110 SLresult (*GetTrackMute
) (
2111 SLMIDIMuteSoloItf self
,
2115 SLresult (*SetTrackSolo
) (
2116 SLMIDIMuteSoloItf self
,
2120 SLresult (*GetTrackSolo
) (
2121 SLMIDIMuteSoloItf self
,
2128 /*---------------------------------------------------------------------------*/
2129 /* Midi Tempo interface */
2130 /* --------------------------------------------------------------------------*/
2133 extern SL_API
const SLInterfaceID SL_IID_MIDITEMPO
;
2135 struct SLMIDITempoItf_
;
2136 typedef const struct SLMIDITempoItf_
* const * SLMIDITempoItf
;
2138 struct SLMIDITempoItf_
{
2139 SLresult (*SetTicksPerQuarterNote
) (
2140 SLMIDITempoItf self
,
2143 SLresult (*GetTicksPerQuarterNote
) (
2144 SLMIDITempoItf self
,
2147 SLresult (*SetMicrosecondsPerQuarterNote
) (
2148 SLMIDITempoItf self
,
2151 SLresult (*GetMicrosecondsPerQuarterNote
) (
2152 SLMIDITempoItf self
,
2153 SLmicrosecond
*uspqn
2158 /*---------------------------------------------------------------------------*/
2159 /* Midi Time interface */
2160 /* --------------------------------------------------------------------------*/
2163 extern SL_API
const SLInterfaceID SL_IID_MIDITIME
;
2165 struct SLMIDITimeItf_
;
2166 typedef const struct SLMIDITimeItf_
* const * SLMIDITimeItf
;
2168 struct SLMIDITimeItf_
{
2169 SLresult (*GetDuration
) (
2173 SLresult (*SetPosition
) (
2177 SLresult (*GetPosition
) (
2181 SLresult (*SetLoopPoints
) (
2186 SLresult (*GetLoopPoints
) (
2188 SLuint32
*pStartTick
,
2194 /*---------------------------------------------------------------------------*/
2195 /* Audio Decoder Capabilities Interface */
2196 /* --------------------------------------------------------------------------*/
2198 /*Audio Codec related defines*/
2200 #define SL_RATECONTROLMODE_CONSTANTBITRATE ((SLuint32) 0x00000001)
2201 #define SL_RATECONTROLMODE_VARIABLEBITRATE ((SLuint32) 0x00000002)
2203 #define SL_AUDIOCODEC_PCM ((SLuint32) 0x00000001)
2204 #define SL_AUDIOCODEC_MP3 ((SLuint32) 0x00000002)
2205 #define SL_AUDIOCODEC_AMR ((SLuint32) 0x00000003)
2206 #define SL_AUDIOCODEC_AMRWB ((SLuint32) 0x00000004)
2207 #define SL_AUDIOCODEC_AMRWBPLUS ((SLuint32) 0x00000005)
2208 #define SL_AUDIOCODEC_AAC ((SLuint32) 0x00000006)
2209 #define SL_AUDIOCODEC_WMA ((SLuint32) 0x00000007)
2210 #define SL_AUDIOCODEC_REAL ((SLuint32) 0x00000008)
2212 #define SL_AUDIOPROFILE_PCM ((SLuint32) 0x00000001)
2214 #define SL_AUDIOPROFILE_MPEG1_L3 ((SLuint32) 0x00000001)
2215 #define SL_AUDIOPROFILE_MPEG2_L3 ((SLuint32) 0x00000002)
2216 #define SL_AUDIOPROFILE_MPEG25_L3 ((SLuint32) 0x00000003)
2218 #define SL_AUDIOCHANMODE_MP3_MONO ((SLuint32) 0x00000001)
2219 #define SL_AUDIOCHANMODE_MP3_STEREO ((SLuint32) 0x00000002)
2220 #define SL_AUDIOCHANMODE_MP3_JOINTSTEREO ((SLuint32) 0x00000003)
2221 #define SL_AUDIOCHANMODE_MP3_DUAL ((SLuint32) 0x00000004)
2223 #define SL_AUDIOPROFILE_AMR ((SLuint32) 0x00000001)
2225 #define SL_AUDIOSTREAMFORMAT_CONFORMANCE ((SLuint32) 0x00000001)
2226 #define SL_AUDIOSTREAMFORMAT_IF1 ((SLuint32) 0x00000002)
2227 #define SL_AUDIOSTREAMFORMAT_IF2 ((SLuint32) 0x00000003)
2228 #define SL_AUDIOSTREAMFORMAT_FSF ((SLuint32) 0x00000004)
2229 #define SL_AUDIOSTREAMFORMAT_RTPPAYLOAD ((SLuint32) 0x00000005)
2230 #define SL_AUDIOSTREAMFORMAT_ITU ((SLuint32) 0x00000006)
2232 #define SL_AUDIOPROFILE_AMRWB ((SLuint32) 0x00000001)
2234 #define SL_AUDIOPROFILE_AMRWBPLUS ((SLuint32) 0x00000001)
2236 #define SL_AUDIOPROFILE_AAC_AAC ((SLuint32) 0x00000001)
2238 #define SL_AUDIOMODE_AAC_MAIN ((SLuint32) 0x00000001)
2239 #define SL_AUDIOMODE_AAC_LC ((SLuint32) 0x00000002)
2240 #define SL_AUDIOMODE_AAC_SSR ((SLuint32) 0x00000003)
2241 #define SL_AUDIOMODE_AAC_LTP ((SLuint32) 0x00000004)
2242 #define SL_AUDIOMODE_AAC_HE ((SLuint32) 0x00000005)
2243 #define SL_AUDIOMODE_AAC_SCALABLE ((SLuint32) 0x00000006)
2244 #define SL_AUDIOMODE_AAC_ERLC ((SLuint32) 0x00000007)
2245 #define SL_AUDIOMODE_AAC_LD ((SLuint32) 0x00000008)
2246 #define SL_AUDIOMODE_AAC_HE_PS ((SLuint32) 0x00000009)
2247 #define SL_AUDIOMODE_AAC_HE_MPS ((SLuint32) 0x0000000A)
2249 #define SL_AUDIOSTREAMFORMAT_MP2ADTS ((SLuint32) 0x00000001)
2250 #define SL_AUDIOSTREAMFORMAT_MP4ADTS ((SLuint32) 0x00000002)
2251 #define SL_AUDIOSTREAMFORMAT_MP4LOAS ((SLuint32) 0x00000003)
2252 #define SL_AUDIOSTREAMFORMAT_MP4LATM ((SLuint32) 0x00000004)
2253 #define SL_AUDIOSTREAMFORMAT_ADIF ((SLuint32) 0x00000005)
2254 #define SL_AUDIOSTREAMFORMAT_MP4FF ((SLuint32) 0x00000006)
2255 #define SL_AUDIOSTREAMFORMAT_RAW ((SLuint32) 0x00000007)
2257 #define SL_AUDIOPROFILE_WMA7 ((SLuint32) 0x00000001)
2258 #define SL_AUDIOPROFILE_WMA8 ((SLuint32) 0x00000002)
2259 #define SL_AUDIOPROFILE_WMA9 ((SLuint32) 0x00000003)
2260 #define SL_AUDIOPROFILE_WMA10 ((SLuint32) 0x00000004)
2262 #define SL_AUDIOMODE_WMA_LEVEL1 ((SLuint32) 0x00000001)
2263 #define SL_AUDIOMODE_WMA_LEVEL2 ((SLuint32) 0x00000002)
2264 #define SL_AUDIOMODE_WMA_LEVEL3 ((SLuint32) 0x00000003)
2265 #define SL_AUDIOMODE_WMA_LEVEL4 ((SLuint32) 0x00000004)
2266 #define SL_AUDIOMODE_WMAPRO_LEVELM0 ((SLuint32) 0x00000005)
2267 #define SL_AUDIOMODE_WMAPRO_LEVELM1 ((SLuint32) 0x00000006)
2268 #define SL_AUDIOMODE_WMAPRO_LEVELM2 ((SLuint32) 0x00000007)
2269 #define SL_AUDIOMODE_WMAPRO_LEVELM3 ((SLuint32) 0x00000008)
2271 #define SL_AUDIOPROFILE_REALAUDIO ((SLuint32) 0x00000001)
2273 #define SL_AUDIOMODE_REALAUDIO_G2 ((SLuint32) 0x00000001)
2274 #define SL_AUDIOMODE_REALAUDIO_8 ((SLuint32) 0x00000002)
2275 #define SL_AUDIOMODE_REALAUDIO_10 ((SLuint32) 0x00000003)
2276 #define SL_AUDIOMODE_REALAUDIO_SURROUND ((SLuint32) 0x00000004)
2278 typedef struct SLAudioCodecDescriptor_
{
2279 SLuint32 maxChannels
;
2280 SLuint32 minBitsPerSample
;
2281 SLuint32 maxBitsPerSample
;
2282 SLmilliHertz minSampleRate
;
2283 SLmilliHertz maxSampleRate
;
2284 SLboolean isFreqRangeContinuous
;
2285 SLmilliHertz
*pSampleRatesSupported
;
2286 SLuint32 numSampleRatesSupported
;
2287 SLuint32 minBitRate
;
2288 SLuint32 maxBitRate
;
2289 SLboolean isBitrateRangeContinuous
;
2290 SLuint32
*pBitratesSupported
;
2291 SLuint32 numBitratesSupported
;
2292 SLuint32 profileSetting
;
2293 SLuint32 modeSetting
;
2294 } SLAudioCodecDescriptor
;
2296 /*Structure used to retrieve the profile and level settings supported by an audio encoder */
2298 typedef struct SLAudioCodecProfileMode_
{
2299 SLuint32 profileSetting
;
2300 SLuint32 modeSetting
;
2301 } SLAudioCodecProfileMode
;
2303 extern SL_API
const SLInterfaceID SL_IID_AUDIODECODERCAPABILITIES
;
2305 struct SLAudioDecoderCapabilitiesItf_
;
2306 typedef const struct SLAudioDecoderCapabilitiesItf_
* const * SLAudioDecoderCapabilitiesItf
;
2308 struct SLAudioDecoderCapabilitiesItf_
{
2309 SLresult (*GetAudioDecoders
) (
2310 SLAudioDecoderCapabilitiesItf self
,
2311 SLuint32
* pNumDecoders
,
2312 SLuint32
*pDecoderIds
2314 SLresult (*GetAudioDecoderCapabilities
) (
2315 SLAudioDecoderCapabilitiesItf self
,
2318 SLAudioCodecDescriptor
*pDescriptor
2325 /*---------------------------------------------------------------------------*/
2326 /* Audio Encoder Capabilities Interface */
2327 /* --------------------------------------------------------------------------*/
2329 /* Structure used when setting audio encoding parameters */
2331 typedef struct SLAudioEncoderSettings_
{
2333 SLuint32 channelsIn
;
2334 SLuint32 channelsOut
;
2335 SLmilliHertz sampleRate
;
2337 SLuint32 bitsPerSample
;
2338 SLuint32 rateControl
;
2339 SLuint32 profileSetting
;
2340 SLuint32 levelSetting
;
2341 SLuint32 channelMode
;
2342 SLuint32 streamFormat
;
2343 SLuint32 encodeOptions
;
2344 SLuint32 blockAlignment
;
2345 } SLAudioEncoderSettings
;
2347 extern SL_API
const SLInterfaceID SL_IID_AUDIOENCODERCAPABILITIES
;
2349 struct SLAudioEncoderCapabilitiesItf_
;
2350 typedef const struct SLAudioEncoderCapabilitiesItf_
* const * SLAudioEncoderCapabilitiesItf
;
2352 struct SLAudioEncoderCapabilitiesItf_
{
2353 SLresult (*GetAudioEncoders
) (
2354 SLAudioEncoderCapabilitiesItf self
,
2355 SLuint32
*pNumEncoders
,
2356 SLuint32
*pEncoderIds
2358 SLresult (*GetAudioEncoderCapabilities
) (
2359 SLAudioEncoderCapabilitiesItf self
,
2362 SLAudioCodecDescriptor
* pDescriptor
2367 /*---------------------------------------------------------------------------*/
2368 /* Audio Encoder Interface */
2369 /* --------------------------------------------------------------------------*/
2372 extern SL_API
const SLInterfaceID SL_IID_AUDIOENCODER
;
2374 struct SLAudioEncoderItf_
;
2375 typedef const struct SLAudioEncoderItf_
* const * SLAudioEncoderItf
;
2377 struct SLAudioEncoderItf_
{
2378 SLresult (*SetEncoderSettings
) (
2379 SLAudioEncoderItf self
,
2380 SLAudioEncoderSettings
*pSettings
2382 SLresult (*GetEncoderSettings
) (
2383 SLAudioEncoderItf self
,
2384 SLAudioEncoderSettings
*pSettings
2389 /*---------------------------------------------------------------------------*/
2390 /* Bass Boost Interface */
2391 /* --------------------------------------------------------------------------*/
2394 extern SL_API
const SLInterfaceID SL_IID_BASSBOOST
;
2396 struct SLBassBoostItf_
;
2397 typedef const struct SLBassBoostItf_
* const * SLBassBoostItf
;
2399 struct SLBassBoostItf_
{
2400 SLresult (*SetEnabled
)(
2401 SLBassBoostItf self
,
2404 SLresult (*IsEnabled
)(
2405 SLBassBoostItf self
,
2408 SLresult (*SetStrength
)(
2409 SLBassBoostItf self
,
2412 SLresult (*GetRoundedStrength
)(
2413 SLBassBoostItf self
,
2414 SLpermille
*pStrength
2416 SLresult (*IsStrengthSupported
)(
2417 SLBassBoostItf self
,
2418 SLboolean
*pSupported
2422 /*---------------------------------------------------------------------------*/
2423 /* Pitch Interface */
2424 /* --------------------------------------------------------------------------*/
2427 extern SL_API
const SLInterfaceID SL_IID_PITCH
;
2430 typedef const struct SLPitchItf_
* const * SLPitchItf
;
2432 struct SLPitchItf_
{
2433 SLresult (*SetPitch
) (
2437 SLresult (*GetPitch
) (
2441 SLresult (*GetPitchCapabilities
) (
2443 SLpermille
*pMinPitch
,
2444 SLpermille
*pMaxPitch
2449 /*---------------------------------------------------------------------------*/
2450 /* Rate Pitch Interface */
2451 /* RatePitchItf is an interface for controlling the rate a sound is played */
2452 /* back. A change in rate will cause a change in pitch. */
2453 /* --------------------------------------------------------------------------*/
2456 extern SL_API
const SLInterfaceID SL_IID_RATEPITCH
;
2458 struct SLRatePitchItf_
;
2459 typedef const struct SLRatePitchItf_
* const * SLRatePitchItf
;
2461 struct SLRatePitchItf_
{
2462 SLresult (*SetRate
) (
2463 SLRatePitchItf self
,
2466 SLresult (*GetRate
) (
2467 SLRatePitchItf self
,
2470 SLresult (*GetRatePitchCapabilities
) (
2471 SLRatePitchItf self
,
2472 SLpermille
*pMinRate
,
2473 SLpermille
*pMaxRate
2478 /*---------------------------------------------------------------------------*/
2479 /* Virtualizer Interface */
2480 /* --------------------------------------------------------------------------*/
2483 extern SL_API
const SLInterfaceID SL_IID_VIRTUALIZER
;
2485 struct SLVirtualizerItf_
;
2486 typedef const struct SLVirtualizerItf_
* const * SLVirtualizerItf
;
2488 struct SLVirtualizerItf_
{
2489 SLresult (*SetEnabled
)(
2490 SLVirtualizerItf self
,
2493 SLresult (*IsEnabled
)(
2494 SLVirtualizerItf self
,
2497 SLresult (*SetStrength
)(
2498 SLVirtualizerItf self
,
2501 SLresult (*GetRoundedStrength
)(
2502 SLVirtualizerItf self
,
2503 SLpermille
*pStrength
2505 SLresult (*IsStrengthSupported
)(
2506 SLVirtualizerItf self
,
2507 SLboolean
*pSupported
2511 /*---------------------------------------------------------------------------*/
2512 /* Visualization Interface */
2513 /* --------------------------------------------------------------------------*/
2516 extern SL_API
const SLInterfaceID SL_IID_VISUALIZATION
;
2518 struct SLVisualizationItf_
;
2519 typedef const struct SLVisualizationItf_
* const * SLVisualizationItf
;
2521 typedef void (SLAPIENTRY
*slVisualizationCallback
) (
2523 const SLuint8 waveform
[],
2524 const SLuint8 fft
[],
2525 SLmilliHertz samplerate
2528 struct SLVisualizationItf_
{
2529 SLresult (*RegisterVisualizationCallback
)(
2530 SLVisualizationItf self
,
2531 slVisualizationCallback callback
,
2535 SLresult (*GetMaxRate
)(
2536 SLVisualizationItf self
,
2542 /*---------------------------------------------------------------------------*/
2543 /* Engine Interface */
2544 /* --------------------------------------------------------------------------*/
2547 extern SL_API
const SLInterfaceID SL_IID_ENGINE
;
2549 struct SLEngineItf_
;
2550 typedef const struct SLEngineItf_
* const * SLEngineItf
;
2553 struct SLEngineItf_
{
2555 SLresult (*CreateLEDDevice
) (
2557 SLObjectItf
* pDevice
,
2559 SLuint32 numInterfaces
,
2560 const SLInterfaceID
* pInterfaceIds
,
2561 const SLboolean
* pInterfaceRequired
2563 SLresult (*CreateVibraDevice
) (
2565 SLObjectItf
* pDevice
,
2567 SLuint32 numInterfaces
,
2568 const SLInterfaceID
* pInterfaceIds
,
2569 const SLboolean
* pInterfaceRequired
2571 SLresult (*CreateAudioPlayer
) (
2573 SLObjectItf
* pPlayer
,
2574 SLDataSource
*pAudioSrc
,
2575 SLDataSink
*pAudioSnk
,
2576 SLuint32 numInterfaces
,
2577 const SLInterfaceID
* pInterfaceIds
,
2578 const SLboolean
* pInterfaceRequired
2580 SLresult (*CreateAudioRecorder
) (
2582 SLObjectItf
* pRecorder
,
2583 SLDataSource
*pAudioSrc
,
2584 SLDataSink
*pAudioSnk
,
2585 SLuint32 numInterfaces
,
2586 const SLInterfaceID
* pInterfaceIds
,
2587 const SLboolean
* pInterfaceRequired
2589 SLresult (*CreateMidiPlayer
) (
2591 SLObjectItf
* pPlayer
,
2592 SLDataSource
*pMIDISrc
,
2593 SLDataSource
*pBankSrc
,
2594 SLDataSink
*pAudioOutput
,
2596 SLDataSink
*pLEDArray
,
2597 SLuint32 numInterfaces
,
2598 const SLInterfaceID
* pInterfaceIds
,
2599 const SLboolean
* pInterfaceRequired
2601 SLresult (*CreateListener
) (
2603 SLObjectItf
* pListener
,
2604 SLuint32 numInterfaces
,
2605 const SLInterfaceID
* pInterfaceIds
,
2606 const SLboolean
* pInterfaceRequired
2608 SLresult (*Create3DGroup
) (
2610 SLObjectItf
* pGroup
,
2611 SLuint32 numInterfaces
,
2612 const SLInterfaceID
* pInterfaceIds
,
2613 const SLboolean
* pInterfaceRequired
2615 SLresult (*CreateOutputMix
) (
2618 SLuint32 numInterfaces
,
2619 const SLInterfaceID
* pInterfaceIds
,
2620 const SLboolean
* pInterfaceRequired
2622 SLresult (*CreateMetadataExtractor
) (
2624 SLObjectItf
* pMetadataExtractor
,
2625 SLDataSource
* pDataSource
,
2626 SLuint32 numInterfaces
,
2627 const SLInterfaceID
* pInterfaceIds
,
2628 const SLboolean
* pInterfaceRequired
2630 SLresult (*CreateExtensionObject
) (
2632 SLObjectItf
* pObject
,
2635 SLuint32 numInterfaces
,
2636 const SLInterfaceID
* pInterfaceIds
,
2637 const SLboolean
* pInterfaceRequired
2639 SLresult (*QueryNumSupportedInterfaces
) (
2642 SLuint32
* pNumSupportedInterfaces
2644 SLresult (*QuerySupportedInterfaces
) (
2648 SLInterfaceID
* pInterfaceId
2650 SLresult (*QueryNumSupportedExtensions
) (
2652 SLuint32
* pNumExtensions
2654 SLresult (*QuerySupportedExtension
) (
2657 SLchar
* pExtensionName
,
2658 SLint16
* pNameLength
2660 SLresult (*IsExtensionSupported
) (
2662 const SLchar
* pExtensionName
,
2663 SLboolean
* pSupported
2668 /*---------------------------------------------------------------------------*/
2669 /* Engine Capabilities Interface */
2670 /* --------------------------------------------------------------------------*/
2673 extern SL_API
const SLInterfaceID SL_IID_ENGINECAPABILITIES
;
2675 struct SLEngineCapabilitiesItf_
;
2676 typedef const struct SLEngineCapabilitiesItf_
* const * SLEngineCapabilitiesItf
;
2678 struct SLEngineCapabilitiesItf_
{
2679 SLresult (*QuerySupportedProfiles
) (
2680 SLEngineCapabilitiesItf self
,
2681 SLuint16
*pProfilesSupported
2683 SLresult (*QueryAvailableVoices
) (
2684 SLEngineCapabilitiesItf self
,
2686 SLint16
*pNumMaxVoices
,
2687 SLboolean
*pIsAbsoluteMax
,
2688 SLint16
*pNumFreeVoices
2690 SLresult (*QueryNumberOfMIDISynthesizers
) (
2691 SLEngineCapabilitiesItf self
,
2692 SLint16
*pNumMIDIsynthesizers
2694 SLresult (*QueryAPIVersion
) (
2695 SLEngineCapabilitiesItf self
,
2700 SLresult (*QueryLEDCapabilities
) (
2701 SLEngineCapabilitiesItf self
,
2703 SLuint32
*pLEDDeviceID
,
2704 SLLEDDescriptor
*pDescriptor
2706 SLresult (*QueryVibraCapabilities
) (
2707 SLEngineCapabilitiesItf self
,
2709 SLuint32
*pVibraDeviceID
,
2710 SLVibraDescriptor
*pDescriptor
2712 SLresult (*IsThreadSafe
) (
2713 SLEngineCapabilitiesItf self
,
2714 SLboolean
*pIsThreadSafe
2718 /*---------------------------------------------------------------------------*/
2719 /* Thread Sync Interface */
2720 /* --------------------------------------------------------------------------*/
2723 extern SL_API
const SLInterfaceID SL_IID_THREADSYNC
;
2725 struct SLThreadSyncItf_
;
2726 typedef const struct SLThreadSyncItf_
* const * SLThreadSyncItf
;
2729 struct SLThreadSyncItf_
{
2730 SLresult (*EnterCriticalSection
) (
2731 SLThreadSyncItf self
2733 SLresult (*ExitCriticalSection
) (
2734 SLThreadSyncItf self
2739 /*****************************************************************************/
2740 /* SL engine constructor */
2741 /*****************************************************************************/
2743 #define SL_ENGINEOPTION_THREADSAFE ((SLuint32) 0x00000001)
2744 #define SL_ENGINEOPTION_LOSSOFCONTROL ((SLuint32) 0x00000002)
2746 typedef struct SLEngineOption_
{
2752 SL_API SLresult SLAPIENTRY
slCreateEngine(
2753 SLObjectItf
*pEngine
,
2754 SLuint32 numOptions
,
2755 const SLEngineOption
*pEngineOptions
,
2756 SLuint32 numInterfaces
,
2757 const SLInterfaceID
*pInterfaceIds
,
2758 const SLboolean
* pInterfaceRequired
2761 SL_API SLresult SLAPIENTRY
slQueryNumSupportedEngineInterfaces(
2762 SLuint32
* pNumSupportedInterfaces
2765 SL_API SLresult SLAPIENTRY
slQuerySupportedEngineInterfaces(
2767 SLInterfaceID
* pInterfaceId
2774 #endif /* OPENSL_ES_H_ */