OpenSLES.h revision ebc8fd365b402e498d499fa8737a7591c290347c
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 36extern "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 */ 66typedef sl_int8_t SLint8; /* 8 bit signed integer */ 67typedef sl_uint8_t SLuint8; /* 8 bit unsigned integer */ 68typedef sl_int16_t SLint16; /* 16 bit signed integer */ 69typedef sl_uint16_t SLuint16; /* 16 bit unsigned integer */ 70typedef sl_int32_t SLint32; /* 32 bit signed integer */ 71typedef sl_uint32_t SLuint32; /* 32 bit unsigned integer */ 72 73typedef SLuint32 SLboolean; 74#define SL_BOOLEAN_FALSE ((SLboolean) 0x00000000) 75#define SL_BOOLEAN_TRUE ((SLboolean) 0x00000001) 76 77typedef SLuint8 SLchar; /* UTF-8 is to be used */ 78typedef SLint16 SLmillibel; 79typedef SLuint32 SLmillisecond; 80typedef SLuint32 SLmilliHertz; 81typedef SLint32 SLmillimeter; 82typedef SLint32 SLmillidegree; 83typedef SLint16 SLpermille; 84typedef SLuint32 SLmicrosecond; 85typedef 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 */ 94typedef 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 */ 103struct SLObjectItf_; 104 105typedef 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 240extern 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*/ 259typedef 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*/ 265typedef 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*/ 279typedef 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*/ 287typedef 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*/ 294typedef 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*/ 300typedef 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*/ 313typedef 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*/ 356typedef 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 366typedef struct SLDataSource_ { 367 void *pLocator; 368 void *pFormat; 369} SLDataSource; 370 371 372typedef struct SLDataSink_ { 373 void *pLocator; 374 void *pFormat; 375} SLDataSink; 376 377 378 379 380 381 382/*---------------------------------------------------------------------------*/ 383/* Standard Object Interface */ 384/*---------------------------------------------------------------------------*/ 385 386extern SL_API const SLInterfaceID SL_IID_OBJECT; 387 388/** Object callback */ 389 390 391typedef 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 401struct 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 480typedef 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 495typedef 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 511extern SL_API const SLInterfaceID SL_IID_AUDIOIODEVICECAPABILITIES; 512 513struct SLAudioIODeviceCapabilitiesItf_; 514typedef const struct SLAudioIODeviceCapabilitiesItf_ * const * SLAudioIODeviceCapabilitiesItf; 515 516 517typedef void (SLAPIENTRY *slAvailableAudioInputsChangedCallback) ( 518 SLAudioIODeviceCapabilitiesItf caller, 519 void *pContext, 520 SLuint32 deviceID, 521 SLint32 numInputs, 522 SLboolean isNew 523); 524 525 526typedef void (SLAPIENTRY *slAvailableAudioOutputsChangedCallback) ( 527 SLAudioIODeviceCapabilitiesItf caller, 528 void *pContext, 529 SLuint32 deviceID, 530 SLint32 numOutputs, 531 SLboolean isNew 532); 533 534typedef void (SLAPIENTRY *slDefaultDeviceIDMapChangedCallback) ( 535 SLAudioIODeviceCapabilitiesItf caller, 536 void *pContext, 537 SLboolean isOutput, 538 SLint32 numDevices 539); 540 541 542struct 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 611typedef struct SLLEDDescriptor_ { 612 SLuint8 ledCount; 613 SLuint8 primaryLED; 614 SLuint32 colorMask; 615} SLLEDDescriptor; 616 617 618/*---------------------------------------------------------------------------*/ 619/* LED Array interface */ 620/*---------------------------------------------------------------------------*/ 621 622typedef struct SLHSL_ { 623 SLmillidegree hue; 624 SLpermille saturation; 625 SLpermille lightness; 626} SLHSL; 627 628 629extern SL_API const SLInterfaceID SL_IID_LED; 630 631struct SLLEDArrayItf_; 632typedef const struct SLLEDArrayItf_ * const * SLLEDArrayItf; 633 634struct 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 659typedef 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 673extern SL_API const SLInterfaceID SL_IID_VIBRA; 674 675 676struct SLVibraItf_; 677typedef const struct SLVibraItf_ * const * SLVibraItf; 678 679struct 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 752typedef struct SLMetadataInfo_ { 753 SLuint32 size; 754 SLuint32 encoding; 755 SLchar langCountry[16]; 756 SLuint8 data[1]; 757} SLMetadataInfo; 758 759extern SL_API const SLInterfaceID SL_IID_METADATAEXTRACTION; 760 761struct SLMetadataExtractionItf_; 762typedef const struct SLMetadataExtractionItf_ * const * SLMetadataExtractionItf; 763 764 765struct 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 822extern SL_API const SLInterfaceID SL_IID_METADATATRAVERSAL; 823 824struct SLMetadataTraversalItf_; 825typedef const struct SLMetadataTraversalItf_ * const * SLMetadataTraversalItf; 826 827struct 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 859extern SL_API const SLInterfaceID SL_IID_DYNAMICSOURCE; 860 861struct SLDynamicSourceItf_; 862typedef const struct SLDynamicSourceItf_ * const * SLDynamicSourceItf; 863 864struct SLDynamicSourceItf_ { 865 SLresult (*SetSource) ( 866 SLDynamicSourceItf self, 867 SLDataSource *pDataSource 868 ); 869}; 870 871/*---------------------------------------------------------------------------*/ 872/* Output Mix interface */ 873/*---------------------------------------------------------------------------*/ 874 875extern SL_API const SLInterfaceID SL_IID_OUTPUTMIX; 876 877struct SLOutputMixItf_; 878typedef const struct SLOutputMixItf_ * const * SLOutputMixItf; 879 880typedef void (SLAPIENTRY *slMixDeviceChangeCallback) ( 881 SLOutputMixItf caller, 882 void *pContext 883); 884 885 886struct 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 924extern SL_API const SLInterfaceID SL_IID_PLAY; 925 926/** Playback interface methods */ 927 928struct SLPlayItf_; 929typedef const struct SLPlayItf_ * const * SLPlayItf; 930 931typedef void (SLAPIENTRY *slPlayCallback) ( 932 SLPlayItf caller, 933 void *pContext, 934 SLuint32 event 935); 936 937struct 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 1000extern SL_API const SLInterfaceID SL_IID_PREFETCHSTATUS; 1001 1002 1003/** Prefetch status interface methods */ 1004 1005struct SLPrefetchStatusItf_; 1006typedef const struct SLPrefetchStatusItf_ * const * SLPrefetchStatusItf; 1007 1008typedef void (SLAPIENTRY *slPrefetchCallback) ( 1009 SLPrefetchStatusItf caller, 1010 void *pContext, 1011 SLuint32 event 1012); 1013 1014struct 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 1058extern SL_API const SLInterfaceID SL_IID_PLAYBACKRATE; 1059 1060struct SLPlaybackRateItf_; 1061typedef const struct SLPlaybackRateItf_ * const * SLPlaybackRateItf; 1062 1063struct 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 1102extern SL_API const SLInterfaceID SL_IID_SEEK; 1103 1104struct SLSeekItf_; 1105typedef const struct SLSeekItf_ * const * SLSeekItf; 1106 1107struct 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 1148extern SL_API const SLInterfaceID SL_IID_RECORD; 1149 1150struct SLRecordItf_; 1151typedef const struct SLRecordItf_ * const * SLRecordItf; 1152 1153typedef void (SLAPIENTRY *slRecordCallback) ( 1154 SLRecordItf caller, 1155 void *pContext, 1156 SLuint32 event 1157); 1158 1159/** Recording interface methods */ 1160struct 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 1217extern SL_API const SLInterfaceID SL_IID_EQUALIZER; 1218 1219struct SLEqualizerItf_; 1220typedef const struct SLEqualizerItf_ * const * SLEqualizerItf; 1221 1222struct 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 1289extern SL_API const SLInterfaceID SL_IID_VOLUME; 1290 1291struct SLVolumeItf_; 1292typedef const struct SLVolumeItf_ * const * SLVolumeItf; 1293 1294struct 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 1338extern SL_API const SLInterfaceID SL_IID_DEVICEVOLUME; 1339 1340struct SLDeviceVolumeItf_; 1341typedef const struct SLDeviceVolumeItf_ * const * SLDeviceVolumeItf; 1342 1343struct 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 1368extern SL_API const SLInterfaceID SL_IID_BUFFERQUEUE; 1369 1370struct SLBufferQueueItf_; 1371typedef const struct SLBufferQueueItf_ * const * SLBufferQueueItf; 1372 1373typedef void (SLAPIENTRY *slBufferQueueCallback)( 1374 SLBufferQueueItf caller, 1375 void *pContext 1376); 1377 1378/** Buffer queue state **/ 1379 1380typedef struct SLBufferQueueState_ { 1381 SLuint32 count; 1382 SLuint32 playIndex; 1383} SLBufferQueueState; 1384 1385 1386struct 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 1420extern SL_API const SLInterfaceID SL_IID_PRESETREVERB; 1421 1422struct SLPresetReverbItf_; 1423typedef const struct SLPresetReverbItf_ * const * SLPresetReverbItf; 1424 1425struct 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 1503typedef 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 1519extern SL_API const SLInterfaceID SL_IID_ENVIRONMENTALREVERB; 1520 1521 1522struct SLEnvironmentalReverbItf_; 1523typedef const struct SLEnvironmentalReverbItf_ * const * SLEnvironmentalReverbItf; 1524 1525struct 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 1621extern SL_API const SLInterfaceID SL_IID_EFFECTSEND; 1622 1623struct SLEffectSendItf_; 1624typedef const struct SLEffectSendItf_ * const * SLEffectSendItf; 1625 1626struct 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 1664extern SL_API const SLInterfaceID SL_IID_3DGROUPING; 1665 1666 1667struct SL3DGroupingItf_ ; 1668typedef const struct SL3DGroupingItf_ * const * SL3DGroupingItf; 1669 1670struct 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 1687extern SL_API const SLInterfaceID SL_IID_3DCOMMIT; 1688 1689struct SL3DCommitItf_; 1690typedef const struct SL3DCommitItf_* const * SL3DCommitItf; 1691 1692struct 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 1707typedef struct SLVec3D_ { 1708 SLint32 x; 1709 SLint32 y; 1710 SLint32 z; 1711} SLVec3D; 1712 1713extern SL_API const SLInterfaceID SL_IID_3DLOCATION; 1714 1715struct SL3DLocationItf_; 1716typedef const struct SL3DLocationItf_ * const * SL3DLocationItf; 1717 1718struct 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 1766extern SL_API const SLInterfaceID SL_IID_3DDOPPLER; 1767 1768struct SL3DDopplerItf_; 1769typedef const struct SL3DDopplerItf_ * const * SL3DDopplerItf; 1770 1771struct 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 1804extern SL_API const SLInterfaceID SL_IID_3DSOURCE; 1805 1806struct SL3DSourceItf_; 1807typedef const struct SL3DSourceItf_ * const * SL3DSourceItf; 1808 1809struct 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 1878extern SL_API const SLInterfaceID SL_IID_3DMACROSCOPIC; 1879 1880struct SL3DMacroscopicItf_; 1881typedef const struct SL3DMacroscopicItf_ * const * SL3DMacroscopicItf; 1882 1883struct 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 1924extern SL_API const SLInterfaceID SL_IID_MUTESOLO; 1925 1926struct SLMuteSoloItf_; 1927typedef const struct SLMuteSoloItf_ * const * SLMuteSoloItf; 1928 1929struct 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 1970extern SL_API const SLInterfaceID SL_IID_DYNAMICINTERFACEMANAGEMENT; 1971 1972struct SLDynamicInterfaceManagementItf_; 1973typedef const struct SLDynamicInterfaceManagementItf_ * const * SLDynamicInterfaceManagementItf; 1974 1975typedef void (SLAPIENTRY *slDynamicInterfaceManagementCallback) ( 1976 SLDynamicInterfaceManagementItf caller, 1977 void * pContext, 1978 SLuint32 event, 1979 SLresult result, 1980 const SLInterfaceID iid 1981); 1982 1983 1984struct 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 2019extern SL_API const SLInterfaceID SL_IID_MIDIMESSAGE; 2020 2021struct SLMIDIMessageItf_; 2022typedef const struct SLMIDIMessageItf_ * const * SLMIDIMessageItf; 2023 2024typedef 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 2034typedef 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 2044struct 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 2075extern SL_API const SLInterfaceID SL_IID_MIDIMUTESOLO; 2076 2077struct SLMIDIMuteSoloItf_; 2078typedef const struct SLMIDIMuteSoloItf_ * const * SLMIDIMuteSoloItf; 2079 2080struct 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 2133extern SL_API const SLInterfaceID SL_IID_MIDITEMPO; 2134 2135struct SLMIDITempoItf_; 2136typedef const struct SLMIDITempoItf_ * const * SLMIDITempoItf; 2137 2138struct 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 2163extern SL_API const SLInterfaceID SL_IID_MIDITIME; 2164 2165struct SLMIDITimeItf_; 2166typedef const struct SLMIDITimeItf_ * const * SLMIDITimeItf; 2167 2168struct 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 2278typedef 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 2298typedef struct SLAudioCodecProfileMode_ { 2299 SLuint32 profileSetting; 2300 SLuint32 modeSetting; 2301} SLAudioCodecProfileMode; 2302 2303extern SL_API const SLInterfaceID SL_IID_AUDIODECODERCAPABILITIES; 2304 2305struct SLAudioDecoderCapabilitiesItf_; 2306typedef const struct SLAudioDecoderCapabilitiesItf_ * const * SLAudioDecoderCapabilitiesItf; 2307 2308struct 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 2331typedef 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 2347extern SL_API const SLInterfaceID SL_IID_AUDIOENCODERCAPABILITIES; 2348 2349struct SLAudioEncoderCapabilitiesItf_; 2350typedef const struct SLAudioEncoderCapabilitiesItf_ * const * SLAudioEncoderCapabilitiesItf; 2351 2352struct 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 2372extern SL_API const SLInterfaceID SL_IID_AUDIOENCODER; 2373 2374struct SLAudioEncoderItf_; 2375typedef const struct SLAudioEncoderItf_ * const * SLAudioEncoderItf; 2376 2377struct 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 2394extern SL_API const SLInterfaceID SL_IID_BASSBOOST; 2395 2396struct SLBassBoostItf_; 2397typedef const struct SLBassBoostItf_ * const * SLBassBoostItf; 2398 2399struct 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 2427extern SL_API const SLInterfaceID SL_IID_PITCH; 2428 2429struct SLPitchItf_; 2430typedef const struct SLPitchItf_ * const * SLPitchItf; 2431 2432struct 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 2456extern SL_API const SLInterfaceID SL_IID_RATEPITCH; 2457 2458struct SLRatePitchItf_; 2459typedef const struct SLRatePitchItf_ * const * SLRatePitchItf; 2460 2461struct 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 2483extern SL_API const SLInterfaceID SL_IID_VIRTUALIZER; 2484 2485struct SLVirtualizerItf_; 2486typedef const struct SLVirtualizerItf_ * const * SLVirtualizerItf; 2487 2488struct 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 2516extern SL_API const SLInterfaceID SL_IID_VISUALIZATION; 2517 2518struct SLVisualizationItf_; 2519typedef const struct SLVisualizationItf_ * const * SLVisualizationItf; 2520 2521typedef void (SLAPIENTRY *slVisualizationCallback) ( 2522 void *pContext, 2523 const SLuint8 waveform[], 2524 const SLuint8 fft[], 2525 SLmilliHertz samplerate 2526); 2527 2528struct 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 2547extern SL_API const SLInterfaceID SL_IID_ENGINE; 2548 2549struct SLEngineItf_; 2550typedef const struct SLEngineItf_ * const * SLEngineItf; 2551 2552 2553struct 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 2673extern SL_API const SLInterfaceID SL_IID_ENGINECAPABILITIES; 2674 2675struct SLEngineCapabilitiesItf_; 2676typedef const struct SLEngineCapabilitiesItf_ * const * SLEngineCapabilitiesItf; 2677 2678struct 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 2723extern SL_API const SLInterfaceID SL_IID_THREADSYNC; 2724 2725struct SLThreadSyncItf_; 2726typedef const struct SLThreadSyncItf_ * const * SLThreadSyncItf; 2727 2728 2729struct 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 2746typedef struct SLEngineOption_ { 2747 SLuint32 feature; 2748 SLuint32 data; 2749} SLEngineOption; 2750 2751 2752SL_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 2761SL_API SLresult SLAPIENTRY slQueryNumSupportedEngineInterfaces( 2762 SLuint32 * pNumSupportedInterfaces 2763); 2764 2765SL_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