1 /* 2 * Copyright (c) 2007-2009 The Khronos Group Inc. 3 * 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: 11 * 12 * The above copyright notice and this permission notice shall be included 13 * in all copies or substantial portions of the Materials. 14 * 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. 22 * 23 * OpenSLES.h - OpenSL ES version 1.0.1 24 * 25 */ 26 27 /****************************************************************************/ 28 /* NOTE: This file is a standard OpenSL ES header file and should not be */ 29 /* modified in any way. */ 30 /****************************************************************************/ 31 32 #ifndef OPENSL_ES_H_ 33 #define OPENSL_ES_H_ 34 35 #ifdef __cplusplus 36 extern "C" { 37 #endif 38 39 #include "OpenSLES_Platform.h" 40 41 42 /*****************************************************************************/ 43 /* Common types, structures, and defines */ 44 /*****************************************************************************/ 45 46 #ifndef _KHRONOS_KEYS_ 47 #define _KHRONOS_KEYS_ 48 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" 61 62 #endif 63 64 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 */ 72 73 typedef SLuint32 SLboolean; 74 #define SL_BOOLEAN_FALSE ((SLboolean) 0x00000000) 75 #define SL_BOOLEAN_TRUE ((SLboolean) 0x00000001) 76 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; 86 87 #define SL_MILLIBEL_MAX ((SLmillibel) 0x7FFF) 88 #define SL_MILLIBEL_MIN ((SLmillibel) (-SL_MILLIBEL_MAX-1)) 89 90 #define SL_MILLIHERTZ_MAX ((SLmilliHertz) 0xFFFFFFFF) 91 #define SL_MILLIMETER_MAX ((SLmillimeter) 0x7FFFFFFF) 92 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; 101 102 /* Forward declaration for the object interface */ 103 struct SLObjectItf_; 104 105 typedef const struct SLObjectItf_ * const * SLObjectItf; 106 107 /* Objects ID's */ 108 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) 119 120 121 /* SL Profiles */ 122 123 #define SL_PROFILES_PHONE ((SLuint16) 0x0001) 124 #define SL_PROFILES_MUSIC ((SLuint16) 0x0002) 125 #define SL_PROFILES_GAME ((SLuint16) 0x0004) 126 127 /* Types of voices supported by the system */ 128 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) 133 134 /* Convenient macros representing various different priority levels, for use with the SetPriority method */ 135 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) 145 146 147 /** These macros list the various sample formats that are possible on audio input and output devices. */ 148 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) 155 156 157 /** These macros specify the commonly used sampling rates (in milliHertz) supported by most audio I/O devices. */ 158 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) 172 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) 191 192 193 /*****************************************************************************/ 194 /* Errors */ 195 /* */ 196 /*****************************************************************************/ 197 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) 215 216 217 /* Object state definitions */ 218 219 #define SL_OBJECT_STATE_UNREALIZED ((SLuint32) 0x00000001) 220 #define SL_OBJECT_STATE_REALIZED ((SLuint32) 0x00000002) 221 #define SL_OBJECT_STATE_SUSPENDED ((SLuint32) 0x00000003) 222 223 /* Object event definitions */ 224 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) 232 233 234 /*****************************************************************************/ 235 /* Interface definitions */ 236 /*****************************************************************************/ 237 238 /** NULL Interface */ 239 240 extern SL_API const SLInterfaceID SL_IID_NULL; 241 242 /*---------------------------------------------------------------------------*/ 243 /* Data Source and Data Sink Structures */ 244 /*---------------------------------------------------------------------------*/ 245 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) 255 256 257 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; 263 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; 270 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) 277 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; 285 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; 291 292 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; 298 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; 305 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) 310 311 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; 318 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) 322 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) 353 354 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; 365 366 typedef struct SLDataSource_ { 367 void *pLocator; 368 void *pFormat; 369 } SLDataSource; 370 371 372 typedef struct SLDataSink_ { 373 void *pLocator; 374 void *pFormat; 375 } SLDataSink; 376 377 378 379 380 381 382 /*---------------------------------------------------------------------------*/ 383 /* Standard Object Interface */ 384 /*---------------------------------------------------------------------------*/ 385 386 extern SL_API const SLInterfaceID SL_IID_OBJECT; 387 388 /** Object callback */ 389 390 391 typedef void (SLAPIENTRY *slObjectCallback) ( 392 SLObjectItf caller, 393 const void * pContext, 394 SLuint32 event, 395 SLresult result, 396 SLuint32 param, 397 void *pInterface 398 ); 399 400 401 struct SLObjectItf_ { 402 SLresult (*Realize) ( 403 SLObjectItf self, 404 SLboolean async 405 ); 406 SLresult (*Resume) ( 407 SLObjectItf self, 408 SLboolean async 409 ); 410 SLresult (*GetState) ( 411 SLObjectItf self, 412 SLuint32 * pState 413 ); 414 SLresult (*GetInterface) ( 415 SLObjectItf self, 416 const SLInterfaceID iid, 417 void * pInterface 418 ); 419 SLresult (*RegisterCallback) ( 420 SLObjectItf self, 421 slObjectCallback callback, 422 void * pContext 423 ); 424 void (*AbortAsyncOperation) ( 425 SLObjectItf self 426 ); 427 void (*Destroy) ( 428 SLObjectItf self 429 ); 430 SLresult (*SetPriority) ( 431 SLObjectItf self, 432 SLint32 priority, 433 SLboolean preemptable 434 ); 435 SLresult (*GetPriority) ( 436 SLObjectItf self, 437 SLint32 *pPriority, 438 SLboolean *pPreemptable 439 ); 440 SLresult (*SetLossOfControlInterfaces) ( 441 SLObjectItf self, 442 SLint16 numInterfaces, 443 SLInterfaceID * pInterfaceIDs, 444 SLboolean enabled 445 ); 446 }; 447 448 449 /*---------------------------------------------------------------------------*/ 450 /* Audio IO Device capabilities interface */ 451 /*---------------------------------------------------------------------------*/ 452 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) 458 459 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) 464 465 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) 473 474 475 #define SL_DEVSCOPE_UNKNOWN ((SLuint16) 0x0001) 476 #define SL_DEVSCOPE_ENVIRONMENT ((SLuint16) 0x0002) 477 #define SL_DEVSCOPE_USER ((SLuint16) 0x0003) 478 479 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; 493 494 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; 508 509 510 511 extern SL_API const SLInterfaceID SL_IID_AUDIOIODEVICECAPABILITIES; 512 513 struct SLAudioIODeviceCapabilitiesItf_; 514 typedef const struct SLAudioIODeviceCapabilitiesItf_ * const * SLAudioIODeviceCapabilitiesItf; 515 516 517 typedef void (SLAPIENTRY *slAvailableAudioInputsChangedCallback) ( 518 SLAudioIODeviceCapabilitiesItf caller, 519 void *pContext, 520 SLuint32 deviceID, 521 SLint32 numInputs, 522 SLboolean isNew 523 ); 524 525 526 typedef void (SLAPIENTRY *slAvailableAudioOutputsChangedCallback) ( 527 SLAudioIODeviceCapabilitiesItf caller, 528 void *pContext, 529 SLuint32 deviceID, 530 SLint32 numOutputs, 531 SLboolean isNew 532 ); 533 534 typedef void (SLAPIENTRY *slDefaultDeviceIDMapChangedCallback) ( 535 SLAudioIODeviceCapabilitiesItf caller, 536 void *pContext, 537 SLboolean isOutput, 538 SLint32 numDevices 539 ); 540 541 542 struct SLAudioIODeviceCapabilitiesItf_ { 543 SLresult (*GetAvailableAudioInputs)( 544 SLAudioIODeviceCapabilitiesItf self, 545 SLint32 *pNumInputs, 546 SLuint32 *pInputDeviceIDs 547 ); 548 SLresult (*QueryAudioInputCapabilities)( 549 SLAudioIODeviceCapabilitiesItf self, 550 SLuint32 deviceId, 551 SLAudioInputDescriptor *pDescriptor 552 ); 553 SLresult (*RegisterAvailableAudioInputsChangedCallback) ( 554 SLAudioIODeviceCapabilitiesItf self, 555 slAvailableAudioInputsChangedCallback callback, 556 void *pContext 557 ); 558 SLresult (*GetAvailableAudioOutputs)( 559 SLAudioIODeviceCapabilitiesItf self, 560 SLint32 *pNumOutputs, 561 SLuint32 *pOutputDeviceIDs 562 ); 563 SLresult (*QueryAudioOutputCapabilities)( 564 SLAudioIODeviceCapabilitiesItf self, 565 SLuint32 deviceId, 566 SLAudioOutputDescriptor *pDescriptor 567 ); 568 SLresult (*RegisterAvailableAudioOutputsChangedCallback) ( 569 SLAudioIODeviceCapabilitiesItf self, 570 slAvailableAudioOutputsChangedCallback callback, 571 void *pContext 572 ); 573 SLresult (*RegisterDefaultDeviceIDMapChangedCallback) ( 574 SLAudioIODeviceCapabilitiesItf self, 575 slDefaultDeviceIDMapChangedCallback callback, 576 void *pContext 577 ); 578 SLresult (*GetAssociatedAudioInputs) ( 579 SLAudioIODeviceCapabilitiesItf self, 580 SLuint32 deviceId, 581 SLint32 *pNumAudioInputs, 582 SLuint32 *pAudioInputDeviceIDs 583 ); 584 SLresult (*GetAssociatedAudioOutputs) ( 585 SLAudioIODeviceCapabilitiesItf self, 586 SLuint32 deviceId, 587 SLint32 *pNumAudioOutputs, 588 SLuint32 *pAudioOutputDeviceIDs 589 ); 590 SLresult (*GetDefaultAudioDevices) ( 591 SLAudioIODeviceCapabilitiesItf self, 592 SLuint32 defaultDeviceID, 593 SLint32 *pNumAudioDevices, 594 SLuint32 *pAudioDeviceIDs 595 ); 596 SLresult (*QuerySampleFormatsSupported)( 597 SLAudioIODeviceCapabilitiesItf self, 598 SLuint32 deviceId, 599 SLmilliHertz samplingRate, 600 SLint32 *pSampleFormats, 601 SLint32 *pNumOfSampleFormats 602 ); 603 }; 604 605 606 607 /*---------------------------------------------------------------------------*/ 608 /* Capabilities of the LED array IODevice */ 609 /*---------------------------------------------------------------------------*/ 610 611 typedef struct SLLEDDescriptor_ { 612 SLuint8 ledCount; 613 SLuint8 primaryLED; 614 SLuint32 colorMask; 615 } SLLEDDescriptor; 616 617 618 /*---------------------------------------------------------------------------*/ 619 /* LED Array interface */ 620 /*---------------------------------------------------------------------------*/ 621 622 typedef struct SLHSL_ { 623 SLmillidegree hue; 624 SLpermille saturation; 625 SLpermille lightness; 626 } SLHSL; 627 628 629 extern SL_API const SLInterfaceID SL_IID_LED; 630 631 struct SLLEDArrayItf_; 632 typedef const struct SLLEDArrayItf_ * const * SLLEDArrayItf; 633 634 struct SLLEDArrayItf_ { 635 SLresult (*ActivateLEDArray) ( 636 SLLEDArrayItf self, 637 SLuint32 lightMask 638 ); 639 SLresult (*IsLEDArrayActivated) ( 640 SLLEDArrayItf self, 641 SLuint32 *lightMask 642 ); 643 SLresult (*SetColor) ( 644 SLLEDArrayItf self, 645 SLuint8 index, 646 const SLHSL *color 647 ); 648 SLresult (*GetColor) ( 649 SLLEDArrayItf self, 650 SLuint8 index, 651 SLHSL *color 652 ); 653 }; 654 655 /*---------------------------------------------------------------------------*/ 656 /* Capabilities of the Vibra IODevice */ 657 /*---------------------------------------------------------------------------*/ 658 659 typedef struct SLVibraDescriptor_ { 660 SLboolean supportsFrequency; 661 SLboolean supportsIntensity; 662 SLmilliHertz minFrequency; 663 SLmilliHertz maxFrequency; 664 } SLVibraDescriptor; 665 666 667 668 /*---------------------------------------------------------------------------*/ 669 /* Vibra interface */ 670 /*---------------------------------------------------------------------------*/ 671 672 673 extern SL_API const SLInterfaceID SL_IID_VIBRA; 674 675 676 struct SLVibraItf_; 677 typedef const struct SLVibraItf_ * const * SLVibraItf; 678 679 struct SLVibraItf_ { 680 SLresult (*Vibrate) ( 681 SLVibraItf self, 682 SLboolean vibrate 683 ); 684 SLresult (*IsVibrating) ( 685 SLVibraItf self, 686 SLboolean *pVibrating 687 ); 688 SLresult (*SetFrequency) ( 689 SLVibraItf self, 690 SLmilliHertz frequency 691 ); 692 SLresult (*GetFrequency) ( 693 SLVibraItf self, 694 SLmilliHertz *pFrequency 695 ); 696 SLresult (*SetIntensity) ( 697 SLVibraItf self, 698 SLpermille intensity 699 ); 700 SLresult (*GetIntensity) ( 701 SLVibraItf self, 702 SLpermille *pIntensity 703 ); 704 }; 705 706 707 /*---------------------------------------------------------------------------*/ 708 /* Meta data extraction related types and interface */ 709 /*---------------------------------------------------------------------------*/ 710 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) 745 746 747 #define SL_METADATA_FILTER_KEY ((SLuint8) 0x01) 748 #define SL_METADATA_FILTER_LANG ((SLuint8) 0x02) 749 #define SL_METADATA_FILTER_ENCODING ((SLuint8) 0x04) 750 751 752 typedef struct SLMetadataInfo_ { 753 SLuint32 size; 754 SLuint32 encoding; 755 SLchar langCountry[16]; 756 SLuint8 data[1]; 757 } SLMetadataInfo; 758 759 extern SL_API const SLInterfaceID SL_IID_METADATAEXTRACTION; 760 761 struct SLMetadataExtractionItf_; 762 typedef const struct SLMetadataExtractionItf_ * const * SLMetadataExtractionItf; 763 764 765 struct SLMetadataExtractionItf_ { 766 SLresult (*GetItemCount) ( 767 SLMetadataExtractionItf self, 768 SLuint32 *pItemCount 769 ); 770 SLresult (*GetKeySize) ( 771 SLMetadataExtractionItf self, 772 SLuint32 index, 773 SLuint32 *pKeySize 774 ); 775 SLresult (*GetKey) ( 776 SLMetadataExtractionItf self, 777 SLuint32 index, 778 SLuint32 keySize, 779 SLMetadataInfo *pKey 780 ); 781 SLresult (*GetValueSize) ( 782 SLMetadataExtractionItf self, 783 SLuint32 index, 784 SLuint32 *pValueSize 785 ); 786 SLresult (*GetValue) ( 787 SLMetadataExtractionItf self, 788 SLuint32 index, 789 SLuint32 valueSize, 790 SLMetadataInfo *pValue 791 ); 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 800 ); 801 SLresult (*ClearKeyFilter) ( 802 SLMetadataExtractionItf self 803 ); 804 }; 805 806 807 /*---------------------------------------------------------------------------*/ 808 /* Meta data traversal related types and interface */ 809 /*---------------------------------------------------------------------------*/ 810 811 #define SL_METADATATRAVERSALMODE_ALL ((SLuint32) 0x00000001) 812 #define SL_METADATATRAVERSALMODE_NODE ((SLuint32) 0x00000002) 813 814 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) 819 820 #define SL_NODE_PARENT 0xFFFFFFFF 821 822 extern SL_API const SLInterfaceID SL_IID_METADATATRAVERSAL; 823 824 struct SLMetadataTraversalItf_; 825 typedef const struct SLMetadataTraversalItf_ * const * SLMetadataTraversalItf; 826 827 struct SLMetadataTraversalItf_ { 828 SLresult (*SetMode) ( 829 SLMetadataTraversalItf self, 830 SLuint32 mode 831 ); 832 SLresult (*GetChildCount) ( 833 SLMetadataTraversalItf self, 834 SLuint32 *pCount 835 ); 836 SLresult (*GetChildMIMETypeSize) ( 837 SLMetadataTraversalItf self, 838 SLuint32 index, 839 SLuint32 *pSize 840 ); 841 SLresult (*GetChildInfo) ( 842 SLMetadataTraversalItf self, 843 SLuint32 index, 844 SLint32 *pNodeID, 845 SLuint32 *pType, 846 SLuint32 size, 847 SLchar *pMimeType 848 ); 849 SLresult (*SetActiveNode) ( 850 SLMetadataTraversalItf self, 851 SLuint32 index 852 ); 853 }; 854 855 /*---------------------------------------------------------------------------*/ 856 /* Dynamic Source types and interface */ 857 /*---------------------------------------------------------------------------*/ 858 859 extern SL_API const SLInterfaceID SL_IID_DYNAMICSOURCE; 860 861 struct SLDynamicSourceItf_; 862 typedef const struct SLDynamicSourceItf_ * const * SLDynamicSourceItf; 863 864 struct SLDynamicSourceItf_ { 865 SLresult (*SetSource) ( 866 SLDynamicSourceItf self, 867 SLDataSource *pDataSource 868 ); 869 }; 870 871 /*---------------------------------------------------------------------------*/ 872 /* Output Mix interface */ 873 /*---------------------------------------------------------------------------*/ 874 875 extern SL_API const SLInterfaceID SL_IID_OUTPUTMIX; 876 877 struct SLOutputMixItf_; 878 typedef const struct SLOutputMixItf_ * const * SLOutputMixItf; 879 880 typedef void (SLAPIENTRY *slMixDeviceChangeCallback) ( 881 SLOutputMixItf caller, 882 void *pContext 883 ); 884 885 886 struct SLOutputMixItf_ { 887 SLresult (*GetDestinationOutputDeviceIDs) ( 888 SLOutputMixItf self, 889 SLint32 *pNumDevices, 890 SLuint32 *pDeviceIDs 891 ); 892 SLresult (*RegisterDeviceChangeCallback) ( 893 SLOutputMixItf self, 894 slMixDeviceChangeCallback callback, 895 void *pContext 896 ); 897 SLresult (*ReRoute)( 898 SLOutputMixItf self, 899 SLint32 numOutputDevices, 900 SLuint32 *pOutputDeviceIDs 901 ); 902 }; 903 904 905 /*---------------------------------------------------------------------------*/ 906 /* Playback interface */ 907 /*---------------------------------------------------------------------------*/ 908 909 /** Playback states */ 910 #define SL_PLAYSTATE_STOPPED ((SLuint32) 0x00000001) 911 #define SL_PLAYSTATE_PAUSED ((SLuint32) 0x00000002) 912 #define SL_PLAYSTATE_PLAYING ((SLuint32) 0x00000003) 913 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) 920 921 #define SL_TIME_UNKNOWN ((SLuint32) 0xFFFFFFFF) 922 923 924 extern SL_API const SLInterfaceID SL_IID_PLAY; 925 926 /** Playback interface methods */ 927 928 struct SLPlayItf_; 929 typedef const struct SLPlayItf_ * const * SLPlayItf; 930 931 typedef void (SLAPIENTRY *slPlayCallback) ( 932 SLPlayItf caller, 933 void *pContext, 934 SLuint32 event 935 ); 936 937 struct SLPlayItf_ { 938 SLresult (*SetPlayState) ( 939 SLPlayItf self, 940 SLuint32 state 941 ); 942 SLresult (*GetPlayState) ( 943 SLPlayItf self, 944 SLuint32 *pState 945 ); 946 SLresult (*GetDuration) ( 947 SLPlayItf self, 948 SLmillisecond *pMsec 949 ); 950 SLresult (*GetPosition) ( 951 SLPlayItf self, 952 SLmillisecond *pMsec 953 ); 954 SLresult (*RegisterCallback) ( 955 SLPlayItf self, 956 slPlayCallback callback, 957 void *pContext 958 ); 959 SLresult (*SetCallbackEventsMask) ( 960 SLPlayItf self, 961 SLuint32 eventFlags 962 ); 963 SLresult (*GetCallbackEventsMask) ( 964 SLPlayItf self, 965 SLuint32 *pEventFlags 966 ); 967 SLresult (*SetMarkerPosition) ( 968 SLPlayItf self, 969 SLmillisecond mSec 970 ); 971 SLresult (*ClearMarkerPosition) ( 972 SLPlayItf self 973 ); 974 SLresult (*GetMarkerPosition) ( 975 SLPlayItf self, 976 SLmillisecond *pMsec 977 ); 978 SLresult (*SetPositionUpdatePeriod) ( 979 SLPlayItf self, 980 SLmillisecond mSec 981 ); 982 SLresult (*GetPositionUpdatePeriod) ( 983 SLPlayItf self, 984 SLmillisecond *pMsec 985 ); 986 }; 987 988 /*---------------------------------------------------------------------------*/ 989 /* Prefetch status interface */ 990 /*---------------------------------------------------------------------------*/ 991 992 #define SL_PREFETCHEVENT_STATUSCHANGE ((SLuint32) 0x00000001) 993 #define SL_PREFETCHEVENT_FILLLEVELCHANGE ((SLuint32) 0x00000002) 994 995 #define SL_PREFETCHSTATUS_UNDERFLOW ((SLuint32) 0x00000001) 996 #define SL_PREFETCHSTATUS_SUFFICIENTDATA ((SLuint32) 0x00000002) 997 #define SL_PREFETCHSTATUS_OVERFLOW ((SLuint32) 0x00000003) 998 999 1000 extern SL_API const SLInterfaceID SL_IID_PREFETCHSTATUS; 1001 1002 1003 /** Prefetch status interface methods */ 1004 1005 struct SLPrefetchStatusItf_; 1006 typedef const struct SLPrefetchStatusItf_ * const * SLPrefetchStatusItf; 1007 1008 typedef void (SLAPIENTRY *slPrefetchCallback) ( 1009 SLPrefetchStatusItf caller, 1010 void *pContext, 1011 SLuint32 event 1012 ); 1013 1014 struct SLPrefetchStatusItf_ { 1015 SLresult (*GetPrefetchStatus) ( 1016 SLPrefetchStatusItf self, 1017 SLuint32 *pStatus 1018 ); 1019 SLresult (*GetFillLevel) ( 1020 SLPrefetchStatusItf self, 1021 SLpermille *pLevel 1022 ); 1023 SLresult (*RegisterCallback) ( 1024 SLPrefetchStatusItf self, 1025 slPrefetchCallback callback, 1026 void *pContext 1027 ); 1028 SLresult (*SetCallbackEventsMask) ( 1029 SLPrefetchStatusItf self, 1030 SLuint32 eventFlags 1031 ); 1032 SLresult (*GetCallbackEventsMask) ( 1033 SLPrefetchStatusItf self, 1034 SLuint32 *pEventFlags 1035 ); 1036 SLresult (*SetFillUpdatePeriod) ( 1037 SLPrefetchStatusItf self, 1038 SLpermille period 1039 ); 1040 SLresult (*GetFillUpdatePeriod) ( 1041 SLPrefetchStatusItf self, 1042 SLpermille *pPeriod 1043 ); 1044 }; 1045 1046 /*---------------------------------------------------------------------------*/ 1047 /* Playback Rate interface */ 1048 /*---------------------------------------------------------------------------*/ 1049 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) 1056 1057 1058 extern SL_API const SLInterfaceID SL_IID_PLAYBACKRATE; 1059 1060 struct SLPlaybackRateItf_; 1061 typedef const struct SLPlaybackRateItf_ * const * SLPlaybackRateItf; 1062 1063 struct SLPlaybackRateItf_ { 1064 SLresult (*SetRate)( 1065 SLPlaybackRateItf self, 1066 SLpermille rate 1067 ); 1068 SLresult (*GetRate)( 1069 SLPlaybackRateItf self, 1070 SLpermille *pRate 1071 ); 1072 SLresult (*SetPropertyConstraints)( 1073 SLPlaybackRateItf self, 1074 SLuint32 constraints 1075 ); 1076 SLresult (*GetProperties)( 1077 SLPlaybackRateItf self, 1078 SLuint32 *pProperties 1079 ); 1080 SLresult (*GetCapabilitiesOfRate)( 1081 SLPlaybackRateItf self, 1082 SLpermille rate, 1083 SLuint32 *pCapabilities 1084 ); 1085 SLresult (*GetRateRange) ( 1086 SLPlaybackRateItf self, 1087 SLuint8 index, 1088 SLpermille *pMinRate, 1089 SLpermille *pMaxRate, 1090 SLpermille *pStepSize, 1091 SLuint32 *pCapabilities 1092 ); 1093 }; 1094 1095 /*---------------------------------------------------------------------------*/ 1096 /* Seek Interface */ 1097 /*---------------------------------------------------------------------------*/ 1098 1099 #define SL_SEEKMODE_FAST ((SLuint32) 0x0001) 1100 #define SL_SEEKMODE_ACCURATE ((SLuint32) 0x0002) 1101 1102 extern SL_API const SLInterfaceID SL_IID_SEEK; 1103 1104 struct SLSeekItf_; 1105 typedef const struct SLSeekItf_ * const * SLSeekItf; 1106 1107 struct SLSeekItf_ { 1108 SLresult (*SetPosition)( 1109 SLSeekItf self, 1110 SLmillisecond pos, 1111 SLuint32 seekMode 1112 ); 1113 SLresult (*SetLoop)( 1114 SLSeekItf self, 1115 SLboolean loopEnable, 1116 SLmillisecond startPos, 1117 SLmillisecond endPos 1118 ); 1119 SLresult (*GetLoop)( 1120 SLSeekItf self, 1121 SLboolean *pLoopEnabled, 1122 SLmillisecond *pStartPos, 1123 SLmillisecond *pEndPos 1124 ); 1125 }; 1126 1127 /*---------------------------------------------------------------------------*/ 1128 /* Standard Recording Interface */ 1129 /*---------------------------------------------------------------------------*/ 1130 1131 /** Recording states */ 1132 #define SL_RECORDSTATE_STOPPED ((SLuint32) 0x00000001) 1133 #define SL_RECORDSTATE_PAUSED ((SLuint32) 0x00000002) 1134 #define SL_RECORDSTATE_RECORDING ((SLuint32) 0x00000003) 1135 1136 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) 1146 1147 1148 extern SL_API const SLInterfaceID SL_IID_RECORD; 1149 1150 struct SLRecordItf_; 1151 typedef const struct SLRecordItf_ * const * SLRecordItf; 1152 1153 typedef void (SLAPIENTRY *slRecordCallback) ( 1154 SLRecordItf caller, 1155 void *pContext, 1156 SLuint32 event 1157 ); 1158 1159 /** Recording interface methods */ 1160 struct SLRecordItf_ { 1161 SLresult (*SetRecordState) ( 1162 SLRecordItf self, 1163 SLuint32 state 1164 ); 1165 SLresult (*GetRecordState) ( 1166 SLRecordItf self, 1167 SLuint32 *pState 1168 ); 1169 SLresult (*SetDurationLimit) ( 1170 SLRecordItf self, 1171 SLmillisecond msec 1172 ); 1173 SLresult (*GetPosition) ( 1174 SLRecordItf self, 1175 SLmillisecond *pMsec 1176 ); 1177 SLresult (*RegisterCallback) ( 1178 SLRecordItf self, 1179 slRecordCallback callback, 1180 void *pContext 1181 ); 1182 SLresult (*SetCallbackEventsMask) ( 1183 SLRecordItf self, 1184 SLuint32 eventFlags 1185 ); 1186 SLresult (*GetCallbackEventsMask) ( 1187 SLRecordItf self, 1188 SLuint32 *pEventFlags 1189 ); 1190 SLresult (*SetMarkerPosition) ( 1191 SLRecordItf self, 1192 SLmillisecond mSec 1193 ); 1194 SLresult (*ClearMarkerPosition) ( 1195 SLRecordItf self 1196 ); 1197 SLresult (*GetMarkerPosition) ( 1198 SLRecordItf self, 1199 SLmillisecond *pMsec 1200 ); 1201 SLresult (*SetPositionUpdatePeriod) ( 1202 SLRecordItf self, 1203 SLmillisecond mSec 1204 ); 1205 SLresult (*GetPositionUpdatePeriod) ( 1206 SLRecordItf self, 1207 SLmillisecond *pMsec 1208 ); 1209 }; 1210 1211 /*---------------------------------------------------------------------------*/ 1212 /* Equalizer interface */ 1213 /*---------------------------------------------------------------------------*/ 1214 1215 #define SL_EQUALIZER_UNDEFINED ((SLuint16) 0xFFFF) 1216 1217 extern SL_API const SLInterfaceID SL_IID_EQUALIZER; 1218 1219 struct SLEqualizerItf_; 1220 typedef const struct SLEqualizerItf_ * const * SLEqualizerItf; 1221 1222 struct SLEqualizerItf_ { 1223 SLresult (*SetEnabled)( 1224 SLEqualizerItf self, 1225 SLboolean enabled 1226 ); 1227 SLresult (*IsEnabled)( 1228 SLEqualizerItf self, 1229 SLboolean *pEnabled 1230 ); 1231 SLresult (*GetNumberOfBands)( 1232 SLEqualizerItf self, 1233 SLuint16 *pAmount 1234 ); 1235 SLresult (*GetBandLevelRange)( 1236 SLEqualizerItf self, 1237 SLmillibel *pMin, 1238 SLmillibel *pMax 1239 ); 1240 SLresult (*SetBandLevel)( 1241 SLEqualizerItf self, 1242 SLuint16 band, 1243 SLmillibel level 1244 ); 1245 SLresult (*GetBandLevel)( 1246 SLEqualizerItf self, 1247 SLuint16 band, 1248 SLmillibel *pLevel 1249 ); 1250 SLresult (*GetCenterFreq)( 1251 SLEqualizerItf self, 1252 SLuint16 band, 1253 SLmilliHertz *pCenter 1254 ); 1255 SLresult (*GetBandFreqRange)( 1256 SLEqualizerItf self, 1257 SLuint16 band, 1258 SLmilliHertz *pMin, 1259 SLmilliHertz *pMax 1260 ); 1261 SLresult (*GetBand)( 1262 SLEqualizerItf self, 1263 SLmilliHertz frequency, 1264 SLuint16 *pBand 1265 ); 1266 SLresult (*GetCurrentPreset)( 1267 SLEqualizerItf self, 1268 SLuint16 *pPreset 1269 ); 1270 SLresult (*UsePreset)( 1271 SLEqualizerItf self, 1272 SLuint16 index 1273 ); 1274 SLresult (*GetNumberOfPresets)( 1275 SLEqualizerItf self, 1276 SLuint16 *pNumPresets 1277 ); 1278 SLresult (*GetPresetName)( 1279 SLEqualizerItf self, 1280 SLuint16 index, 1281 const SLchar ** ppName 1282 ); 1283 }; 1284 1285 /*---------------------------------------------------------------------------*/ 1286 /* Volume Interface */ 1287 /* --------------------------------------------------------------------------*/ 1288 1289 extern SL_API const SLInterfaceID SL_IID_VOLUME; 1290 1291 struct SLVolumeItf_; 1292 typedef const struct SLVolumeItf_ * const * SLVolumeItf; 1293 1294 struct SLVolumeItf_ { 1295 SLresult (*SetVolumeLevel) ( 1296 SLVolumeItf self, 1297 SLmillibel level 1298 ); 1299 SLresult (*GetVolumeLevel) ( 1300 SLVolumeItf self, 1301 SLmillibel *pLevel 1302 ); 1303 SLresult (*GetMaxVolumeLevel) ( 1304 SLVolumeItf self, 1305 SLmillibel *pMaxLevel 1306 ); 1307 SLresult (*SetMute) ( 1308 SLVolumeItf self, 1309 SLboolean mute 1310 ); 1311 SLresult (*GetMute) ( 1312 SLVolumeItf self, 1313 SLboolean *pMute 1314 ); 1315 SLresult (*EnableStereoPosition) ( 1316 SLVolumeItf self, 1317 SLboolean enable 1318 ); 1319 SLresult (*IsEnabledStereoPosition) ( 1320 SLVolumeItf self, 1321 SLboolean *pEnable 1322 ); 1323 SLresult (*SetStereoPosition) ( 1324 SLVolumeItf self, 1325 SLpermille stereoPosition 1326 ); 1327 SLresult (*GetStereoPosition) ( 1328 SLVolumeItf self, 1329 SLpermille *pStereoPosition 1330 ); 1331 }; 1332 1333 1334 /*---------------------------------------------------------------------------*/ 1335 /* Device Volume Interface */ 1336 /* --------------------------------------------------------------------------*/ 1337 1338 extern SL_API const SLInterfaceID SL_IID_DEVICEVOLUME; 1339 1340 struct SLDeviceVolumeItf_; 1341 typedef const struct SLDeviceVolumeItf_ * const * SLDeviceVolumeItf; 1342 1343 struct SLDeviceVolumeItf_ { 1344 SLresult (*GetVolumeScale) ( 1345 SLDeviceVolumeItf self, 1346 SLuint32 deviceID, 1347 SLint32 *pMinValue, 1348 SLint32 *pMaxValue, 1349 SLboolean *pIsMillibelScale 1350 ); 1351 SLresult (*SetVolume) ( 1352 SLDeviceVolumeItf self, 1353 SLuint32 deviceID, 1354 SLint32 volume 1355 ); 1356 SLresult (*GetVolume) ( 1357 SLDeviceVolumeItf self, 1358 SLuint32 deviceID, 1359 SLint32 *pVolume 1360 ); 1361 }; 1362 1363 1364 /*---------------------------------------------------------------------------*/ 1365 /* Buffer Queue Interface */ 1366 /*---------------------------------------------------------------------------*/ 1367 1368 extern SL_API const SLInterfaceID SL_IID_BUFFERQUEUE; 1369 1370 struct SLBufferQueueItf_; 1371 typedef const struct SLBufferQueueItf_ * const * SLBufferQueueItf; 1372 1373 typedef void (SLAPIENTRY *slBufferQueueCallback)( 1374 SLBufferQueueItf caller, 1375 void *pContext 1376 ); 1377 1378 /** Buffer queue state **/ 1379 1380 typedef struct SLBufferQueueState_ { 1381 SLuint32 count; 1382 SLuint32 playIndex; 1383 } SLBufferQueueState; 1384 1385 1386 struct SLBufferQueueItf_ { 1387 SLresult (*Enqueue) ( 1388 SLBufferQueueItf self, 1389 const void *pBuffer, 1390 SLuint32 size 1391 ); 1392 SLresult (*Clear) ( 1393 SLBufferQueueItf self 1394 ); 1395 SLresult (*GetState) ( 1396 SLBufferQueueItf self, 1397 SLBufferQueueState *pState 1398 ); 1399 SLresult (*RegisterCallback) ( 1400 SLBufferQueueItf self, 1401 slBufferQueueCallback callback, 1402 void* pContext 1403 ); 1404 }; 1405 1406 1407 /*---------------------------------------------------------------------------*/ 1408 /* PresetReverb */ 1409 /*---------------------------------------------------------------------------*/ 1410 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) 1418 1419 1420 extern SL_API const SLInterfaceID SL_IID_PRESETREVERB; 1421 1422 struct SLPresetReverbItf_; 1423 typedef const struct SLPresetReverbItf_ * const * SLPresetReverbItf; 1424 1425 struct SLPresetReverbItf_ { 1426 SLresult (*SetPreset) ( 1427 SLPresetReverbItf self, 1428 SLuint16 preset 1429 ); 1430 SLresult (*GetPreset) ( 1431 SLPresetReverbItf self, 1432 SLuint16 *pPreset 1433 ); 1434 }; 1435 1436 1437 /*---------------------------------------------------------------------------*/ 1438 /* EnvironmentalReverb */ 1439 /*---------------------------------------------------------------------------*/ 1440 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 } 1501 1502 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; 1515 1516 1517 1518 1519 extern SL_API const SLInterfaceID SL_IID_ENVIRONMENTALREVERB; 1520 1521 1522 struct SLEnvironmentalReverbItf_; 1523 typedef const struct SLEnvironmentalReverbItf_ * const * SLEnvironmentalReverbItf; 1524 1525 struct SLEnvironmentalReverbItf_ { 1526 SLresult (*SetRoomLevel) ( 1527 SLEnvironmentalReverbItf self, 1528 SLmillibel room 1529 ); 1530 SLresult (*GetRoomLevel) ( 1531 SLEnvironmentalReverbItf self, 1532 SLmillibel *pRoom 1533 ); 1534 SLresult (*SetRoomHFLevel) ( 1535 SLEnvironmentalReverbItf self, 1536 SLmillibel roomHF 1537 ); 1538 SLresult (*GetRoomHFLevel) ( 1539 SLEnvironmentalReverbItf self, 1540 SLmillibel *pRoomHF 1541 ); 1542 SLresult (*SetDecayTime) ( 1543 SLEnvironmentalReverbItf self, 1544 SLmillisecond decayTime 1545 ); 1546 SLresult (*GetDecayTime) ( 1547 SLEnvironmentalReverbItf self, 1548 SLmillisecond *pDecayTime 1549 ); 1550 SLresult (*SetDecayHFRatio) ( 1551 SLEnvironmentalReverbItf self, 1552 SLpermille decayHFRatio 1553 ); 1554 SLresult (*GetDecayHFRatio) ( 1555 SLEnvironmentalReverbItf self, 1556 SLpermille *pDecayHFRatio 1557 ); 1558 SLresult (*SetReflectionsLevel) ( 1559 SLEnvironmentalReverbItf self, 1560 SLmillibel reflectionsLevel 1561 ); 1562 SLresult (*GetReflectionsLevel) ( 1563 SLEnvironmentalReverbItf self, 1564 SLmillibel *pReflectionsLevel 1565 ); 1566 SLresult (*SetReflectionsDelay) ( 1567 SLEnvironmentalReverbItf self, 1568 SLmillisecond reflectionsDelay 1569 ); 1570 SLresult (*GetReflectionsDelay) ( 1571 SLEnvironmentalReverbItf self, 1572 SLmillisecond *pReflectionsDelay 1573 ); 1574 SLresult (*SetReverbLevel) ( 1575 SLEnvironmentalReverbItf self, 1576 SLmillibel reverbLevel 1577 ); 1578 SLresult (*GetReverbLevel) ( 1579 SLEnvironmentalReverbItf self, 1580 SLmillibel *pReverbLevel 1581 ); 1582 SLresult (*SetReverbDelay) ( 1583 SLEnvironmentalReverbItf self, 1584 SLmillisecond reverbDelay 1585 ); 1586 SLresult (*GetReverbDelay) ( 1587 SLEnvironmentalReverbItf self, 1588 SLmillisecond *pReverbDelay 1589 ); 1590 SLresult (*SetDiffusion) ( 1591 SLEnvironmentalReverbItf self, 1592 SLpermille diffusion 1593 ); 1594 SLresult (*GetDiffusion) ( 1595 SLEnvironmentalReverbItf self, 1596 SLpermille *pDiffusion 1597 ); 1598 SLresult (*SetDensity) ( 1599 SLEnvironmentalReverbItf self, 1600 SLpermille density 1601 ); 1602 SLresult (*GetDensity) ( 1603 SLEnvironmentalReverbItf self, 1604 SLpermille *pDensity 1605 ); 1606 SLresult (*SetEnvironmentalReverbProperties) ( 1607 SLEnvironmentalReverbItf self, 1608 const SLEnvironmentalReverbSettings *pProperties 1609 ); 1610 SLresult (*GetEnvironmentalReverbProperties) ( 1611 SLEnvironmentalReverbItf self, 1612 SLEnvironmentalReverbSettings *pProperties 1613 ); 1614 }; 1615 1616 /*---------------------------------------------------------------------------*/ 1617 /* Effects Send Interface */ 1618 /*---------------------------------------------------------------------------*/ 1619 1620 1621 extern SL_API const SLInterfaceID SL_IID_EFFECTSEND; 1622 1623 struct SLEffectSendItf_; 1624 typedef const struct SLEffectSendItf_ * const * SLEffectSendItf; 1625 1626 struct SLEffectSendItf_ { 1627 SLresult (*EnableEffectSend) ( 1628 SLEffectSendItf self, 1629 const void *pAuxEffect, 1630 SLboolean enable, 1631 SLmillibel initialLevel 1632 ); 1633 SLresult (*IsEnabled) ( 1634 SLEffectSendItf self, 1635 const void * pAuxEffect, 1636 SLboolean *pEnable 1637 ); 1638 SLresult (*SetDirectLevel) ( 1639 SLEffectSendItf self, 1640 SLmillibel directLevel 1641 ); 1642 SLresult (*GetDirectLevel) ( 1643 SLEffectSendItf self, 1644 SLmillibel *pDirectLevel 1645 ); 1646 SLresult (*SetSendLevel) ( 1647 SLEffectSendItf self, 1648 const void *pAuxEffect, 1649 SLmillibel sendLevel 1650 ); 1651 SLresult (*GetSendLevel)( 1652 SLEffectSendItf self, 1653 const void *pAuxEffect, 1654 SLmillibel *pSendLevel 1655 ); 1656 }; 1657 1658 1659 /*---------------------------------------------------------------------------*/ 1660 /* 3D Grouping Interface */ 1661 /*---------------------------------------------------------------------------*/ 1662 1663 1664 extern SL_API const SLInterfaceID SL_IID_3DGROUPING; 1665 1666 1667 struct SL3DGroupingItf_ ; 1668 typedef const struct SL3DGroupingItf_ * const * SL3DGroupingItf; 1669 1670 struct SL3DGroupingItf_ { 1671 SLresult (*Set3DGroup) ( 1672 SL3DGroupingItf self, 1673 SLObjectItf group 1674 ); 1675 SLresult (*Get3DGroup) ( 1676 SL3DGroupingItf self, 1677 SLObjectItf *pGroup 1678 ); 1679 }; 1680 1681 1682 /*---------------------------------------------------------------------------*/ 1683 /* 3D Commit Interface */ 1684 /*---------------------------------------------------------------------------*/ 1685 1686 1687 extern SL_API const SLInterfaceID SL_IID_3DCOMMIT; 1688 1689 struct SL3DCommitItf_; 1690 typedef const struct SL3DCommitItf_* const * SL3DCommitItf; 1691 1692 struct SL3DCommitItf_ { 1693 SLresult (*Commit) ( 1694 SL3DCommitItf self 1695 ); 1696 SLresult (*SetDeferred) ( 1697 SL3DCommitItf self, 1698 SLboolean deferred 1699 ); 1700 }; 1701 1702 1703 /*---------------------------------------------------------------------------*/ 1704 /* 3D Location Interface */ 1705 /*---------------------------------------------------------------------------*/ 1706 1707 typedef struct SLVec3D_ { 1708 SLint32 x; 1709 SLint32 y; 1710 SLint32 z; 1711 } SLVec3D; 1712 1713 extern SL_API const SLInterfaceID SL_IID_3DLOCATION; 1714 1715 struct SL3DLocationItf_; 1716 typedef const struct SL3DLocationItf_ * const * SL3DLocationItf; 1717 1718 struct SL3DLocationItf_ { 1719 SLresult (*SetLocationCartesian) ( 1720 SL3DLocationItf self, 1721 const SLVec3D *pLocation 1722 ); 1723 SLresult (*SetLocationSpherical) ( 1724 SL3DLocationItf self, 1725 SLmillidegree azimuth, 1726 SLmillidegree elevation, 1727 SLmillimeter distance 1728 ); 1729 SLresult (*Move) ( 1730 SL3DLocationItf self, 1731 const SLVec3D *pMovement 1732 ); 1733 SLresult (*GetLocationCartesian) ( 1734 SL3DLocationItf self, 1735 SLVec3D *pLocation 1736 ); 1737 SLresult (*SetOrientationVectors) ( 1738 SL3DLocationItf self, 1739 const SLVec3D *pFront, 1740 const SLVec3D *pAbove 1741 ); 1742 SLresult (*SetOrientationAngles) ( 1743 SL3DLocationItf self, 1744 SLmillidegree heading, 1745 SLmillidegree pitch, 1746 SLmillidegree roll 1747 ); 1748 SLresult (*Rotate) ( 1749 SL3DLocationItf self, 1750 SLmillidegree theta, 1751 const SLVec3D *pAxis 1752 ); 1753 SLresult (*GetOrientationVectors) ( 1754 SL3DLocationItf self, 1755 SLVec3D *pFront, 1756 SLVec3D *pUp 1757 ); 1758 }; 1759 1760 1761 /*---------------------------------------------------------------------------*/ 1762 /* 3D Doppler Interface */ 1763 /*---------------------------------------------------------------------------*/ 1764 1765 1766 extern SL_API const SLInterfaceID SL_IID_3DDOPPLER; 1767 1768 struct SL3DDopplerItf_; 1769 typedef const struct SL3DDopplerItf_ * const * SL3DDopplerItf; 1770 1771 struct SL3DDopplerItf_ { 1772 SLresult (*SetVelocityCartesian) ( 1773 SL3DDopplerItf self, 1774 const SLVec3D *pVelocity 1775 ); 1776 SLresult (*SetVelocitySpherical) ( 1777 SL3DDopplerItf self, 1778 SLmillidegree azimuth, 1779 SLmillidegree elevation, 1780 SLmillimeter speed 1781 ); 1782 SLresult (*GetVelocityCartesian) ( 1783 SL3DDopplerItf self, 1784 SLVec3D *pVelocity 1785 ); 1786 SLresult (*SetDopplerFactor) ( 1787 SL3DDopplerItf self, 1788 SLpermille dopplerFactor 1789 ); 1790 SLresult (*GetDopplerFactor) ( 1791 SL3DDopplerItf self, 1792 SLpermille *pDopplerFactor 1793 ); 1794 }; 1795 1796 /*---------------------------------------------------------------------------*/ 1797 /* 3D Source Interface and associated defines */ 1798 /* --------------------------------------------------------------------------*/ 1799 1800 #define SL_ROLLOFFMODEL_EXPONENTIAL ((SLuint32) 0x00000000) 1801 #define SL_ROLLOFFMODEL_LINEAR ((SLuint32) 0x00000001) 1802 1803 1804 extern SL_API const SLInterfaceID SL_IID_3DSOURCE; 1805 1806 struct SL3DSourceItf_; 1807 typedef const struct SL3DSourceItf_ * const * SL3DSourceItf; 1808 1809 struct SL3DSourceItf_ { 1810 SLresult (*SetHeadRelative) ( 1811 SL3DSourceItf self, 1812 SLboolean headRelative 1813 ); 1814 SLresult (*GetHeadRelative) ( 1815 SL3DSourceItf self, 1816 SLboolean *pHeadRelative 1817 ); 1818 SLresult (*SetRolloffDistances) ( 1819 SL3DSourceItf self, 1820 SLmillimeter minDistance, 1821 SLmillimeter maxDistance 1822 ); 1823 SLresult (*GetRolloffDistances) ( 1824 SL3DSourceItf self, 1825 SLmillimeter *pMinDistance, 1826 SLmillimeter *pMaxDistance 1827 ); 1828 SLresult (*SetRolloffMaxDistanceMute) ( 1829 SL3DSourceItf self, 1830 SLboolean mute 1831 ); 1832 SLresult (*GetRolloffMaxDistanceMute) ( 1833 SL3DSourceItf self, 1834 SLboolean *pMute 1835 ); 1836 SLresult (*SetRolloffFactor) ( 1837 SL3DSourceItf self, 1838 SLpermille rolloffFactor 1839 ); 1840 SLresult (*GetRolloffFactor) ( 1841 SL3DSourceItf self, 1842 SLpermille *pRolloffFactor 1843 ); 1844 SLresult (*SetRoomRolloffFactor) ( 1845 SL3DSourceItf self, 1846 SLpermille roomRolloffFactor 1847 ); 1848 SLresult (*GetRoomRolloffFactor) ( 1849 SL3DSourceItf self, 1850 SLpermille *pRoomRolloffFactor 1851 ); 1852 SLresult (*SetRolloffModel) ( 1853 SL3DSourceItf self, 1854 SLuint8 model 1855 ); 1856 SLresult (*GetRolloffModel) ( 1857 SL3DSourceItf self, 1858 SLuint8 *pModel 1859 ); 1860 SLresult (*SetCone) ( 1861 SL3DSourceItf self, 1862 SLmillidegree innerAngle, 1863 SLmillidegree outerAngle, 1864 SLmillibel outerLevel 1865 ); 1866 SLresult (*GetCone) ( 1867 SL3DSourceItf self, 1868 SLmillidegree *pInnerAngle, 1869 SLmillidegree *pOuterAngle, 1870 SLmillibel *pOuterLevel 1871 ); 1872 }; 1873 1874 /*---------------------------------------------------------------------------*/ 1875 /* 3D Macroscopic Interface */ 1876 /* --------------------------------------------------------------------------*/ 1877 1878 extern SL_API const SLInterfaceID SL_IID_3DMACROSCOPIC; 1879 1880 struct SL3DMacroscopicItf_; 1881 typedef const struct SL3DMacroscopicItf_ * const * SL3DMacroscopicItf; 1882 1883 struct SL3DMacroscopicItf_ { 1884 SLresult (*SetSize) ( 1885 SL3DMacroscopicItf self, 1886 SLmillimeter width, 1887 SLmillimeter height, 1888 SLmillimeter depth 1889 ); 1890 SLresult (*GetSize) ( 1891 SL3DMacroscopicItf self, 1892 SLmillimeter *pWidth, 1893 SLmillimeter *pHeight, 1894 SLmillimeter *pDepth 1895 ); 1896 SLresult (*SetOrientationAngles) ( 1897 SL3DMacroscopicItf self, 1898 SLmillidegree heading, 1899 SLmillidegree pitch, 1900 SLmillidegree roll 1901 ); 1902 SLresult (*SetOrientationVectors) ( 1903 SL3DMacroscopicItf self, 1904 const SLVec3D *pFront, 1905 const SLVec3D *pAbove 1906 ); 1907 SLresult (*Rotate) ( 1908 SL3DMacroscopicItf self, 1909 SLmillidegree theta, 1910 const SLVec3D *pAxis 1911 ); 1912 SLresult (*GetOrientationVectors) ( 1913 SL3DMacroscopicItf self, 1914 SLVec3D *pFront, 1915 SLVec3D *pUp 1916 ); 1917 }; 1918 1919 /*---------------------------------------------------------------------------*/ 1920 /* Mute Solo Interface */ 1921 /* --------------------------------------------------------------------------*/ 1922 1923 1924 extern SL_API const SLInterfaceID SL_IID_MUTESOLO; 1925 1926 struct SLMuteSoloItf_; 1927 typedef const struct SLMuteSoloItf_ * const * SLMuteSoloItf; 1928 1929 struct SLMuteSoloItf_ { 1930 SLresult (*SetChannelMute) ( 1931 SLMuteSoloItf self, 1932 SLuint8 chan, 1933 SLboolean mute 1934 ); 1935 SLresult (*GetChannelMute) ( 1936 SLMuteSoloItf self, 1937 SLuint8 chan, 1938 SLboolean *pMute 1939 ); 1940 SLresult (*SetChannelSolo) ( 1941 SLMuteSoloItf self, 1942 SLuint8 chan, 1943 SLboolean solo 1944 ); 1945 SLresult (*GetChannelSolo) ( 1946 SLMuteSoloItf self, 1947 SLuint8 chan, 1948 SLboolean *pSolo 1949 ); 1950 SLresult (*GetNumChannels) ( 1951 SLMuteSoloItf self, 1952 SLuint8 *pNumChannels 1953 ); 1954 }; 1955 1956 1957 /*---------------------------------------------------------------------------*/ 1958 /* Dynamic Interface Management Interface and associated types and macros */ 1959 /* --------------------------------------------------------------------------*/ 1960 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) 1966 1967 1968 1969 1970 extern SL_API const SLInterfaceID SL_IID_DYNAMICINTERFACEMANAGEMENT; 1971 1972 struct SLDynamicInterfaceManagementItf_; 1973 typedef const struct SLDynamicInterfaceManagementItf_ * const * SLDynamicInterfaceManagementItf; 1974 1975 typedef void (SLAPIENTRY *slDynamicInterfaceManagementCallback) ( 1976 SLDynamicInterfaceManagementItf caller, 1977 void * pContext, 1978 SLuint32 event, 1979 SLresult result, 1980 const SLInterfaceID iid 1981 ); 1982 1983 1984 struct SLDynamicInterfaceManagementItf_ { 1985 SLresult (*AddInterface) ( 1986 SLDynamicInterfaceManagementItf self, 1987 const SLInterfaceID iid, 1988 SLboolean async 1989 ); 1990 SLresult (*RemoveInterface) ( 1991 SLDynamicInterfaceManagementItf self, 1992 const SLInterfaceID iid 1993 ); 1994 SLresult (*ResumeInterface) ( 1995 SLDynamicInterfaceManagementItf self, 1996 const SLInterfaceID iid, 1997 SLboolean async 1998 ); 1999 SLresult (*RegisterCallback) ( 2000 SLDynamicInterfaceManagementItf self, 2001 slDynamicInterfaceManagementCallback callback, 2002 void * pContext 2003 ); 2004 }; 2005 2006 /*---------------------------------------------------------------------------*/ 2007 /* Midi Message Interface and associated types */ 2008 /* --------------------------------------------------------------------------*/ 2009 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) 2017 2018 2019 extern SL_API const SLInterfaceID SL_IID_MIDIMESSAGE; 2020 2021 struct SLMIDIMessageItf_; 2022 typedef const struct SLMIDIMessageItf_ * const * SLMIDIMessageItf; 2023 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 2032 ); 2033 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 2042 ); 2043 2044 struct SLMIDIMessageItf_ { 2045 SLresult (*SendMessage) ( 2046 SLMIDIMessageItf self, 2047 const SLuint8 *data, 2048 SLuint32 length 2049 ); 2050 SLresult (*RegisterMetaEventCallback) ( 2051 SLMIDIMessageItf self, 2052 slMetaEventCallback callback, 2053 void *pContext 2054 ); 2055 SLresult (*RegisterMIDIMessageCallback) ( 2056 SLMIDIMessageItf self, 2057 slMIDIMessageCallback callback, 2058 void *pContext 2059 ); 2060 SLresult (*AddMIDIMessageCallbackFilter) ( 2061 SLMIDIMessageItf self, 2062 SLuint32 messageType 2063 ); 2064 SLresult (*ClearMIDIMessageCallbackFilter) ( 2065 SLMIDIMessageItf self 2066 ); 2067 }; 2068 2069 2070 /*---------------------------------------------------------------------------*/ 2071 /* Midi Mute Solo interface */ 2072 /* --------------------------------------------------------------------------*/ 2073 2074 2075 extern SL_API const SLInterfaceID SL_IID_MIDIMUTESOLO; 2076 2077 struct SLMIDIMuteSoloItf_; 2078 typedef const struct SLMIDIMuteSoloItf_ * const * SLMIDIMuteSoloItf; 2079 2080 struct SLMIDIMuteSoloItf_ { 2081 SLresult (*SetChannelMute) ( 2082 SLMIDIMuteSoloItf self, 2083 SLuint8 channel, 2084 SLboolean mute 2085 ); 2086 SLresult (*GetChannelMute) ( 2087 SLMIDIMuteSoloItf self, 2088 SLuint8 channel, 2089 SLboolean *pMute 2090 ); 2091 SLresult (*SetChannelSolo) ( 2092 SLMIDIMuteSoloItf self, 2093 SLuint8 channel, 2094 SLboolean solo 2095 ); 2096 SLresult (*GetChannelSolo) ( 2097 SLMIDIMuteSoloItf self, 2098 SLuint8 channel, 2099 SLboolean *pSolo 2100 ); 2101 SLresult (*GetTrackCount) ( 2102 SLMIDIMuteSoloItf self, 2103 SLuint16 *pCount 2104 ); 2105 SLresult (*SetTrackMute) ( 2106 SLMIDIMuteSoloItf self, 2107 SLuint16 track, 2108 SLboolean mute 2109 ); 2110 SLresult (*GetTrackMute) ( 2111 SLMIDIMuteSoloItf self, 2112 SLuint16 track, 2113 SLboolean *pMute 2114 ); 2115 SLresult (*SetTrackSolo) ( 2116 SLMIDIMuteSoloItf self, 2117 SLuint16 track, 2118 SLboolean solo 2119 ); 2120 SLresult (*GetTrackSolo) ( 2121 SLMIDIMuteSoloItf self, 2122 SLuint16 track, 2123 SLboolean *pSolo 2124 ); 2125 }; 2126 2127 2128 /*---------------------------------------------------------------------------*/ 2129 /* Midi Tempo interface */ 2130 /* --------------------------------------------------------------------------*/ 2131 2132 2133 extern SL_API const SLInterfaceID SL_IID_MIDITEMPO; 2134 2135 struct SLMIDITempoItf_; 2136 typedef const struct SLMIDITempoItf_ * const * SLMIDITempoItf; 2137 2138 struct SLMIDITempoItf_ { 2139 SLresult (*SetTicksPerQuarterNote) ( 2140 SLMIDITempoItf self, 2141 SLuint32 tpqn 2142 ); 2143 SLresult (*GetTicksPerQuarterNote) ( 2144 SLMIDITempoItf self, 2145 SLuint32 *pTpqn 2146 ); 2147 SLresult (*SetMicrosecondsPerQuarterNote) ( 2148 SLMIDITempoItf self, 2149 SLmicrosecond uspqn 2150 ); 2151 SLresult (*GetMicrosecondsPerQuarterNote) ( 2152 SLMIDITempoItf self, 2153 SLmicrosecond *uspqn 2154 ); 2155 }; 2156 2157 2158 /*---------------------------------------------------------------------------*/ 2159 /* Midi Time interface */ 2160 /* --------------------------------------------------------------------------*/ 2161 2162 2163 extern SL_API const SLInterfaceID SL_IID_MIDITIME; 2164 2165 struct SLMIDITimeItf_; 2166 typedef const struct SLMIDITimeItf_ * const * SLMIDITimeItf; 2167 2168 struct SLMIDITimeItf_ { 2169 SLresult (*GetDuration) ( 2170 SLMIDITimeItf self, 2171 SLuint32 *pDuration 2172 ); 2173 SLresult (*SetPosition) ( 2174 SLMIDITimeItf self, 2175 SLuint32 position 2176 ); 2177 SLresult (*GetPosition) ( 2178 SLMIDITimeItf self, 2179 SLuint32 *pPosition 2180 ); 2181 SLresult (*SetLoopPoints) ( 2182 SLMIDITimeItf self, 2183 SLuint32 startTick, 2184 SLuint32 numTicks 2185 ); 2186 SLresult (*GetLoopPoints) ( 2187 SLMIDITimeItf self, 2188 SLuint32 *pStartTick, 2189 SLuint32 *pNumTicks 2190 ); 2191 }; 2192 2193 2194 /*---------------------------------------------------------------------------*/ 2195 /* Audio Decoder Capabilities Interface */ 2196 /* --------------------------------------------------------------------------*/ 2197 2198 /*Audio Codec related defines*/ 2199 2200 #define SL_RATECONTROLMODE_CONSTANTBITRATE ((SLuint32) 0x00000001) 2201 #define SL_RATECONTROLMODE_VARIABLEBITRATE ((SLuint32) 0x00000002) 2202 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) 2211 2212 #define SL_AUDIOPROFILE_PCM ((SLuint32) 0x00000001) 2213 2214 #define SL_AUDIOPROFILE_MPEG1_L3 ((SLuint32) 0x00000001) 2215 #define SL_AUDIOPROFILE_MPEG2_L3 ((SLuint32) 0x00000002) 2216 #define SL_AUDIOPROFILE_MPEG25_L3 ((SLuint32) 0x00000003) 2217 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) 2222 2223 #define SL_AUDIOPROFILE_AMR ((SLuint32) 0x00000001) 2224 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) 2231 2232 #define SL_AUDIOPROFILE_AMRWB ((SLuint32) 0x00000001) 2233 2234 #define SL_AUDIOPROFILE_AMRWBPLUS ((SLuint32) 0x00000001) 2235 2236 #define SL_AUDIOPROFILE_AAC_AAC ((SLuint32) 0x00000001) 2237 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) 2248 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) 2256 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) 2261 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) 2270 2271 #define SL_AUDIOPROFILE_REALAUDIO ((SLuint32) 0x00000001) 2272 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) 2277 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; 2295 2296 /*Structure used to retrieve the profile and level settings supported by an audio encoder */ 2297 2298 typedef struct SLAudioCodecProfileMode_ { 2299 SLuint32 profileSetting; 2300 SLuint32 modeSetting; 2301 } SLAudioCodecProfileMode; 2302 2303 extern SL_API const SLInterfaceID SL_IID_AUDIODECODERCAPABILITIES; 2304 2305 struct SLAudioDecoderCapabilitiesItf_; 2306 typedef const struct SLAudioDecoderCapabilitiesItf_ * const * SLAudioDecoderCapabilitiesItf; 2307 2308 struct SLAudioDecoderCapabilitiesItf_ { 2309 SLresult (*GetAudioDecoders) ( 2310 SLAudioDecoderCapabilitiesItf self, 2311 SLuint32 * pNumDecoders , 2312 SLuint32 *pDecoderIds 2313 ); 2314 SLresult (*GetAudioDecoderCapabilities) ( 2315 SLAudioDecoderCapabilitiesItf self, 2316 SLuint32 decoderId, 2317 SLuint32 *pIndex, 2318 SLAudioCodecDescriptor *pDescriptor 2319 ); 2320 }; 2321 2322 2323 2324 2325 /*---------------------------------------------------------------------------*/ 2326 /* Audio Encoder Capabilities Interface */ 2327 /* --------------------------------------------------------------------------*/ 2328 2329 /* Structure used when setting audio encoding parameters */ 2330 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; 2346 2347 extern SL_API const SLInterfaceID SL_IID_AUDIOENCODERCAPABILITIES; 2348 2349 struct SLAudioEncoderCapabilitiesItf_; 2350 typedef const struct SLAudioEncoderCapabilitiesItf_ * const * SLAudioEncoderCapabilitiesItf; 2351 2352 struct SLAudioEncoderCapabilitiesItf_ { 2353 SLresult (*GetAudioEncoders) ( 2354 SLAudioEncoderCapabilitiesItf self, 2355 SLuint32 *pNumEncoders , 2356 SLuint32 *pEncoderIds 2357 ); 2358 SLresult (*GetAudioEncoderCapabilities) ( 2359 SLAudioEncoderCapabilitiesItf self, 2360 SLuint32 encoderId, 2361 SLuint32 *pIndex, 2362 SLAudioCodecDescriptor * pDescriptor 2363 ); 2364 }; 2365 2366 2367 /*---------------------------------------------------------------------------*/ 2368 /* Audio Encoder Interface */ 2369 /* --------------------------------------------------------------------------*/ 2370 2371 2372 extern SL_API const SLInterfaceID SL_IID_AUDIOENCODER; 2373 2374 struct SLAudioEncoderItf_; 2375 typedef const struct SLAudioEncoderItf_ * const * SLAudioEncoderItf; 2376 2377 struct SLAudioEncoderItf_ { 2378 SLresult (*SetEncoderSettings) ( 2379 SLAudioEncoderItf self, 2380 SLAudioEncoderSettings *pSettings 2381 ); 2382 SLresult (*GetEncoderSettings) ( 2383 SLAudioEncoderItf self, 2384 SLAudioEncoderSettings *pSettings 2385 ); 2386 }; 2387 2388 2389 /*---------------------------------------------------------------------------*/ 2390 /* Bass Boost Interface */ 2391 /* --------------------------------------------------------------------------*/ 2392 2393 2394 extern SL_API const SLInterfaceID SL_IID_BASSBOOST; 2395 2396 struct SLBassBoostItf_; 2397 typedef const struct SLBassBoostItf_ * const * SLBassBoostItf; 2398 2399 struct SLBassBoostItf_ { 2400 SLresult (*SetEnabled)( 2401 SLBassBoostItf self, 2402 SLboolean enabled 2403 ); 2404 SLresult (*IsEnabled)( 2405 SLBassBoostItf self, 2406 SLboolean *pEnabled 2407 ); 2408 SLresult (*SetStrength)( 2409 SLBassBoostItf self, 2410 SLpermille strength 2411 ); 2412 SLresult (*GetRoundedStrength)( 2413 SLBassBoostItf self, 2414 SLpermille *pStrength 2415 ); 2416 SLresult (*IsStrengthSupported)( 2417 SLBassBoostItf self, 2418 SLboolean *pSupported 2419 ); 2420 }; 2421 2422 /*---------------------------------------------------------------------------*/ 2423 /* Pitch Interface */ 2424 /* --------------------------------------------------------------------------*/ 2425 2426 2427 extern SL_API const SLInterfaceID SL_IID_PITCH; 2428 2429 struct SLPitchItf_; 2430 typedef const struct SLPitchItf_ * const * SLPitchItf; 2431 2432 struct SLPitchItf_ { 2433 SLresult (*SetPitch) ( 2434 SLPitchItf self, 2435 SLpermille pitch 2436 ); 2437 SLresult (*GetPitch) ( 2438 SLPitchItf self, 2439 SLpermille *pPitch 2440 ); 2441 SLresult (*GetPitchCapabilities) ( 2442 SLPitchItf self, 2443 SLpermille *pMinPitch, 2444 SLpermille *pMaxPitch 2445 ); 2446 }; 2447 2448 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 /* --------------------------------------------------------------------------*/ 2454 2455 2456 extern SL_API const SLInterfaceID SL_IID_RATEPITCH; 2457 2458 struct SLRatePitchItf_; 2459 typedef const struct SLRatePitchItf_ * const * SLRatePitchItf; 2460 2461 struct SLRatePitchItf_ { 2462 SLresult (*SetRate) ( 2463 SLRatePitchItf self, 2464 SLpermille rate 2465 ); 2466 SLresult (*GetRate) ( 2467 SLRatePitchItf self, 2468 SLpermille *pRate 2469 ); 2470 SLresult (*GetRatePitchCapabilities) ( 2471 SLRatePitchItf self, 2472 SLpermille *pMinRate, 2473 SLpermille *pMaxRate 2474 ); 2475 }; 2476 2477 2478 /*---------------------------------------------------------------------------*/ 2479 /* Virtualizer Interface */ 2480 /* --------------------------------------------------------------------------*/ 2481 2482 2483 extern SL_API const SLInterfaceID SL_IID_VIRTUALIZER; 2484 2485 struct SLVirtualizerItf_; 2486 typedef const struct SLVirtualizerItf_ * const * SLVirtualizerItf; 2487 2488 struct SLVirtualizerItf_ { 2489 SLresult (*SetEnabled)( 2490 SLVirtualizerItf self, 2491 SLboolean enabled 2492 ); 2493 SLresult (*IsEnabled)( 2494 SLVirtualizerItf self, 2495 SLboolean *pEnabled 2496 ); 2497 SLresult (*SetStrength)( 2498 SLVirtualizerItf self, 2499 SLpermille strength 2500 ); 2501 SLresult (*GetRoundedStrength)( 2502 SLVirtualizerItf self, 2503 SLpermille *pStrength 2504 ); 2505 SLresult (*IsStrengthSupported)( 2506 SLVirtualizerItf self, 2507 SLboolean *pSupported 2508 ); 2509 }; 2510 2511 /*---------------------------------------------------------------------------*/ 2512 /* Visualization Interface */ 2513 /* --------------------------------------------------------------------------*/ 2514 2515 2516 extern SL_API const SLInterfaceID SL_IID_VISUALIZATION; 2517 2518 struct SLVisualizationItf_; 2519 typedef const struct SLVisualizationItf_ * const * SLVisualizationItf; 2520 2521 typedef void (SLAPIENTRY *slVisualizationCallback) ( 2522 void *pContext, 2523 const SLuint8 waveform[], 2524 const SLuint8 fft[], 2525 SLmilliHertz samplerate 2526 ); 2527 2528 struct SLVisualizationItf_{ 2529 SLresult (*RegisterVisualizationCallback)( 2530 SLVisualizationItf self, 2531 slVisualizationCallback callback, 2532 void *pContext, 2533 SLmilliHertz rate 2534 ); 2535 SLresult (*GetMaxRate)( 2536 SLVisualizationItf self, 2537 SLmilliHertz* pRate 2538 ); 2539 }; 2540 2541 2542 /*---------------------------------------------------------------------------*/ 2543 /* Engine Interface */ 2544 /* --------------------------------------------------------------------------*/ 2545 2546 2547 extern SL_API const SLInterfaceID SL_IID_ENGINE; 2548 2549 struct SLEngineItf_; 2550 typedef const struct SLEngineItf_ * const * SLEngineItf; 2551 2552 2553 struct SLEngineItf_ { 2554 2555 SLresult (*CreateLEDDevice) ( 2556 SLEngineItf self, 2557 SLObjectItf * pDevice, 2558 SLuint32 deviceID, 2559 SLuint32 numInterfaces, 2560 const SLInterfaceID * pInterfaceIds, 2561 const SLboolean * pInterfaceRequired 2562 ); 2563 SLresult (*CreateVibraDevice) ( 2564 SLEngineItf self, 2565 SLObjectItf * pDevice, 2566 SLuint32 deviceID, 2567 SLuint32 numInterfaces, 2568 const SLInterfaceID * pInterfaceIds, 2569 const SLboolean * pInterfaceRequired 2570 ); 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 2579 ); 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 2588 ); 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 2600 ); 2601 SLresult (*CreateListener) ( 2602 SLEngineItf self, 2603 SLObjectItf * pListener, 2604 SLuint32 numInterfaces, 2605 const SLInterfaceID * pInterfaceIds, 2606 const SLboolean * pInterfaceRequired 2607 ); 2608 SLresult (*Create3DGroup) ( 2609 SLEngineItf self, 2610 SLObjectItf * pGroup, 2611 SLuint32 numInterfaces, 2612 const SLInterfaceID * pInterfaceIds, 2613 const SLboolean * pInterfaceRequired 2614 ); 2615 SLresult (*CreateOutputMix) ( 2616 SLEngineItf self, 2617 SLObjectItf * pMix, 2618 SLuint32 numInterfaces, 2619 const SLInterfaceID * pInterfaceIds, 2620 const SLboolean * pInterfaceRequired 2621 ); 2622 SLresult (*CreateMetadataExtractor) ( 2623 SLEngineItf self, 2624 SLObjectItf * pMetadataExtractor, 2625 SLDataSource * pDataSource, 2626 SLuint32 numInterfaces, 2627 const SLInterfaceID * pInterfaceIds, 2628 const SLboolean * pInterfaceRequired 2629 ); 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 2638 ); 2639 SLresult (*QueryNumSupportedInterfaces) ( 2640 SLEngineItf self, 2641 SLuint32 objectID, 2642 SLuint32 * pNumSupportedInterfaces 2643 ); 2644 SLresult (*QuerySupportedInterfaces) ( 2645 SLEngineItf self, 2646 SLuint32 objectID, 2647 SLuint32 index, 2648 SLInterfaceID * pInterfaceId 2649 ); 2650 SLresult (*QueryNumSupportedExtensions) ( 2651 SLEngineItf self, 2652 SLuint32 * pNumExtensions 2653 ); 2654 SLresult (*QuerySupportedExtension) ( 2655 SLEngineItf self, 2656 SLuint32 index, 2657 SLchar * pExtensionName, 2658 SLint16 * pNameLength 2659 ); 2660 SLresult (*IsExtensionSupported) ( 2661 SLEngineItf self, 2662 const SLchar * pExtensionName, 2663 SLboolean * pSupported 2664 ); 2665 }; 2666 2667 2668 /*---------------------------------------------------------------------------*/ 2669 /* Engine Capabilities Interface */ 2670 /* --------------------------------------------------------------------------*/ 2671 2672 2673 extern SL_API const SLInterfaceID SL_IID_ENGINECAPABILITIES; 2674 2675 struct SLEngineCapabilitiesItf_; 2676 typedef const struct SLEngineCapabilitiesItf_ * const * SLEngineCapabilitiesItf; 2677 2678 struct SLEngineCapabilitiesItf_ { 2679 SLresult (*QuerySupportedProfiles) ( 2680 SLEngineCapabilitiesItf self, 2681 SLuint16 *pProfilesSupported 2682 ); 2683 SLresult (*QueryAvailableVoices) ( 2684 SLEngineCapabilitiesItf self, 2685 SLuint16 voiceType, 2686 SLint16 *pNumMaxVoices, 2687 SLboolean *pIsAbsoluteMax, 2688 SLint16 *pNumFreeVoices 2689 ); 2690 SLresult (*QueryNumberOfMIDISynthesizers) ( 2691 SLEngineCapabilitiesItf self, 2692 SLint16 *pNumMIDIsynthesizers 2693 ); 2694 SLresult (*QueryAPIVersion) ( 2695 SLEngineCapabilitiesItf self, 2696 SLint16 *pMajor, 2697 SLint16 *pMinor, 2698 SLint16 *pStep 2699 ); 2700 SLresult (*QueryLEDCapabilities) ( 2701 SLEngineCapabilitiesItf self, 2702 SLuint32 *pIndex, 2703 SLuint32 *pLEDDeviceID, 2704 SLLEDDescriptor *pDescriptor 2705 ); 2706 SLresult (*QueryVibraCapabilities) ( 2707 SLEngineCapabilitiesItf self, 2708 SLuint32 *pIndex, 2709 SLuint32 *pVibraDeviceID, 2710 SLVibraDescriptor *pDescriptor 2711 ); 2712 SLresult (*IsThreadSafe) ( 2713 SLEngineCapabilitiesItf self, 2714 SLboolean *pIsThreadSafe 2715 ); 2716 }; 2717 2718 /*---------------------------------------------------------------------------*/ 2719 /* Thread Sync Interface */ 2720 /* --------------------------------------------------------------------------*/ 2721 2722 2723 extern SL_API const SLInterfaceID SL_IID_THREADSYNC; 2724 2725 struct SLThreadSyncItf_; 2726 typedef const struct SLThreadSyncItf_ * const * SLThreadSyncItf; 2727 2728 2729 struct SLThreadSyncItf_ { 2730 SLresult (*EnterCriticalSection) ( 2731 SLThreadSyncItf self 2732 ); 2733 SLresult (*ExitCriticalSection) ( 2734 SLThreadSyncItf self 2735 ); 2736 }; 2737 2738 2739 /*****************************************************************************/ 2740 /* SL engine constructor */ 2741 /*****************************************************************************/ 2742 2743 #define SL_ENGINEOPTION_THREADSAFE ((SLuint32) 0x00000001) 2744 #define SL_ENGINEOPTION_LOSSOFCONTROL ((SLuint32) 0x00000002) 2745 2746 typedef struct SLEngineOption_ { 2747 SLuint32 feature; 2748 SLuint32 data; 2749 } SLEngineOption; 2750 2751 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 2759 ); 2760 2761 SL_API SLresult SLAPIENTRY slQueryNumSupportedEngineInterfaces( 2762 SLuint32 * pNumSupportedInterfaces 2763 ); 2764 2765 SL_API SLresult SLAPIENTRY slQuerySupportedEngineInterfaces( 2766 SLuint32 index, 2767 SLInterfaceID * pInterfaceId 2768 ); 2769 2770 #ifdef __cplusplus 2771 } /* extern "C" */ 2772 #endif 2773 2774 #endif /* OPENSL_ES_H_ */ 2775