Revert "Roll NDK to r11c and extract it into its own repository."
[android_tools.git] / ndk / platforms / android-17 / arch-arm / usr / include / SLES / OpenSLES.h
blob8686997cb90db3374278cf9966eec8f3c53c608f
1 /*
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
21 * MATERIALS.
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 /****************************************************************************/
32 #ifndef OPENSL_ES_H_
33 #define OPENSL_ES_H_
35 #ifdef __cplusplus
36 extern "C" {
37 #endif
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"
62 #endif
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_ {
95 SLuint32 time_low;
96 SLuint16 time_mid;
97 SLuint16 time_hi_and_version;
98 SLuint16 clock_seq;
99 SLuint8 node[6];
100 } * SLInterfaceID;
102 /* Forward declaration for the object interface */
103 struct SLObjectItf_;
105 typedef const struct SLObjectItf_ * const * SLObjectItf;
107 /* Objects ID's */
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)
121 /* SL Profiles */
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 /*****************************************************************************/
194 /* Errors */
195 /* */
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;
261 SLchar * URI;
262 } SLDataLocator_URI;
264 /** Address-based data locator definition where locatorType must be SL_DATALOCATOR_ADDRESS*/
265 typedef struct SLDataLocator_Address_ {
266 SLuint32 locatorType;
267 void *pAddress;
268 SLuint32 length;
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;
281 SLuint32 deviceType;
282 SLuint32 deviceID;
283 SLObjectItf device;
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;
296 SLuint32 numBuffers;
297 } SLDataLocator_BufferQueue;
299 /** MidiBufferQueue-based data locator definition where locatorType must be SL_DATALOCATOR_MIDIBUFFERQUEUE*/
300 typedef struct SLDataLocator_MIDIBufferQueue {
301 SLuint32 locatorType;
302 SLuint32 tpqn;
303 SLuint32 numBuffers;
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_ {
314 SLuint32 formatType;
315 SLchar * mimeType;
316 SLuint32 containerType;
317 } SLDataFormat_MIME;
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)
323 /* Container type */
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_ {
357 SLuint32 formatType;
358 SLuint32 numChannels;
359 SLuint32 samplesPerSec;
360 SLuint32 bitsPerSample;
361 SLuint32 containerSize;
362 SLuint32 channelMask;
363 SLuint32 endianness;
364 } SLDataFormat_PCM;
366 typedef struct SLDataSource_ {
367 void *pLocator;
368 void *pFormat;
369 } SLDataSource;
372 typedef struct SLDataSink_ {
373 void *pLocator;
374 void *pFormat;
375 } SLDataSink;
382 /*---------------------------------------------------------------------------*/
383 /* Standard Object Interface */
384 /*---------------------------------------------------------------------------*/
386 extern SL_API const SLInterfaceID SL_IID_OBJECT;
388 /** Object callback */
391 typedef void (SLAPIENTRY *slObjectCallback) (
392 SLObjectItf caller,
393 const void * pContext,
394 SLuint32 event,
395 SLresult result,
396 SLuint32 param,
397 void *pInterface
401 struct SLObjectItf_ {
402 SLresult (*Realize) (
403 SLObjectItf self,
404 SLboolean async
406 SLresult (*Resume) (
407 SLObjectItf self,
408 SLboolean async
410 SLresult (*GetState) (
411 SLObjectItf self,
412 SLuint32 * pState
414 SLresult (*GetInterface) (
415 SLObjectItf self,
416 const SLInterfaceID iid,
417 void * pInterface
419 SLresult (*RegisterCallback) (
420 SLObjectItf self,
421 slObjectCallback callback,
422 void * pContext
424 void (*AbortAsyncOperation) (
425 SLObjectItf self
427 void (*Destroy) (
428 SLObjectItf self
430 SLresult (*SetPriority) (
431 SLObjectItf self,
432 SLint32 priority,
433 SLboolean preemptable
435 SLresult (*GetPriority) (
436 SLObjectItf self,
437 SLint32 *pPriority,
438 SLboolean *pPreemptable
440 SLresult (*SetLossOfControlInterfaces) (
441 SLObjectItf self,
442 SLint16 numInterfaces,
443 SLInterfaceID * pInterfaceIDs,
444 SLboolean enabled
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_ {
481 SLchar *deviceName;
482 SLint16 deviceConnection;
483 SLint16 deviceScope;
484 SLint16 deviceLocation;
485 SLboolean isForTelephony;
486 SLmilliHertz minSampleRate;
487 SLmilliHertz maxSampleRate;
488 SLboolean isFreqRangeContinuous;
489 SLmilliHertz *samplingRatesSupported;
490 SLint16 numOfSamplingRatesSupported;
491 SLint16 maxChannels;
492 } SLAudioInputDescriptor;
495 typedef struct SLAudioOutputDescriptor_ {
496 SLchar *pDeviceName;
497 SLint16 deviceConnection;
498 SLint16 deviceScope;
499 SLint16 deviceLocation;
500 SLboolean isForTelephony;
501 SLmilliHertz minSampleRate;
502 SLmilliHertz maxSampleRate;
503 SLboolean isFreqRangeContinuous;
504 SLmilliHertz *samplingRatesSupported;
505 SLint16 numOfSamplingRatesSupported;
506 SLint16 maxChannels;
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,
519 void *pContext,
520 SLuint32 deviceID,
521 SLint32 numInputs,
522 SLboolean isNew
526 typedef void (SLAPIENTRY *slAvailableAudioOutputsChangedCallback) (
527 SLAudioIODeviceCapabilitiesItf caller,
528 void *pContext,
529 SLuint32 deviceID,
530 SLint32 numOutputs,
531 SLboolean isNew
534 typedef void (SLAPIENTRY *slDefaultDeviceIDMapChangedCallback) (
535 SLAudioIODeviceCapabilitiesItf caller,
536 void *pContext,
537 SLboolean isOutput,
538 SLint32 numDevices
542 struct SLAudioIODeviceCapabilitiesItf_ {
543 SLresult (*GetAvailableAudioInputs)(
544 SLAudioIODeviceCapabilitiesItf self,
545 SLint32 *pNumInputs,
546 SLuint32 *pInputDeviceIDs
548 SLresult (*QueryAudioInputCapabilities)(
549 SLAudioIODeviceCapabilitiesItf self,
550 SLuint32 deviceId,
551 SLAudioInputDescriptor *pDescriptor
553 SLresult (*RegisterAvailableAudioInputsChangedCallback) (
554 SLAudioIODeviceCapabilitiesItf self,
555 slAvailableAudioInputsChangedCallback callback,
556 void *pContext
558 SLresult (*GetAvailableAudioOutputs)(
559 SLAudioIODeviceCapabilitiesItf self,
560 SLint32 *pNumOutputs,
561 SLuint32 *pOutputDeviceIDs
563 SLresult (*QueryAudioOutputCapabilities)(
564 SLAudioIODeviceCapabilitiesItf self,
565 SLuint32 deviceId,
566 SLAudioOutputDescriptor *pDescriptor
568 SLresult (*RegisterAvailableAudioOutputsChangedCallback) (
569 SLAudioIODeviceCapabilitiesItf self,
570 slAvailableAudioOutputsChangedCallback callback,
571 void *pContext
573 SLresult (*RegisterDefaultDeviceIDMapChangedCallback) (
574 SLAudioIODeviceCapabilitiesItf self,
575 slDefaultDeviceIDMapChangedCallback callback,
576 void *pContext
578 SLresult (*GetAssociatedAudioInputs) (
579 SLAudioIODeviceCapabilitiesItf self,
580 SLuint32 deviceId,
581 SLint32 *pNumAudioInputs,
582 SLuint32 *pAudioInputDeviceIDs
584 SLresult (*GetAssociatedAudioOutputs) (
585 SLAudioIODeviceCapabilitiesItf self,
586 SLuint32 deviceId,
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,
598 SLuint32 deviceId,
599 SLmilliHertz samplingRate,
600 SLint32 *pSampleFormats,
601 SLint32 *pNumOfSampleFormats
607 /*---------------------------------------------------------------------------*/
608 /* Capabilities of the LED array IODevice */
609 /*---------------------------------------------------------------------------*/
611 typedef struct SLLEDDescriptor_ {
612 SLuint8 ledCount;
613 SLuint8 primaryLED;
614 SLuint32 colorMask;
615 } SLLEDDescriptor;
618 /*---------------------------------------------------------------------------*/
619 /* LED Array interface */
620 /*---------------------------------------------------------------------------*/
622 typedef struct SLHSL_ {
623 SLmillidegree hue;
624 SLpermille saturation;
625 SLpermille lightness;
626 } SLHSL;
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) (
636 SLLEDArrayItf self,
637 SLuint32 lightMask
639 SLresult (*IsLEDArrayActivated) (
640 SLLEDArrayItf self,
641 SLuint32 *lightMask
643 SLresult (*SetColor) (
644 SLLEDArrayItf self,
645 SLuint8 index,
646 const SLHSL *color
648 SLresult (*GetColor) (
649 SLLEDArrayItf self,
650 SLuint8 index,
651 SLHSL *color
655 /*---------------------------------------------------------------------------*/
656 /* Capabilities of the Vibra IODevice */
657 /*---------------------------------------------------------------------------*/
659 typedef struct SLVibraDescriptor_ {
660 SLboolean supportsFrequency;
661 SLboolean supportsIntensity;
662 SLmilliHertz minFrequency;
663 SLmilliHertz maxFrequency;
664 } SLVibraDescriptor;
668 /*---------------------------------------------------------------------------*/
669 /* Vibra interface */
670 /*---------------------------------------------------------------------------*/
673 extern SL_API const SLInterfaceID SL_IID_VIBRA;
676 struct SLVibraItf_;
677 typedef const struct SLVibraItf_ * const * SLVibraItf;
679 struct SLVibraItf_ {
680 SLresult (*Vibrate) (
681 SLVibraItf self,
682 SLboolean vibrate
684 SLresult (*IsVibrating) (
685 SLVibraItf self,
686 SLboolean *pVibrating
688 SLresult (*SetFrequency) (
689 SLVibraItf self,
690 SLmilliHertz frequency
692 SLresult (*GetFrequency) (
693 SLVibraItf self,
694 SLmilliHertz *pFrequency
696 SLresult (*SetIntensity) (
697 SLVibraItf self,
698 SLpermille intensity
700 SLresult (*GetIntensity) (
701 SLVibraItf self,
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_ {
753 SLuint32 size;
754 SLuint32 encoding;
755 SLchar langCountry[16];
756 SLuint8 data[1];
757 } SLMetadataInfo;
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,
768 SLuint32 *pItemCount
770 SLresult (*GetKeySize) (
771 SLMetadataExtractionItf self,
772 SLuint32 index,
773 SLuint32 *pKeySize
775 SLresult (*GetKey) (
776 SLMetadataExtractionItf self,
777 SLuint32 index,
778 SLuint32 keySize,
779 SLMetadataInfo *pKey
781 SLresult (*GetValueSize) (
782 SLMetadataExtractionItf self,
783 SLuint32 index,
784 SLuint32 *pValueSize
786 SLresult (*GetValue) (
787 SLMetadataExtractionItf self,
788 SLuint32 index,
789 SLuint32 valueSize,
790 SLMetadataInfo *pValue
792 SLresult (*AddKeyFilter) (
793 SLMetadataExtractionItf self,
794 SLuint32 keySize,
795 const void *pKey,
796 SLuint32 keyEncoding,
797 const SLchar *pValueLangCountry,
798 SLuint32 valueEncoding,
799 SLuint8 filterMask
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,
830 SLuint32 mode
832 SLresult (*GetChildCount) (
833 SLMetadataTraversalItf self,
834 SLuint32 *pCount
836 SLresult (*GetChildMIMETypeSize) (
837 SLMetadataTraversalItf self,
838 SLuint32 index,
839 SLuint32 *pSize
841 SLresult (*GetChildInfo) (
842 SLMetadataTraversalItf self,
843 SLuint32 index,
844 SLint32 *pNodeID,
845 SLuint32 *pType,
846 SLuint32 size,
847 SLchar *pMimeType
849 SLresult (*SetActiveNode) (
850 SLMetadataTraversalItf self,
851 SLuint32 index
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,
882 void *pContext
886 struct SLOutputMixItf_ {
887 SLresult (*GetDestinationOutputDeviceIDs) (
888 SLOutputMixItf self,
889 SLint32 *pNumDevices,
890 SLuint32 *pDeviceIDs
892 SLresult (*RegisterDeviceChangeCallback) (
893 SLOutputMixItf self,
894 slMixDeviceChangeCallback callback,
895 void *pContext
897 SLresult (*ReRoute)(
898 SLOutputMixItf self,
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)
914 /** Play events **/
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 */
928 struct SLPlayItf_;
929 typedef const struct SLPlayItf_ * const * SLPlayItf;
931 typedef void (SLAPIENTRY *slPlayCallback) (
932 SLPlayItf caller,
933 void *pContext,
934 SLuint32 event
937 struct SLPlayItf_ {
938 SLresult (*SetPlayState) (
939 SLPlayItf self,
940 SLuint32 state
942 SLresult (*GetPlayState) (
943 SLPlayItf self,
944 SLuint32 *pState
946 SLresult (*GetDuration) (
947 SLPlayItf self,
948 SLmillisecond *pMsec
950 SLresult (*GetPosition) (
951 SLPlayItf self,
952 SLmillisecond *pMsec
954 SLresult (*RegisterCallback) (
955 SLPlayItf self,
956 slPlayCallback callback,
957 void *pContext
959 SLresult (*SetCallbackEventsMask) (
960 SLPlayItf self,
961 SLuint32 eventFlags
963 SLresult (*GetCallbackEventsMask) (
964 SLPlayItf self,
965 SLuint32 *pEventFlags
967 SLresult (*SetMarkerPosition) (
968 SLPlayItf self,
969 SLmillisecond mSec
971 SLresult (*ClearMarkerPosition) (
972 SLPlayItf self
974 SLresult (*GetMarkerPosition) (
975 SLPlayItf self,
976 SLmillisecond *pMsec
978 SLresult (*SetPositionUpdatePeriod) (
979 SLPlayItf self,
980 SLmillisecond mSec
982 SLresult (*GetPositionUpdatePeriod) (
983 SLPlayItf self,
984 SLmillisecond *pMsec
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,
1010 void *pContext,
1011 SLuint32 event
1014 struct SLPrefetchStatusItf_ {
1015 SLresult (*GetPrefetchStatus) (
1016 SLPrefetchStatusItf self,
1017 SLuint32 *pStatus
1019 SLresult (*GetFillLevel) (
1020 SLPrefetchStatusItf self,
1021 SLpermille *pLevel
1023 SLresult (*RegisterCallback) (
1024 SLPrefetchStatusItf self,
1025 slPrefetchCallback callback,
1026 void *pContext
1028 SLresult (*SetCallbackEventsMask) (
1029 SLPrefetchStatusItf self,
1030 SLuint32 eventFlags
1032 SLresult (*GetCallbackEventsMask) (
1033 SLPrefetchStatusItf self,
1034 SLuint32 *pEventFlags
1036 SLresult (*SetFillUpdatePeriod) (
1037 SLPrefetchStatusItf self,
1038 SLpermille period
1040 SLresult (*GetFillUpdatePeriod) (
1041 SLPrefetchStatusItf self,
1042 SLpermille *pPeriod
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,
1066 SLpermille rate
1068 SLresult (*GetRate)(
1069 SLPlaybackRateItf self,
1070 SLpermille *pRate
1072 SLresult (*SetPropertyConstraints)(
1073 SLPlaybackRateItf self,
1074 SLuint32 constraints
1076 SLresult (*GetProperties)(
1077 SLPlaybackRateItf self,
1078 SLuint32 *pProperties
1080 SLresult (*GetCapabilitiesOfRate)(
1081 SLPlaybackRateItf self,
1082 SLpermille rate,
1083 SLuint32 *pCapabilities
1085 SLresult (*GetRateRange) (
1086 SLPlaybackRateItf self,
1087 SLuint8 index,
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;
1104 struct SLSeekItf_;
1105 typedef const struct SLSeekItf_ * const * SLSeekItf;
1107 struct SLSeekItf_ {
1108 SLresult (*SetPosition)(
1109 SLSeekItf self,
1110 SLmillisecond pos,
1111 SLuint32 seekMode
1113 SLresult (*SetLoop)(
1114 SLSeekItf self,
1115 SLboolean loopEnable,
1116 SLmillisecond startPos,
1117 SLmillisecond endPos
1119 SLresult (*GetLoop)(
1120 SLSeekItf self,
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) (
1154 SLRecordItf caller,
1155 void *pContext,
1156 SLuint32 event
1159 /** Recording interface methods */
1160 struct SLRecordItf_ {
1161 SLresult (*SetRecordState) (
1162 SLRecordItf self,
1163 SLuint32 state
1165 SLresult (*GetRecordState) (
1166 SLRecordItf self,
1167 SLuint32 *pState
1169 SLresult (*SetDurationLimit) (
1170 SLRecordItf self,
1171 SLmillisecond msec
1173 SLresult (*GetPosition) (
1174 SLRecordItf self,
1175 SLmillisecond *pMsec
1177 SLresult (*RegisterCallback) (
1178 SLRecordItf self,
1179 slRecordCallback callback,
1180 void *pContext
1182 SLresult (*SetCallbackEventsMask) (
1183 SLRecordItf self,
1184 SLuint32 eventFlags
1186 SLresult (*GetCallbackEventsMask) (
1187 SLRecordItf self,
1188 SLuint32 *pEventFlags
1190 SLresult (*SetMarkerPosition) (
1191 SLRecordItf self,
1192 SLmillisecond mSec
1194 SLresult (*ClearMarkerPosition) (
1195 SLRecordItf self
1197 SLresult (*GetMarkerPosition) (
1198 SLRecordItf self,
1199 SLmillisecond *pMsec
1201 SLresult (*SetPositionUpdatePeriod) (
1202 SLRecordItf self,
1203 SLmillisecond mSec
1205 SLresult (*GetPositionUpdatePeriod) (
1206 SLRecordItf self,
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,
1225 SLboolean enabled
1227 SLresult (*IsEnabled)(
1228 SLEqualizerItf self,
1229 SLboolean *pEnabled
1231 SLresult (*GetNumberOfBands)(
1232 SLEqualizerItf self,
1233 SLuint16 *pAmount
1235 SLresult (*GetBandLevelRange)(
1236 SLEqualizerItf self,
1237 SLmillibel *pMin,
1238 SLmillibel *pMax
1240 SLresult (*SetBandLevel)(
1241 SLEqualizerItf self,
1242 SLuint16 band,
1243 SLmillibel level
1245 SLresult (*GetBandLevel)(
1246 SLEqualizerItf self,
1247 SLuint16 band,
1248 SLmillibel *pLevel
1250 SLresult (*GetCenterFreq)(
1251 SLEqualizerItf self,
1252 SLuint16 band,
1253 SLmilliHertz *pCenter
1255 SLresult (*GetBandFreqRange)(
1256 SLEqualizerItf self,
1257 SLuint16 band,
1258 SLmilliHertz *pMin,
1259 SLmilliHertz *pMax
1261 SLresult (*GetBand)(
1262 SLEqualizerItf self,
1263 SLmilliHertz frequency,
1264 SLuint16 *pBand
1266 SLresult (*GetCurrentPreset)(
1267 SLEqualizerItf self,
1268 SLuint16 *pPreset
1270 SLresult (*UsePreset)(
1271 SLEqualizerItf self,
1272 SLuint16 index
1274 SLresult (*GetNumberOfPresets)(
1275 SLEqualizerItf self,
1276 SLuint16 *pNumPresets
1278 SLresult (*GetPresetName)(
1279 SLEqualizerItf self,
1280 SLuint16 index,
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) (
1296 SLVolumeItf self,
1297 SLmillibel level
1299 SLresult (*GetVolumeLevel) (
1300 SLVolumeItf self,
1301 SLmillibel *pLevel
1303 SLresult (*GetMaxVolumeLevel) (
1304 SLVolumeItf self,
1305 SLmillibel *pMaxLevel
1307 SLresult (*SetMute) (
1308 SLVolumeItf self,
1309 SLboolean mute
1311 SLresult (*GetMute) (
1312 SLVolumeItf self,
1313 SLboolean *pMute
1315 SLresult (*EnableStereoPosition) (
1316 SLVolumeItf self,
1317 SLboolean enable
1319 SLresult (*IsEnabledStereoPosition) (
1320 SLVolumeItf self,
1321 SLboolean *pEnable
1323 SLresult (*SetStereoPosition) (
1324 SLVolumeItf self,
1325 SLpermille stereoPosition
1327 SLresult (*GetStereoPosition) (
1328 SLVolumeItf self,
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,
1346 SLuint32 deviceID,
1347 SLint32 *pMinValue,
1348 SLint32 *pMaxValue,
1349 SLboolean *pIsMillibelScale
1351 SLresult (*SetVolume) (
1352 SLDeviceVolumeItf self,
1353 SLuint32 deviceID,
1354 SLint32 volume
1356 SLresult (*GetVolume) (
1357 SLDeviceVolumeItf self,
1358 SLuint32 deviceID,
1359 SLint32 *pVolume
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,
1375 void *pContext
1378 /** Buffer queue state **/
1380 typedef struct SLBufferQueueState_ {
1381 SLuint32 count;
1382 SLuint32 playIndex;
1383 } SLBufferQueueState;
1386 struct SLBufferQueueItf_ {
1387 SLresult (*Enqueue) (
1388 SLBufferQueueItf self,
1389 const void *pBuffer,
1390 SLuint32 size
1392 SLresult (*Clear) (
1393 SLBufferQueueItf self
1395 SLresult (*GetState) (
1396 SLBufferQueueItf self,
1397 SLBufferQueueState *pState
1399 SLresult (*RegisterCallback) (
1400 SLBufferQueueItf self,
1401 slBufferQueueCallback callback,
1402 void* pContext
1407 /*---------------------------------------------------------------------------*/
1408 /* PresetReverb */
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,
1428 SLuint16 preset
1430 SLresult (*GetPreset) (
1431 SLPresetReverbItf self,
1432 SLuint16 *pPreset
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;
1513 SLpermille density;
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,
1528 SLmillibel room
1530 SLresult (*GetRoomLevel) (
1531 SLEnvironmentalReverbItf self,
1532 SLmillibel *pRoom
1534 SLresult (*SetRoomHFLevel) (
1535 SLEnvironmentalReverbItf self,
1536 SLmillibel roomHF
1538 SLresult (*GetRoomHFLevel) (
1539 SLEnvironmentalReverbItf self,
1540 SLmillibel *pRoomHF
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,
1600 SLpermille density
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,
1630 SLboolean enable,
1631 SLmillibel initialLevel
1633 SLresult (*IsEnabled) (
1634 SLEffectSendItf self,
1635 const void * pAuxEffect,
1636 SLboolean *pEnable
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,
1673 SLObjectItf group
1675 SLresult (*Get3DGroup) (
1676 SL3DGroupingItf self,
1677 SLObjectItf *pGroup
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) (
1694 SL3DCommitItf self
1696 SLresult (*SetDeferred) (
1697 SL3DCommitItf self,
1698 SLboolean deferred
1703 /*---------------------------------------------------------------------------*/
1704 /* 3D Location Interface */
1705 /*---------------------------------------------------------------------------*/
1707 typedef struct SLVec3D_ {
1708 SLint32 x;
1709 SLint32 y;
1710 SLint32 z;
1711 } 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
1729 SLresult (*Move) (
1730 SL3DLocationItf self,
1731 const SLVec3D *pMovement
1733 SLresult (*GetLocationCartesian) (
1734 SL3DLocationItf self,
1735 SLVec3D *pLocation
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,
1746 SLmillidegree roll
1748 SLresult (*Rotate) (
1749 SL3DLocationItf self,
1750 SLmillidegree theta,
1751 const SLVec3D *pAxis
1753 SLresult (*GetOrientationVectors) (
1754 SL3DLocationItf self,
1755 SLVec3D *pFront,
1756 SLVec3D *pUp
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,
1780 SLmillimeter speed
1782 SLresult (*GetVelocityCartesian) (
1783 SL3DDopplerItf self,
1784 SLVec3D *pVelocity
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) (
1811 SL3DSourceItf self,
1812 SLboolean headRelative
1814 SLresult (*GetHeadRelative) (
1815 SL3DSourceItf self,
1816 SLboolean *pHeadRelative
1818 SLresult (*SetRolloffDistances) (
1819 SL3DSourceItf self,
1820 SLmillimeter minDistance,
1821 SLmillimeter maxDistance
1823 SLresult (*GetRolloffDistances) (
1824 SL3DSourceItf self,
1825 SLmillimeter *pMinDistance,
1826 SLmillimeter *pMaxDistance
1828 SLresult (*SetRolloffMaxDistanceMute) (
1829 SL3DSourceItf self,
1830 SLboolean mute
1832 SLresult (*GetRolloffMaxDistanceMute) (
1833 SL3DSourceItf self,
1834 SLboolean *pMute
1836 SLresult (*SetRolloffFactor) (
1837 SL3DSourceItf self,
1838 SLpermille rolloffFactor
1840 SLresult (*GetRolloffFactor) (
1841 SL3DSourceItf self,
1842 SLpermille *pRolloffFactor
1844 SLresult (*SetRoomRolloffFactor) (
1845 SL3DSourceItf self,
1846 SLpermille roomRolloffFactor
1848 SLresult (*GetRoomRolloffFactor) (
1849 SL3DSourceItf self,
1850 SLpermille *pRoomRolloffFactor
1852 SLresult (*SetRolloffModel) (
1853 SL3DSourceItf self,
1854 SLuint8 model
1856 SLresult (*GetRolloffModel) (
1857 SL3DSourceItf self,
1858 SLuint8 *pModel
1860 SLresult (*SetCone) (
1861 SL3DSourceItf self,
1862 SLmillidegree innerAngle,
1863 SLmillidegree outerAngle,
1864 SLmillibel outerLevel
1866 SLresult (*GetCone) (
1867 SL3DSourceItf self,
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,
1886 SLmillimeter width,
1887 SLmillimeter height,
1888 SLmillimeter depth
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,
1900 SLmillidegree roll
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,
1914 SLVec3D *pFront,
1915 SLVec3D *pUp
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) (
1931 SLMuteSoloItf self,
1932 SLuint8 chan,
1933 SLboolean mute
1935 SLresult (*GetChannelMute) (
1936 SLMuteSoloItf self,
1937 SLuint8 chan,
1938 SLboolean *pMute
1940 SLresult (*SetChannelSolo) (
1941 SLMuteSoloItf self,
1942 SLuint8 chan,
1943 SLboolean solo
1945 SLresult (*GetChannelSolo) (
1946 SLMuteSoloItf self,
1947 SLuint8 chan,
1948 SLboolean *pSolo
1950 SLresult (*GetNumChannels) (
1951 SLMuteSoloItf self,
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,
1977 void * pContext,
1978 SLuint32 event,
1979 SLresult result,
1980 const SLInterfaceID iid
1984 struct SLDynamicInterfaceManagementItf_ {
1985 SLresult (*AddInterface) (
1986 SLDynamicInterfaceManagementItf self,
1987 const SLInterfaceID iid,
1988 SLboolean async
1990 SLresult (*RemoveInterface) (
1991 SLDynamicInterfaceManagementItf self,
1992 const SLInterfaceID iid
1994 SLresult (*ResumeInterface) (
1995 SLDynamicInterfaceManagementItf self,
1996 const SLInterfaceID iid,
1997 SLboolean async
1999 SLresult (*RegisterCallback) (
2000 SLDynamicInterfaceManagementItf self,
2001 slDynamicInterfaceManagementCallback callback,
2002 void * pContext
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,
2026 void *pContext,
2027 SLuint8 type,
2028 SLuint32 length,
2029 const SLuint8 *pData,
2030 SLuint32 tick,
2031 SLuint16 track
2034 typedef void (SLAPIENTRY *slMIDIMessageCallback) (
2035 SLMIDIMessageItf caller,
2036 void *pContext,
2037 SLuint8 statusByte,
2038 SLuint32 length,
2039 const SLuint8 *pData,
2040 SLuint32 tick,
2041 SLuint16 track
2044 struct SLMIDIMessageItf_ {
2045 SLresult (*SendMessage) (
2046 SLMIDIMessageItf self,
2047 const SLuint8 *data,
2048 SLuint32 length
2050 SLresult (*RegisterMetaEventCallback) (
2051 SLMIDIMessageItf self,
2052 slMetaEventCallback callback,
2053 void *pContext
2055 SLresult (*RegisterMIDIMessageCallback) (
2056 SLMIDIMessageItf self,
2057 slMIDIMessageCallback callback,
2058 void *pContext
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,
2083 SLuint8 channel,
2084 SLboolean mute
2086 SLresult (*GetChannelMute) (
2087 SLMIDIMuteSoloItf self,
2088 SLuint8 channel,
2089 SLboolean *pMute
2091 SLresult (*SetChannelSolo) (
2092 SLMIDIMuteSoloItf self,
2093 SLuint8 channel,
2094 SLboolean solo
2096 SLresult (*GetChannelSolo) (
2097 SLMIDIMuteSoloItf self,
2098 SLuint8 channel,
2099 SLboolean *pSolo
2101 SLresult (*GetTrackCount) (
2102 SLMIDIMuteSoloItf self,
2103 SLuint16 *pCount
2105 SLresult (*SetTrackMute) (
2106 SLMIDIMuteSoloItf self,
2107 SLuint16 track,
2108 SLboolean mute
2110 SLresult (*GetTrackMute) (
2111 SLMIDIMuteSoloItf self,
2112 SLuint16 track,
2113 SLboolean *pMute
2115 SLresult (*SetTrackSolo) (
2116 SLMIDIMuteSoloItf self,
2117 SLuint16 track,
2118 SLboolean solo
2120 SLresult (*GetTrackSolo) (
2121 SLMIDIMuteSoloItf self,
2122 SLuint16 track,
2123 SLboolean *pSolo
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,
2141 SLuint32 tpqn
2143 SLresult (*GetTicksPerQuarterNote) (
2144 SLMIDITempoItf self,
2145 SLuint32 *pTpqn
2147 SLresult (*SetMicrosecondsPerQuarterNote) (
2148 SLMIDITempoItf self,
2149 SLmicrosecond uspqn
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) (
2170 SLMIDITimeItf self,
2171 SLuint32 *pDuration
2173 SLresult (*SetPosition) (
2174 SLMIDITimeItf self,
2175 SLuint32 position
2177 SLresult (*GetPosition) (
2178 SLMIDITimeItf self,
2179 SLuint32 *pPosition
2181 SLresult (*SetLoopPoints) (
2182 SLMIDITimeItf self,
2183 SLuint32 startTick,
2184 SLuint32 numTicks
2186 SLresult (*GetLoopPoints) (
2187 SLMIDITimeItf self,
2188 SLuint32 *pStartTick,
2189 SLuint32 *pNumTicks
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,
2316 SLuint32 decoderId,
2317 SLuint32 *pIndex,
2318 SLAudioCodecDescriptor *pDescriptor
2325 /*---------------------------------------------------------------------------*/
2326 /* Audio Encoder Capabilities Interface */
2327 /* --------------------------------------------------------------------------*/
2329 /* Structure used when setting audio encoding parameters */
2331 typedef struct SLAudioEncoderSettings_ {
2332 SLuint32 encoderId;
2333 SLuint32 channelsIn;
2334 SLuint32 channelsOut;
2335 SLmilliHertz sampleRate;
2336 SLuint32 bitRate;
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,
2360 SLuint32 encoderId,
2361 SLuint32 *pIndex,
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,
2402 SLboolean enabled
2404 SLresult (*IsEnabled)(
2405 SLBassBoostItf self,
2406 SLboolean *pEnabled
2408 SLresult (*SetStrength)(
2409 SLBassBoostItf self,
2410 SLpermille strength
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;
2429 struct SLPitchItf_;
2430 typedef const struct SLPitchItf_ * const * SLPitchItf;
2432 struct SLPitchItf_ {
2433 SLresult (*SetPitch) (
2434 SLPitchItf self,
2435 SLpermille pitch
2437 SLresult (*GetPitch) (
2438 SLPitchItf self,
2439 SLpermille *pPitch
2441 SLresult (*GetPitchCapabilities) (
2442 SLPitchItf self,
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,
2464 SLpermille rate
2466 SLresult (*GetRate) (
2467 SLRatePitchItf self,
2468 SLpermille *pRate
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,
2491 SLboolean enabled
2493 SLresult (*IsEnabled)(
2494 SLVirtualizerItf self,
2495 SLboolean *pEnabled
2497 SLresult (*SetStrength)(
2498 SLVirtualizerItf self,
2499 SLpermille strength
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) (
2522 void *pContext,
2523 const SLuint8 waveform[],
2524 const SLuint8 fft[],
2525 SLmilliHertz samplerate
2528 struct SLVisualizationItf_{
2529 SLresult (*RegisterVisualizationCallback)(
2530 SLVisualizationItf self,
2531 slVisualizationCallback callback,
2532 void *pContext,
2533 SLmilliHertz rate
2535 SLresult (*GetMaxRate)(
2536 SLVisualizationItf self,
2537 SLmilliHertz* pRate
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) (
2556 SLEngineItf self,
2557 SLObjectItf * pDevice,
2558 SLuint32 deviceID,
2559 SLuint32 numInterfaces,
2560 const SLInterfaceID * pInterfaceIds,
2561 const SLboolean * pInterfaceRequired
2563 SLresult (*CreateVibraDevice) (
2564 SLEngineItf self,
2565 SLObjectItf * pDevice,
2566 SLuint32 deviceID,
2567 SLuint32 numInterfaces,
2568 const SLInterfaceID * pInterfaceIds,
2569 const SLboolean * pInterfaceRequired
2571 SLresult (*CreateAudioPlayer) (
2572 SLEngineItf self,
2573 SLObjectItf * pPlayer,
2574 SLDataSource *pAudioSrc,
2575 SLDataSink *pAudioSnk,
2576 SLuint32 numInterfaces,
2577 const SLInterfaceID * pInterfaceIds,
2578 const SLboolean * pInterfaceRequired
2580 SLresult (*CreateAudioRecorder) (
2581 SLEngineItf self,
2582 SLObjectItf * pRecorder,
2583 SLDataSource *pAudioSrc,
2584 SLDataSink *pAudioSnk,
2585 SLuint32 numInterfaces,
2586 const SLInterfaceID * pInterfaceIds,
2587 const SLboolean * pInterfaceRequired
2589 SLresult (*CreateMidiPlayer) (
2590 SLEngineItf self,
2591 SLObjectItf * pPlayer,
2592 SLDataSource *pMIDISrc,
2593 SLDataSource *pBankSrc,
2594 SLDataSink *pAudioOutput,
2595 SLDataSink *pVibra,
2596 SLDataSink *pLEDArray,
2597 SLuint32 numInterfaces,
2598 const SLInterfaceID * pInterfaceIds,
2599 const SLboolean * pInterfaceRequired
2601 SLresult (*CreateListener) (
2602 SLEngineItf self,
2603 SLObjectItf * pListener,
2604 SLuint32 numInterfaces,
2605 const SLInterfaceID * pInterfaceIds,
2606 const SLboolean * pInterfaceRequired
2608 SLresult (*Create3DGroup) (
2609 SLEngineItf self,
2610 SLObjectItf * pGroup,
2611 SLuint32 numInterfaces,
2612 const SLInterfaceID * pInterfaceIds,
2613 const SLboolean * pInterfaceRequired
2615 SLresult (*CreateOutputMix) (
2616 SLEngineItf self,
2617 SLObjectItf * pMix,
2618 SLuint32 numInterfaces,
2619 const SLInterfaceID * pInterfaceIds,
2620 const SLboolean * pInterfaceRequired
2622 SLresult (*CreateMetadataExtractor) (
2623 SLEngineItf self,
2624 SLObjectItf * pMetadataExtractor,
2625 SLDataSource * pDataSource,
2626 SLuint32 numInterfaces,
2627 const SLInterfaceID * pInterfaceIds,
2628 const SLboolean * pInterfaceRequired
2630 SLresult (*CreateExtensionObject) (
2631 SLEngineItf self,
2632 SLObjectItf * pObject,
2633 void * pParameters,
2634 SLuint32 objectID,
2635 SLuint32 numInterfaces,
2636 const SLInterfaceID * pInterfaceIds,
2637 const SLboolean * pInterfaceRequired
2639 SLresult (*QueryNumSupportedInterfaces) (
2640 SLEngineItf self,
2641 SLuint32 objectID,
2642 SLuint32 * pNumSupportedInterfaces
2644 SLresult (*QuerySupportedInterfaces) (
2645 SLEngineItf self,
2646 SLuint32 objectID,
2647 SLuint32 index,
2648 SLInterfaceID * pInterfaceId
2650 SLresult (*QueryNumSupportedExtensions) (
2651 SLEngineItf self,
2652 SLuint32 * pNumExtensions
2654 SLresult (*QuerySupportedExtension) (
2655 SLEngineItf self,
2656 SLuint32 index,
2657 SLchar * pExtensionName,
2658 SLint16 * pNameLength
2660 SLresult (*IsExtensionSupported) (
2661 SLEngineItf self,
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,
2685 SLuint16 voiceType,
2686 SLint16 *pNumMaxVoices,
2687 SLboolean *pIsAbsoluteMax,
2688 SLint16 *pNumFreeVoices
2690 SLresult (*QueryNumberOfMIDISynthesizers) (
2691 SLEngineCapabilitiesItf self,
2692 SLint16 *pNumMIDIsynthesizers
2694 SLresult (*QueryAPIVersion) (
2695 SLEngineCapabilitiesItf self,
2696 SLint16 *pMajor,
2697 SLint16 *pMinor,
2698 SLint16 *pStep
2700 SLresult (*QueryLEDCapabilities) (
2701 SLEngineCapabilitiesItf self,
2702 SLuint32 *pIndex,
2703 SLuint32 *pLEDDeviceID,
2704 SLLEDDescriptor *pDescriptor
2706 SLresult (*QueryVibraCapabilities) (
2707 SLEngineCapabilitiesItf self,
2708 SLuint32 *pIndex,
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_ {
2747 SLuint32 feature;
2748 SLuint32 data;
2749 } 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(
2766 SLuint32 index,
2767 SLInterfaceID * pInterfaceId
2770 #ifdef __cplusplus
2771 } /* extern "C" */
2772 #endif
2774 #endif /* OPENSL_ES_H_ */