111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/*
211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * Copyright (c) 2007-2009 The Khronos Group Inc.
311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert *
411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * Permission is hereby granted, free of charge, to any person obtaining a copy of
511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * this software and /or associated documentation files (the "Materials "), to
611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * deal in the Materials without restriction, including without limitation the
711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * sell copies of the Materials, and to permit persons to whom the Materials are
911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * furnished to do so, subject to
1011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * the following conditions:
1111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert *
1211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * The above copyright notice and this permission notice shall be included
1311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * in all copies or substantial portions of the Materials.
1411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert *
1511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
1611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
1711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
1811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
1911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
2011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * OUT OF OR IN CONNECTION WITH THE MATERIALS OR THE USE OR OTHER DEALINGS IN THE
2111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * MATERIALS.
2211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert *
2311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * OpenSLES.h - OpenSL ES version 1.0.1
2411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert *
2511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert */
2611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
2711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/****************************************************************************/
2811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* NOTE: This file is a standard OpenSL ES header file and should not be    */
2911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* modified in any way.                                                     */
3011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/****************************************************************************/
3111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
3211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#ifndef OPENSL_ES_H_
3311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define OPENSL_ES_H_
3411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
3511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#ifdef __cplusplus
3611cd02dfb91661c65134cac258cf5924270e9d2Dan Albertextern "C" {
3711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif
3811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
3911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#include "OpenSLES_Platform.h"
4011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
4111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
4211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/*****************************************************************************/
4311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* Common types, structures, and defines                                */
4411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/*****************************************************************************/
4511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
4611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#ifndef _KHRONOS_KEYS_
4711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define _KHRONOS_KEYS_
4811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
4911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define KHRONOS_TITLE "KhronosTitle"
5011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define KHRONOS_ALBUM "KhronosAlbum"
5111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define KHRONOS_TRACK_NUMBER "KhronosTrackNumber"
5211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define KHRONOS_ARTIST "KhronosArtist"
5311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define KHRONOS_GENRE "KhronosGenre"
5411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define KHRONOS_YEAR "KhronosYear"
5511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define KHRONOS_COMMENT "KhronosComment"
5611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define KHRONOS_ARTIST_URL "KhronosArtistURL"
5711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define KHRONOS_CONTENT_URL "KhronosContentURL"
5811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define KHRONOS_RATING "KhronosRating"
5911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define KHRONOS_ALBUM_ART "KhronosAlbumArt"
6011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define KHRONOS_COPYRIGHT "KhronosCopyright"
6111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
6211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif
6311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
6411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
6511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* remap common types to SL types for clarity */
6611cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef sl_int8_t              SLint8;          /* 8 bit signed integer  */
6711cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef sl_uint8_t             SLuint8;         /* 8 bit unsigned integer */
6811cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef sl_int16_t             SLint16;         /* 16 bit signed integer */
6911cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef sl_uint16_t            SLuint16;        /* 16 bit unsigned integer */
7011cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef sl_int32_t             SLint32;           /* 32 bit signed integer */
7111cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef sl_uint32_t            SLuint32;          /* 32 bit unsigned integer */
7211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
7311cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef SLuint32                    SLboolean;
7411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_BOOLEAN_FALSE            ((SLboolean) 0x00000000)
7511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_BOOLEAN_TRUE             ((SLboolean) 0x00000001)
7611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
7711cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef SLuint8						SLchar;			/* UTF-8 is to be used */
7811cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef SLint16						SLmillibel;
7911cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef SLuint32					SLmillisecond;
8011cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef SLuint32					SLmilliHertz;
8111cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef SLint32						SLmillimeter;
8211cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef SLint32						SLmillidegree;
8311cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef SLint16						SLpermille;
8411cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef SLuint32					SLmicrosecond;
8511cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef SLuint32					SLresult;
8611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
8711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_MILLIBEL_MAX 	((SLmillibel) 0x7FFF)
8811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_MILLIBEL_MIN 	((SLmillibel) (-SL_MILLIBEL_MAX-1))
8911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
9011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_MILLIHERTZ_MAX	((SLmilliHertz) 0xFFFFFFFF)
9111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_MILLIMETER_MAX	((SLmillimeter) 0x7FFFFFFF)
9211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
9311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/** Interface ID defined as a UUID */
9411cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef const struct SLInterfaceID_ {
9511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    SLuint32 time_low;
9611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    SLuint16 time_mid;
9711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    SLuint16 time_hi_and_version;
9811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    SLuint16 clock_seq;
9911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    SLuint8  node[6];
10011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert} * SLInterfaceID;
10111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
10211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* Forward declaration for the object interface */
10311cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct SLObjectItf_;
10411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
10511cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef const struct SLObjectItf_ * const * SLObjectItf;
10611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
10711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* Objects ID's */
10811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
10911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_OBJECTID_ENGINE			((SLuint32) 0x00001001)
11011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_OBJECTID_LEDDEVICE		((SLuint32) 0x00001002)
11111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_OBJECTID_VIBRADEVICE		((SLuint32) 0x00001003)
11211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_OBJECTID_AUDIOPLAYER		((SLuint32) 0x00001004)
11311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_OBJECTID_AUDIORECORDER	((SLuint32) 0x00001005)
11411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_OBJECTID_MIDIPLAYER		((SLuint32) 0x00001006)
11511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_OBJECTID_LISTENER		((SLuint32) 0x00001007)
11611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_OBJECTID_3DGROUP			((SLuint32) 0x00001008)
11711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_OBJECTID_OUTPUTMIX		((SLuint32) 0x00001009)
11811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_OBJECTID_METADATAEXTRACTOR	((SLuint32) 0x0000100A)
11911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
12011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
12111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* SL Profiles */
12211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
12311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_PROFILES_PHONE	((SLuint16) 0x0001)
12411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_PROFILES_MUSIC	((SLuint16) 0x0002)
12511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_PROFILES_GAME	((SLuint16) 0x0004)
12611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
12711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* Types of voices supported by the system */
12811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
12911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_VOICETYPE_2D_AUDIO		((SLuint16) 0x0001)
13011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_VOICETYPE_MIDI			((SLuint16) 0x0002)
13111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_VOICETYPE_3D_AUDIO 		((SLuint16) 0x0004)
13211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_VOICETYPE_3D_MIDIOUTPUT 	((SLuint16) 0x0008)
13311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
13411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* Convenient macros representing various different priority levels, for use with the SetPriority method */
13511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
13611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_PRIORITY_LOWEST		((SLint32) (-0x7FFFFFFF-1))
13711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_PRIORITY_VERYLOW		((SLint32) -0x60000000)
13811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_PRIORITY_LOW			((SLint32) -0x40000000)
13911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_PRIORITY_BELOWNORMAL	((SLint32) -0x20000000)
14011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_PRIORITY_NORMAL		((SLint32) 0x00000000)
14111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_PRIORITY_ABOVENORMAL	((SLint32) 0x20000000)
14211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_PRIORITY_HIGH		((SLint32) 0x40000000)
14311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_PRIORITY_VERYHIGH	((SLint32) 0x60000000)
14411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_PRIORITY_HIGHEST	((SLint32) 0x7FFFFFFF)
14511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
14611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
14711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/** These macros list the various sample formats that are possible on audio input and output devices. */
14811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
14911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_PCMSAMPLEFORMAT_FIXED_8	((SLuint16) 0x0008)
15011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_PCMSAMPLEFORMAT_FIXED_16	((SLuint16) 0x0010)
15111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_PCMSAMPLEFORMAT_FIXED_20 	((SLuint16) 0x0014)
15211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_PCMSAMPLEFORMAT_FIXED_24	((SLuint16) 0x0018)
15311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_PCMSAMPLEFORMAT_FIXED_28 	((SLuint16) 0x001C)
15411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_PCMSAMPLEFORMAT_FIXED_32	((SLuint16) 0x0020)
15511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
15611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
15711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/** These macros specify the commonly used sampling rates (in milliHertz) supported by most audio I/O devices. */
15811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
15911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_SAMPLINGRATE_8		((SLuint32) 8000000)
16011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_SAMPLINGRATE_11_025	((SLuint32) 11025000)
16111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_SAMPLINGRATE_12		((SLuint32) 12000000)
16211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_SAMPLINGRATE_16		((SLuint32) 16000000)
16311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_SAMPLINGRATE_22_05	((SLuint32) 22050000)
16411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_SAMPLINGRATE_24		((SLuint32) 24000000)
16511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_SAMPLINGRATE_32		((SLuint32) 32000000)
16611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_SAMPLINGRATE_44_1	((SLuint32) 44100000)
16711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_SAMPLINGRATE_48		((SLuint32) 48000000)
16811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_SAMPLINGRATE_64		((SLuint32) 64000000)
16911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_SAMPLINGRATE_88_2	((SLuint32) 88200000)
17011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_SAMPLINGRATE_96		((SLuint32) 96000000)
17111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_SAMPLINGRATE_192	((SLuint32) 192000000)
17211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
17311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_SPEAKER_FRONT_LEFT			((SLuint32) 0x00000001)
17411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_SPEAKER_FRONT_RIGHT			((SLuint32) 0x00000002)
17511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_SPEAKER_FRONT_CENTER			((SLuint32) 0x00000004)
17611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_SPEAKER_LOW_FREQUENCY			((SLuint32) 0x00000008)
17711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_SPEAKER_BACK_LEFT			((SLuint32) 0x00000010)
17811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_SPEAKER_BACK_RIGHT			((SLuint32) 0x00000020)
17911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_SPEAKER_FRONT_LEFT_OF_CENTER	((SLuint32) 0x00000040)
18011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_SPEAKER_FRONT_RIGHT_OF_CENTER	((SLuint32) 0x00000080)
18111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_SPEAKER_BACK_CENTER			((SLuint32) 0x00000100)
18211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_SPEAKER_SIDE_LEFT			((SLuint32) 0x00000200)
18311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_SPEAKER_SIDE_RIGHT			((SLuint32) 0x00000400)
18411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_SPEAKER_TOP_CENTER			((SLuint32) 0x00000800)
18511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_SPEAKER_TOP_FRONT_LEFT		((SLuint32) 0x00001000)
18611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_SPEAKER_TOP_FRONT_CENTER		((SLuint32) 0x00002000)
18711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_SPEAKER_TOP_FRONT_RIGHT		((SLuint32) 0x00004000)
18811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_SPEAKER_TOP_BACK_LEFT			((SLuint32) 0x00008000)
18911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_SPEAKER_TOP_BACK_CENTER		((SLuint32) 0x00010000)
19011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_SPEAKER_TOP_BACK_RIGHT		((SLuint32) 0x00020000)
19111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
19211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
19311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/*****************************************************************************/
19411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* Errors                                                                    */
19511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/*                                                                           */
19611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/*****************************************************************************/
19711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
19811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_RESULT_SUCCESS				((SLuint32) 0x00000000)
19911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_RESULT_PRECONDITIONS_VIOLATED	((SLuint32) 0x00000001)
20011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_RESULT_PARAMETER_INVALID		((SLuint32) 0x00000002)
20111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_RESULT_MEMORY_FAILURE			((SLuint32) 0x00000003)
20211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_RESULT_RESOURCE_ERROR			((SLuint32) 0x00000004)
20311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_RESULT_RESOURCE_LOST			((SLuint32) 0x00000005)
20411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_RESULT_IO_ERROR				((SLuint32) 0x00000006)
20511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_RESULT_BUFFER_INSUFFICIENT		((SLuint32) 0x00000007)
20611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_RESULT_CONTENT_CORRUPTED		((SLuint32) 0x00000008)
20711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_RESULT_CONTENT_UNSUPPORTED		((SLuint32) 0x00000009)
20811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_RESULT_CONTENT_NOT_FOUND		((SLuint32) 0x0000000A)
20911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_RESULT_PERMISSION_DENIED		((SLuint32) 0x0000000B)
21011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_RESULT_FEATURE_UNSUPPORTED		((SLuint32) 0x0000000C)
21111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_RESULT_INTERNAL_ERROR			((SLuint32) 0x0000000D)
21211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_RESULT_UNKNOWN_ERROR			((SLuint32) 0x0000000E)
21311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_RESULT_OPERATION_ABORTED		((SLuint32) 0x0000000F)
21411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_RESULT_CONTROL_LOST			((SLuint32) 0x00000010)
21511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
21611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
21711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* Object state definitions */
21811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
21911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_OBJECT_STATE_UNREALIZED	((SLuint32) 0x00000001)
22011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_OBJECT_STATE_REALIZED		((SLuint32) 0x00000002)
22111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_OBJECT_STATE_SUSPENDED	((SLuint32) 0x00000003)
22211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
22311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* Object event definitions */
22411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
22511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_OBJECT_EVENT_RUNTIME_ERROR			((SLuint32) 0x00000001)
22611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_OBJECT_EVENT_ASYNC_TERMINATION		((SLuint32) 0x00000002)
22711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_OBJECT_EVENT_RESOURCES_LOST			((SLuint32) 0x00000003)
22811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_OBJECT_EVENT_RESOURCES_AVAILABLE		((SLuint32) 0x00000004)
22911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_OBJECT_EVENT_ITF_CONTROL_TAKEN		((SLuint32) 0x00000005)
23011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_OBJECT_EVENT_ITF_CONTROL_RETURNED		((SLuint32) 0x00000006)
23111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_OBJECT_EVENT_ITF_PARAMETERS_CHANGED	((SLuint32) 0x00000007)
23211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
23311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
23411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/*****************************************************************************/
23511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* Interface definitions                                                     */
23611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/*****************************************************************************/
23711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
23811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/** NULL Interface */
23911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
24011cd02dfb91661c65134cac258cf5924270e9d2Dan Albertextern SL_API const SLInterfaceID SL_IID_NULL;
24111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
24211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/*---------------------------------------------------------------------------*/
24311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* Data Source and Data Sink Structures                                      */
24411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/*---------------------------------------------------------------------------*/
24511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
24611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/** Data locator macros  */
24711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_DATALOCATOR_URI			((SLuint32) 0x00000001)
24811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_DATALOCATOR_ADDRESS		((SLuint32) 0x00000002)
24911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_DATALOCATOR_IODEVICE		((SLuint32) 0x00000003)
25011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_DATALOCATOR_OUTPUTMIX		((SLuint32) 0x00000004)
25111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_DATALOCATOR_RESERVED5		((SLuint32) 0x00000005)
25211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_DATALOCATOR_BUFFERQUEUE	((SLuint32) 0x00000006)
25311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_DATALOCATOR_MIDIBUFFERQUEUE	((SLuint32) 0x00000007)
25411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_DATALOCATOR_RESERVED8		((SLuint32) 0x00000008)
25511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
25611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
25711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
25811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/** URI-based data locator definition where locatorType must be SL_DATALOCATOR_URI*/
25911cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef struct SLDataLocator_URI_ {
26011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLuint32 		locatorType;
26111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLchar *		URI;
26211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert} SLDataLocator_URI;
26311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
26411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/** Address-based data locator definition where locatorType must be SL_DATALOCATOR_ADDRESS*/
26511cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef struct SLDataLocator_Address_ {
26611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLuint32 	locatorType;
26711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	void 		*pAddress;
26811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLuint32	length;
26911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert} SLDataLocator_Address;
27011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
27111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/** IODevice-types */
27211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_IODEVICE_AUDIOINPUT	((SLuint32) 0x00000001)
27311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_IODEVICE_LEDARRAY	((SLuint32) 0x00000002)
27411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_IODEVICE_VIBRA		((SLuint32) 0x00000003)
27511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_IODEVICE_RESERVED4	((SLuint32) 0x00000004)
27611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_IODEVICE_RESERVED5	((SLuint32) 0x00000005)
27711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
27811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/** IODevice-based data locator definition where locatorType must be SL_DATALOCATOR_IODEVICE*/
27911cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef struct SLDataLocator_IODevice_ {
28011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLuint32	locatorType;
28111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLuint32	deviceType;
28211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLuint32	deviceID;
28311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLObjectItf	device;
28411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert} SLDataLocator_IODevice;
28511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
28611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/** OutputMix-based data locator definition where locatorType must be SL_DATALOCATOR_OUTPUTMIX*/
28711cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef struct SLDataLocator_OutputMix {
28811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLuint32 		locatorType;
28911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLObjectItf		outputMix;
29011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert} SLDataLocator_OutputMix;
29111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
29211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
29311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/** BufferQueue-based data locator definition where locatorType must be SL_DATALOCATOR_BUFFERQUEUE*/
29411cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef struct SLDataLocator_BufferQueue {
29511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLuint32	locatorType;
29611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLuint32	numBuffers;
29711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert} SLDataLocator_BufferQueue;
29811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
29911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/** MidiBufferQueue-based data locator definition where locatorType must be SL_DATALOCATOR_MIDIBUFFERQUEUE*/
30011cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef struct SLDataLocator_MIDIBufferQueue {
30111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLuint32	locatorType;
30211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLuint32	tpqn;
30311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLuint32	numBuffers;
30411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert} SLDataLocator_MIDIBufferQueue;
30511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
30611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/** Data format defines */
30711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_DATAFORMAT_MIME		((SLuint32) 0x00000001)
30811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_DATAFORMAT_PCM		((SLuint32) 0x00000002)
30911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_DATAFORMAT_RESERVED3	((SLuint32) 0x00000003)
31011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
31111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
31211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/** MIME-type-based data format definition where formatType must be SL_DATAFORMAT_MIME*/
31311cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef struct SLDataFormat_MIME_ {
31411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLuint32 		formatType;
31511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLchar * 		mimeType;
31611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLuint32		containerType;
31711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert} SLDataFormat_MIME;
31811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
31911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* Byte order of a block of 16- or 32-bit data */
32011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_BYTEORDER_BIGENDIAN				((SLuint32) 0x00000001)
32111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_BYTEORDER_LITTLEENDIAN			((SLuint32) 0x00000002)
32211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
32311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* Container type */
32411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_CONTAINERTYPE_UNSPECIFIED	((SLuint32) 0x00000001)
32511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_CONTAINERTYPE_RAW		((SLuint32) 0x00000002)
32611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_CONTAINERTYPE_ASF		((SLuint32) 0x00000003)
32711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_CONTAINERTYPE_AVI		((SLuint32) 0x00000004)
32811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_CONTAINERTYPE_BMP		((SLuint32) 0x00000005)
32911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_CONTAINERTYPE_JPG		((SLuint32) 0x00000006)
33011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_CONTAINERTYPE_JPG2000		((SLuint32) 0x00000007)
33111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_CONTAINERTYPE_M4A		((SLuint32) 0x00000008)
33211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_CONTAINERTYPE_MP3		((SLuint32) 0x00000009)
33311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_CONTAINERTYPE_MP4		((SLuint32) 0x0000000A)
33411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_CONTAINERTYPE_MPEG_ES		((SLuint32) 0x0000000B)
33511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_CONTAINERTYPE_MPEG_PS		((SLuint32) 0x0000000C)
33611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_CONTAINERTYPE_MPEG_TS		((SLuint32) 0x0000000D)
33711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_CONTAINERTYPE_QT		((SLuint32) 0x0000000E)
33811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_CONTAINERTYPE_WAV		((SLuint32) 0x0000000F)
33911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_CONTAINERTYPE_XMF_0		((SLuint32) 0x00000010)
34011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_CONTAINERTYPE_XMF_1		((SLuint32) 0x00000011)
34111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_CONTAINERTYPE_XMF_2		((SLuint32) 0x00000012)
34211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_CONTAINERTYPE_XMF_3		((SLuint32) 0x00000013)
34311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_CONTAINERTYPE_XMF_GENERIC	((SLuint32) 0x00000014)
34411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_CONTAINERTYPE_AMR  		((SLuint32) 0x00000015)
34511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_CONTAINERTYPE_AAC		((SLuint32) 0x00000016)
34611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_CONTAINERTYPE_3GPP		((SLuint32) 0x00000017)
34711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_CONTAINERTYPE_3GA		((SLuint32) 0x00000018)
34811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_CONTAINERTYPE_RM		((SLuint32) 0x00000019)
34911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_CONTAINERTYPE_DMF		((SLuint32) 0x0000001A)
35011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_CONTAINERTYPE_SMF		((SLuint32) 0x0000001B)
35111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_CONTAINERTYPE_MOBILE_DLS	((SLuint32) 0x0000001C)
35211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_CONTAINERTYPE_OGG	((SLuint32) 0x0000001D)
35311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
35411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
35511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/** PCM-type-based data format definition where formatType must be SL_DATAFORMAT_PCM*/
35611cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef struct SLDataFormat_PCM_ {
35711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLuint32 		formatType;
35811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLuint32 		numChannels;
35911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLuint32 		samplesPerSec;
36011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLuint32 		bitsPerSample;
36111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLuint32 		containerSize;
36211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLuint32 		channelMask;
36311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLuint32		endianness;
36411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert} SLDataFormat_PCM;
36511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
36611cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef struct SLDataSource_ {
36711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	void *pLocator;
36811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	void *pFormat;
36911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert} SLDataSource;
37011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
37111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
37211cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef struct SLDataSink_ {
37311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	void *pLocator;
37411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	void *pFormat;
37511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert} SLDataSink;
37611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
37711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
37811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
37911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
38011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
38111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
38211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/*---------------------------------------------------------------------------*/
38311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* Standard Object Interface                                                 */
38411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/*---------------------------------------------------------------------------*/
38511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
38611cd02dfb91661c65134cac258cf5924270e9d2Dan Albertextern SL_API const SLInterfaceID SL_IID_OBJECT;
38711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
38811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/** Object callback */
38911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
39011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
39111cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef void (SLAPIENTRY *slObjectCallback) (
39211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLObjectItf caller,
39311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	const void * pContext,
39411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLuint32 event,
39511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult result,
39611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    SLuint32 param,
39711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    void *pInterface
39811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert);
39911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
40011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
40111cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct SLObjectItf_ {
40211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*Realize) (
40311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLObjectItf self,
40411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLboolean async
40511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
40611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*Resume) (
40711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLObjectItf self,
40811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLboolean async
40911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
41011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*GetState) (
41111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLObjectItf self,
41211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLuint32 * pState
41311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
41411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*GetInterface) (
41511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLObjectItf self,
41611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		const SLInterfaceID iid,
41711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		void * pInterface
41811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
41911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*RegisterCallback) (
42011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLObjectItf self,
42111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		slObjectCallback callback,
42211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		void * pContext
42311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
42411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	void (*AbortAsyncOperation) (
42511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLObjectItf self
42611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
42711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	void (*Destroy) (
42811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLObjectItf self
42911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
43011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*SetPriority) (
43111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLObjectItf self,
43211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLint32 priority,
43311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLboolean preemptable
43411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
43511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*GetPriority) (
43611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLObjectItf self,
43711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLint32 *pPriority,
43811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLboolean *pPreemptable
43911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
44011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*SetLossOfControlInterfaces) (
44111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLObjectItf self,
44211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLint16 numInterfaces,
44311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLInterfaceID * pInterfaceIDs,
44411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLboolean enabled
44511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
44611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
44711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
44811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
44911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/*---------------------------------------------------------------------------*/
45011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* Audio IO Device capabilities interface                                    */
45111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/*---------------------------------------------------------------------------*/
45211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
45311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_DEFAULTDEVICEID_AUDIOINPUT 	((SLuint32) 0xFFFFFFFF)
45411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_DEFAULTDEVICEID_AUDIOOUTPUT 	((SLuint32) 0xFFFFFFFE)
45511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_DEFAULTDEVICEID_LED          ((SLuint32) 0xFFFFFFFD)
45611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_DEFAULTDEVICEID_VIBRA        ((SLuint32) 0xFFFFFFFC)
45711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_DEFAULTDEVICEID_RESERVED1    ((SLuint32) 0xFFFFFFFB)
45811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
45911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
46011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_DEVCONNECTION_INTEGRATED         ((SLint16) 0x0001)
46111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_DEVCONNECTION_ATTACHED_WIRED     ((SLint16) 0x0100)
46211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_DEVCONNECTION_ATTACHED_WIRELESS  ((SLint16) 0x0200)
46311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_DEVCONNECTION_NETWORK 		    ((SLint16) 0x0400)
46411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
46511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
46611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_DEVLOCATION_HANDSET 	((SLuint16) 0x0001)
46711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_DEVLOCATION_HEADSET 	((SLuint16) 0x0002)
46811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_DEVLOCATION_CARKIT 	((SLuint16) 0x0003)
46911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_DEVLOCATION_DOCK 	((SLuint16) 0x0004)
47011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_DEVLOCATION_REMOTE 	((SLuint16) 0x0005)
47111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* Note: SL_DEVLOCATION_RESLTE is deprecated, use SL_DEVLOCATION_REMOTE instead. */
47211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_DEVLOCATION_RESLTE 	((SLuint16) 0x0005)
47311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
47411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
47511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_DEVSCOPE_UNKNOWN     ((SLuint16) 0x0001)
47611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_DEVSCOPE_ENVIRONMENT ((SLuint16) 0x0002)
47711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_DEVSCOPE_USER        ((SLuint16) 0x0003)
47811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
47911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
48011cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef struct SLAudioInputDescriptor_ {
48111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLchar *deviceName;
48211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLint16 deviceConnection;
48311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLint16 deviceScope;
48411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLint16 deviceLocation;
48511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLboolean isForTelephony;
48611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLmilliHertz minSampleRate;
48711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLmilliHertz maxSampleRate;
48811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLboolean isFreqRangeContinuous;
48911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLmilliHertz *samplingRatesSupported;
49011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLint16 numOfSamplingRatesSupported;
49111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLint16 maxChannels;
49211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert} SLAudioInputDescriptor;
49311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
49411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
49511cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef struct SLAudioOutputDescriptor_ {
49611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLchar *pDeviceName;
49711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLint16 deviceConnection;
49811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLint16 deviceScope;
49911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLint16 deviceLocation;
50011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLboolean isForTelephony;
50111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLmilliHertz minSampleRate;
50211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLmilliHertz maxSampleRate;
50311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLboolean isFreqRangeContinuous;
50411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLmilliHertz *samplingRatesSupported;
50511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLint16 numOfSamplingRatesSupported;
50611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLint16 maxChannels;
50711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert} SLAudioOutputDescriptor;
50811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
50911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
51011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
51111cd02dfb91661c65134cac258cf5924270e9d2Dan Albertextern SL_API const SLInterfaceID SL_IID_AUDIOIODEVICECAPABILITIES;
51211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
51311cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct SLAudioIODeviceCapabilitiesItf_;
51411cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef const struct SLAudioIODeviceCapabilitiesItf_ * const * SLAudioIODeviceCapabilitiesItf;
51511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
51611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
51711cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef void (SLAPIENTRY *slAvailableAudioInputsChangedCallback) (
51811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLAudioIODeviceCapabilitiesItf caller,
51911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	void *pContext,
52011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLuint32 deviceID,
52111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLint32 numInputs,
52211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLboolean isNew
52311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert);
52411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
52511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
52611cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef void (SLAPIENTRY *slAvailableAudioOutputsChangedCallback) (
52711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLAudioIODeviceCapabilitiesItf caller,
52811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	void *pContext,
52911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLuint32 deviceID,
53011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLint32 numOutputs,
53111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLboolean isNew
53211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert);
53311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
53411cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef void (SLAPIENTRY *slDefaultDeviceIDMapChangedCallback) (
53511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLAudioIODeviceCapabilitiesItf caller,
53611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	void *pContext,
53711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLboolean isOutput,
53811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLint32 numDevices
53911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert);
54011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
54111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
54211cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct SLAudioIODeviceCapabilitiesItf_ {
54311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*GetAvailableAudioInputs)(
54411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLAudioIODeviceCapabilitiesItf self,
54511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLint32  *pNumInputs,
54611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLuint32 *pInputDeviceIDs
54711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
54811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*QueryAudioInputCapabilities)(
54911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLAudioIODeviceCapabilitiesItf self,
55011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLuint32 deviceId,
55111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLAudioInputDescriptor *pDescriptor
55211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
55311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*RegisterAvailableAudioInputsChangedCallback) (
55411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLAudioIODeviceCapabilitiesItf self,
55511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		slAvailableAudioInputsChangedCallback callback,
55611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		void *pContext
55711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
55811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*GetAvailableAudioOutputs)(
55911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLAudioIODeviceCapabilitiesItf self,
56011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLint32 *pNumOutputs,
56111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLuint32 *pOutputDeviceIDs
56211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
56311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*QueryAudioOutputCapabilities)(
56411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLAudioIODeviceCapabilitiesItf self,
56511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLuint32 deviceId,
56611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLAudioOutputDescriptor *pDescriptor
56711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
56811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*RegisterAvailableAudioOutputsChangedCallback) (
56911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLAudioIODeviceCapabilitiesItf self,
57011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		slAvailableAudioOutputsChangedCallback callback,
57111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		void *pContext
57211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
57311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*RegisterDefaultDeviceIDMapChangedCallback) (
57411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLAudioIODeviceCapabilitiesItf self,
57511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		slDefaultDeviceIDMapChangedCallback callback,
57611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		void *pContext
57711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
57811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*GetAssociatedAudioInputs) (
57911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLAudioIODeviceCapabilitiesItf self,
58011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLuint32 deviceId,
58111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLint32 *pNumAudioInputs,
58211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLuint32 *pAudioInputDeviceIDs
58311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
58411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*GetAssociatedAudioOutputs) (
58511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLAudioIODeviceCapabilitiesItf self,
58611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLuint32 deviceId,
58711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLint32 *pNumAudioOutputs,
58811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLuint32 *pAudioOutputDeviceIDs
58911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
59011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*GetDefaultAudioDevices) (
59111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLAudioIODeviceCapabilitiesItf self,
59211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLuint32 defaultDeviceID,
59311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLint32 *pNumAudioDevices,
59411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLuint32 *pAudioDeviceIDs
59511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
59611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*QuerySampleFormatsSupported)(
59711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLAudioIODeviceCapabilitiesItf self,
59811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLuint32 deviceId,
59911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLmilliHertz samplingRate,
60011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLint32 *pSampleFormats,
60111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLint32 *pNumOfSampleFormats
60211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
60311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
60411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
60511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
60611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
60711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/*---------------------------------------------------------------------------*/
60811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* Capabilities of the LED array IODevice                                    */
60911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/*---------------------------------------------------------------------------*/
61011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
61111cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef struct SLLEDDescriptor_ {
61211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLuint8   ledCount;
61311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLuint8   primaryLED;
61411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLuint32  colorMask;
61511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert} SLLEDDescriptor;
61611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
61711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
61811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/*---------------------------------------------------------------------------*/
61911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* LED Array interface                                                       */
62011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/*---------------------------------------------------------------------------*/
62111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
62211cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef struct SLHSL_ {
62311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    SLmillidegree  hue;
62411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    SLpermille     saturation;
62511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    SLpermille     lightness;
62611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert} SLHSL;
62711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
62811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
62911cd02dfb91661c65134cac258cf5924270e9d2Dan Albertextern SL_API const SLInterfaceID SL_IID_LED;
63011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
63111cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct SLLEDArrayItf_;
63211cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef const struct SLLEDArrayItf_ * const * SLLEDArrayItf;
63311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
63411cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct SLLEDArrayItf_ {
63511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*ActivateLEDArray) (
63611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLLEDArrayItf self,
63711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLuint32 lightMask
63811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
63911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*IsLEDArrayActivated) (
64011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLLEDArrayItf self,
64111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLuint32 *lightMask
64211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
64311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*SetColor) (
64411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLLEDArrayItf self,
64511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLuint8 index,
64611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		const SLHSL *color
64711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
64811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*GetColor) (
64911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLLEDArrayItf self,
65011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLuint8 index,
65111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLHSL *color
65211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
65311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
65411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
65511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/*---------------------------------------------------------------------------*/
65611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* Capabilities of the Vibra IODevice                                        */
65711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/*---------------------------------------------------------------------------*/
65811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
65911cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef struct SLVibraDescriptor_ {
66011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLboolean supportsFrequency;
66111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLboolean supportsIntensity;
66211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLmilliHertz  minFrequency;
66311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLmilliHertz  maxFrequency;
66411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert} SLVibraDescriptor;
66511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
66611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
66711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
66811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/*---------------------------------------------------------------------------*/
66911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* Vibra interface                                                           */
67011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/*---------------------------------------------------------------------------*/
67111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
67211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
67311cd02dfb91661c65134cac258cf5924270e9d2Dan Albertextern SL_API const SLInterfaceID SL_IID_VIBRA;
67411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
67511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
67611cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct SLVibraItf_;
67711cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef const struct SLVibraItf_ * const * SLVibraItf;
67811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
67911cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct SLVibraItf_ {
68011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*Vibrate) (
68111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLVibraItf self,
68211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLboolean vibrate
68311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
68411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*IsVibrating) (
68511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLVibraItf self,
68611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLboolean *pVibrating
68711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
68811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*SetFrequency) (
68911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLVibraItf self,
69011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLmilliHertz frequency
69111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
69211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*GetFrequency) (
69311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLVibraItf self,
69411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLmilliHertz *pFrequency
69511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
69611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*SetIntensity) (
69711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLVibraItf self,
69811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLpermille intensity
69911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
70011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*GetIntensity) (
70111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLVibraItf self,
70211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLpermille *pIntensity
70311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
70411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
70511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
70611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
70711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/*---------------------------------------------------------------------------*/
70811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* Meta data extraction related types and interface                          */
70911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/*---------------------------------------------------------------------------*/
71011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
71111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_CHARACTERENCODING_UNKNOWN			((SLuint32) 0x00000000)
71211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_CHARACTERENCODING_BINARY       ((SLuint32) 0x00000001)
71311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_CHARACTERENCODING_ASCII        ((SLuint32) 0x00000002)
71411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_CHARACTERENCODING_BIG5         ((SLuint32) 0x00000003)
71511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_CHARACTERENCODING_CODEPAGE1252		((SLuint32) 0x00000004)
71611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_CHARACTERENCODING_GB2312			((SLuint32) 0x00000005)
71711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_CHARACTERENCODING_HZGB2312			((SLuint32) 0x00000006)
71811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_CHARACTERENCODING_GB12345			((SLuint32) 0x00000007)
71911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_CHARACTERENCODING_GB18030			((SLuint32) 0x00000008)
72011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_CHARACTERENCODING_GBK				((SLuint32) 0x00000009)
72111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_CHARACTERENCODING_IMAPUTF7			((SLuint32) 0x0000000A)
72211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_CHARACTERENCODING_ISO2022JP			((SLuint32) 0x0000000B)
72311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_CHARACTERENCODING_ISO2022JP1		((SLuint32) 0x0000000B)
72411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_CHARACTERENCODING_ISO88591			((SLuint32) 0x0000000C)
72511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_CHARACTERENCODING_ISO885910			((SLuint32) 0x0000000D)
72611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_CHARACTERENCODING_ISO885913			((SLuint32) 0x0000000E)
72711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_CHARACTERENCODING_ISO885914			((SLuint32) 0x0000000F)
72811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_CHARACTERENCODING_ISO885915			((SLuint32) 0x00000010)
72911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_CHARACTERENCODING_ISO88592			((SLuint32) 0x00000011)
73011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_CHARACTERENCODING_ISO88593			((SLuint32) 0x00000012)
73111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_CHARACTERENCODING_ISO88594			((SLuint32) 0x00000013)
73211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_CHARACTERENCODING_ISO88595			((SLuint32) 0x00000014)
73311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_CHARACTERENCODING_ISO88596			((SLuint32) 0x00000015)
73411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_CHARACTERENCODING_ISO88597			((SLuint32) 0x00000016)
73511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_CHARACTERENCODING_ISO88598			((SLuint32) 0x00000017)
73611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_CHARACTERENCODING_ISO88599			((SLuint32) 0x00000018)
73711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_CHARACTERENCODING_ISOEUCJP			((SLuint32) 0x00000019)
73811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_CHARACTERENCODING_SHIFTJIS			((SLuint32) 0x0000001A)
73911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_CHARACTERENCODING_SMS7BIT			((SLuint32) 0x0000001B)
74011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_CHARACTERENCODING_UTF7			((SLuint32) 0x0000001C)
74111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_CHARACTERENCODING_UTF8			((SLuint32) 0x0000001D)
74211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_CHARACTERENCODING_JAVACONFORMANTUTF8	((SLuint32) 0x0000001E)
74311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_CHARACTERENCODING_UTF16BE			((SLuint32) 0x0000001F)
74411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_CHARACTERENCODING_UTF16LE			((SLuint32) 0x00000020)
74511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
74611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
74711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_METADATA_FILTER_KEY		((SLuint8) 0x01)
74811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_METADATA_FILTER_LANG		((SLuint8) 0x02)
74911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_METADATA_FILTER_ENCODING	((SLuint8) 0x04)
75011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
75111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
75211cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef struct SLMetadataInfo_ {
75311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    SLuint32     size;
75411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    SLuint32     encoding;
75511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    SLchar       langCountry[16];
75611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    SLuint8      data[1];
75711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert} SLMetadataInfo;
75811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
75911cd02dfb91661c65134cac258cf5924270e9d2Dan Albertextern SL_API const SLInterfaceID SL_IID_METADATAEXTRACTION;
76011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
76111cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct SLMetadataExtractionItf_;
76211cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef const struct SLMetadataExtractionItf_ * const * SLMetadataExtractionItf;
76311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
76411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
76511cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct SLMetadataExtractionItf_ {
76611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*GetItemCount) (
76711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLMetadataExtractionItf self,
76811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLuint32 *pItemCount
76911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
77011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*GetKeySize) (
77111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLMetadataExtractionItf self,
77211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLuint32 index,
77311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLuint32 *pKeySize
77411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
77511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*GetKey) (
77611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLMetadataExtractionItf self,
77711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLuint32 index,
77811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLuint32 keySize,
77911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLMetadataInfo *pKey
78011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
78111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*GetValueSize) (
78211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLMetadataExtractionItf self,
78311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLuint32 index,
78411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLuint32 *pValueSize
78511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
78611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*GetValue) (
78711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLMetadataExtractionItf self,
78811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLuint32 index,
78911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLuint32 valueSize,
79011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLMetadataInfo *pValue
79111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
79211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*AddKeyFilter) (
79311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLMetadataExtractionItf self,
79411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLuint32 keySize,
79511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		const void *pKey,
79611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLuint32 keyEncoding,
79711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		const SLchar *pValueLangCountry,
79811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLuint32 valueEncoding,
79911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLuint8 filterMask
80011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
80111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*ClearKeyFilter) (
80211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLMetadataExtractionItf self
80311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
80411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
80511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
80611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
80711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/*---------------------------------------------------------------------------*/
80811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* Meta data traversal related types and interface                          */
80911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/*---------------------------------------------------------------------------*/
81011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
81111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_METADATATRAVERSALMODE_ALL	((SLuint32) 0x00000001)
81211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_METADATATRAVERSALMODE_NODE	((SLuint32) 0x00000002)
81311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
81411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
81511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_NODETYPE_UNSPECIFIED	((SLuint32) 0x00000001)
81611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_NODETYPE_AUDIO		((SLuint32) 0x00000002)
81711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_NODETYPE_VIDEO		((SLuint32) 0x00000003)
81811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_NODETYPE_IMAGE		((SLuint32) 0x00000004)
81911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
82011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_NODE_PARENT 0xFFFFFFFF
82111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
82211cd02dfb91661c65134cac258cf5924270e9d2Dan Albertextern SL_API const SLInterfaceID SL_IID_METADATATRAVERSAL;
82311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
82411cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct SLMetadataTraversalItf_;
82511cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef const struct SLMetadataTraversalItf_ * const * SLMetadataTraversalItf;
82611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
82711cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct SLMetadataTraversalItf_ {
82811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*SetMode) (
82911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLMetadataTraversalItf self,
83011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLuint32 mode
83111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
83211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*GetChildCount) (
83311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLMetadataTraversalItf self,
83411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLuint32 *pCount
83511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
83611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*GetChildMIMETypeSize) (
83711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLMetadataTraversalItf self,
83811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLuint32 index,
83911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLuint32 *pSize
84011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
84111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*GetChildInfo) (
84211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLMetadataTraversalItf self,
84311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLuint32 index,
84411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLint32 *pNodeID,
84511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLuint32 *pType,
84611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLuint32 size,
84711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLchar *pMimeType
84811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
84911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*SetActiveNode) (
85011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLMetadataTraversalItf self,
85111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLuint32 index
85211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
85311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
85411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
85511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/*---------------------------------------------------------------------------*/
85611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* Dynamic Source types and interface                                        */
85711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/*---------------------------------------------------------------------------*/
85811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
85911cd02dfb91661c65134cac258cf5924270e9d2Dan Albertextern SL_API const SLInterfaceID SL_IID_DYNAMICSOURCE;
86011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
86111cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct SLDynamicSourceItf_;
86211cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef const struct SLDynamicSourceItf_ * const * SLDynamicSourceItf;
86311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
86411cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct SLDynamicSourceItf_ {
86511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*SetSource) (
86611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLDynamicSourceItf self,
86711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLDataSource *pDataSource
86811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
86911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
87011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
87111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/*---------------------------------------------------------------------------*/
87211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* Output Mix interface                                                      */
87311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/*---------------------------------------------------------------------------*/
87411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
87511cd02dfb91661c65134cac258cf5924270e9d2Dan Albertextern SL_API const SLInterfaceID SL_IID_OUTPUTMIX;
87611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
87711cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct SLOutputMixItf_;
87811cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef const struct SLOutputMixItf_ * const * SLOutputMixItf;
87911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
88011cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef void (SLAPIENTRY *slMixDeviceChangeCallback) (
88111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLOutputMixItf caller,
88211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    void *pContext
88311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert);
88411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
88511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
88611cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct SLOutputMixItf_ {
88711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*GetDestinationOutputDeviceIDs) (
88811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLOutputMixItf self,
88911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLint32 *pNumDevices,
89011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLuint32 *pDeviceIDs
89111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
89211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*RegisterDeviceChangeCallback) (
89311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLOutputMixItf self,
89411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		slMixDeviceChangeCallback callback,
89511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		void *pContext
89611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
89711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    SLresult (*ReRoute)(
89811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        SLOutputMixItf self,
89911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        SLint32 numOutputDevices,
90011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        SLuint32 *pOutputDeviceIDs
90111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
90211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
90311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
90411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
90511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/*---------------------------------------------------------------------------*/
90611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* Playback interface                                                        */
90711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/*---------------------------------------------------------------------------*/
90811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
90911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/** Playback states */
91011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_PLAYSTATE_STOPPED	((SLuint32) 0x00000001)
91111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_PLAYSTATE_PAUSED	((SLuint32) 0x00000002)
91211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_PLAYSTATE_PLAYING	((SLuint32) 0x00000003)
91311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
91411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/** Play events **/
91511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_PLAYEVENT_HEADATEND		((SLuint32) 0x00000001)
91611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_PLAYEVENT_HEADATMARKER	((SLuint32) 0x00000002)
91711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_PLAYEVENT_HEADATNEWPOS	((SLuint32) 0x00000004)
91811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_PLAYEVENT_HEADMOVING		((SLuint32) 0x00000008)
91911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_PLAYEVENT_HEADSTALLED	((SLuint32) 0x00000010)
92011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
92111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_TIME_UNKNOWN	((SLuint32) 0xFFFFFFFF)
92211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
92311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
92411cd02dfb91661c65134cac258cf5924270e9d2Dan Albertextern SL_API const SLInterfaceID SL_IID_PLAY;
92511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
92611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/** Playback interface methods */
92711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
92811cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct SLPlayItf_;
92911cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef const struct SLPlayItf_ * const * SLPlayItf;
93011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
93111cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef void (SLAPIENTRY *slPlayCallback) (
93211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLPlayItf caller,
93311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	void *pContext,
93411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLuint32 event
93511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert);
93611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
93711cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct SLPlayItf_ {
93811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*SetPlayState) (
93911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLPlayItf self,
94011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLuint32 state
94111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
94211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*GetPlayState) (
94311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLPlayItf self,
94411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLuint32 *pState
94511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
94611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*GetDuration) (
94711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLPlayItf self,
94811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLmillisecond *pMsec
94911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
95011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*GetPosition) (
95111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLPlayItf self,
95211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLmillisecond *pMsec
95311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
95411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*RegisterCallback) (
95511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLPlayItf self,
95611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		slPlayCallback callback,
95711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		void *pContext
95811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
95911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*SetCallbackEventsMask) (
96011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLPlayItf self,
96111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLuint32 eventFlags
96211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
96311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*GetCallbackEventsMask) (
96411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLPlayItf self,
96511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLuint32 *pEventFlags
96611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
96711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*SetMarkerPosition) (
96811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLPlayItf self,
96911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLmillisecond mSec
97011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
97111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*ClearMarkerPosition) (
97211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLPlayItf self
97311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
97411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*GetMarkerPosition) (
97511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLPlayItf self,
97611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLmillisecond *pMsec
97711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
97811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*SetPositionUpdatePeriod) (
97911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLPlayItf self,
98011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLmillisecond mSec
98111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
98211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*GetPositionUpdatePeriod) (
98311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLPlayItf self,
98411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLmillisecond *pMsec
98511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
98611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
98711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
98811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/*---------------------------------------------------------------------------*/
98911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* Prefetch status interface                                                 */
99011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/*---------------------------------------------------------------------------*/
99111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
99211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_PREFETCHEVENT_STATUSCHANGE		((SLuint32) 0x00000001)
99311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_PREFETCHEVENT_FILLLEVELCHANGE	((SLuint32) 0x00000002)
99411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
99511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_PREFETCHSTATUS_UNDERFLOW		((SLuint32) 0x00000001)
99611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_PREFETCHSTATUS_SUFFICIENTDATA	((SLuint32) 0x00000002)
99711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_PREFETCHSTATUS_OVERFLOW		((SLuint32) 0x00000003)
99811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
99911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
100011cd02dfb91661c65134cac258cf5924270e9d2Dan Albertextern SL_API const SLInterfaceID SL_IID_PREFETCHSTATUS;
100111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
100211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
100311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/** Prefetch status interface methods */
100411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
100511cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct SLPrefetchStatusItf_;
100611cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef const struct SLPrefetchStatusItf_ * const * SLPrefetchStatusItf;
100711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
100811cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef void (SLAPIENTRY *slPrefetchCallback) (
100911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLPrefetchStatusItf caller,
101011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	void *pContext,
101111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLuint32 event
101211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert);
101311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
101411cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct SLPrefetchStatusItf_ {
101511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*GetPrefetchStatus) (
101611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLPrefetchStatusItf self,
101711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLuint32 *pStatus
101811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
101911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*GetFillLevel) (
102011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLPrefetchStatusItf self,
102111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLpermille *pLevel
102211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
102311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*RegisterCallback) (
102411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLPrefetchStatusItf self,
102511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		slPrefetchCallback callback,
102611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		void *pContext
102711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
102811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*SetCallbackEventsMask) (
102911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLPrefetchStatusItf self,
103011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLuint32 eventFlags
103111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
103211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*GetCallbackEventsMask) (
103311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLPrefetchStatusItf self,
103411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLuint32 *pEventFlags
103511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
103611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*SetFillUpdatePeriod) (
103711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLPrefetchStatusItf self,
103811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLpermille period
103911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
104011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*GetFillUpdatePeriod) (
104111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLPrefetchStatusItf self,
104211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLpermille *pPeriod
104311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
104411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
104511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
104611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/*---------------------------------------------------------------------------*/
104711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* Playback Rate interface                                                   */
104811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/*---------------------------------------------------------------------------*/
104911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
105011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_RATEPROP_RESERVED1		  		((SLuint32) 0x00000001)
105111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_RATEPROP_RESERVED2		  		((SLuint32) 0x00000002)
105211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_RATEPROP_SILENTAUDIO				((SLuint32) 0x00000100)
105311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_RATEPROP_STAGGEREDAUDIO	((SLuint32) 0x00000200)
105411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_RATEPROP_NOPITCHCORAUDIO	((SLuint32) 0x00000400)
105511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_RATEPROP_PITCHCORAUDIO	((SLuint32) 0x00000800)
105611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
105711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
105811cd02dfb91661c65134cac258cf5924270e9d2Dan Albertextern SL_API const SLInterfaceID SL_IID_PLAYBACKRATE;
105911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
106011cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct SLPlaybackRateItf_;
106111cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef const struct SLPlaybackRateItf_ * const * SLPlaybackRateItf;
106211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
106311cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct SLPlaybackRateItf_ {
106411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*SetRate)(
106511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLPlaybackRateItf self,
106611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLpermille rate
106711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
106811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*GetRate)(
106911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLPlaybackRateItf self,
107011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLpermille *pRate
107111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
107211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*SetPropertyConstraints)(
107311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLPlaybackRateItf self,
107411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLuint32 constraints
107511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
107611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*GetProperties)(
107711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLPlaybackRateItf self,
107811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLuint32 *pProperties
107911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
108011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*GetCapabilitiesOfRate)(
108111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLPlaybackRateItf self,
108211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLpermille rate,
108311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLuint32 *pCapabilities
108411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
108511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*GetRateRange) (
108611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLPlaybackRateItf self,
108711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLuint8 index,
108811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLpermille *pMinRate,
108911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLpermille *pMaxRate,
109011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLpermille *pStepSize,
109111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLuint32 *pCapabilities
109211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
109311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
109411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
109511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/*---------------------------------------------------------------------------*/
109611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* Seek Interface                                                            */
109711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/*---------------------------------------------------------------------------*/
109811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
109911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_SEEKMODE_FAST		((SLuint32) 0x0001)
110011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_SEEKMODE_ACCURATE	((SLuint32) 0x0002)
110111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
110211cd02dfb91661c65134cac258cf5924270e9d2Dan Albertextern SL_API const SLInterfaceID SL_IID_SEEK;
110311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
110411cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct SLSeekItf_;
110511cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef const struct SLSeekItf_ * const * SLSeekItf;
110611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
110711cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct SLSeekItf_ {
110811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*SetPosition)(
110911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLSeekItf self,
111011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLmillisecond pos,
111111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLuint32 seekMode
111211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
111311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*SetLoop)(
111411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLSeekItf self,
111511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLboolean loopEnable,
111611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLmillisecond startPos,
111711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLmillisecond endPos
111811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
111911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*GetLoop)(
112011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLSeekItf self,
112111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLboolean *pLoopEnabled,
112211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLmillisecond *pStartPos,
112311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLmillisecond *pEndPos
112411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
112511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
112611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
112711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/*---------------------------------------------------------------------------*/
112811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* Standard Recording Interface                                              */
112911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/*---------------------------------------------------------------------------*/
113011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
113111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/** Recording states */
113211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_RECORDSTATE_STOPPED 	((SLuint32) 0x00000001)
113311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_RECORDSTATE_PAUSED	((SLuint32) 0x00000002)
113411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_RECORDSTATE_RECORDING	((SLuint32) 0x00000003)
113511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
113611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
113711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/** Record event **/
113811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_RECORDEVENT_HEADATLIMIT	((SLuint32) 0x00000001)
113911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_RECORDEVENT_HEADATMARKER	((SLuint32) 0x00000002)
114011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_RECORDEVENT_HEADATNEWPOS	((SLuint32) 0x00000004)
114111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_RECORDEVENT_HEADMOVING	((SLuint32) 0x00000008)
114211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_RECORDEVENT_HEADSTALLED 	((SLuint32) 0x00000010)
114311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* Note: SL_RECORDEVENT_BUFFER_INSUFFICIENT is deprecated, use SL_RECORDEVENT_BUFFER_FULL instead. */
114411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_RECORDEVENT_BUFFER_INSUFFICIENT      ((SLuint32) 0x00000020)
114511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_RECORDEVENT_BUFFER_FULL	((SLuint32) 0x00000020)
114611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
114711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
114811cd02dfb91661c65134cac258cf5924270e9d2Dan Albertextern SL_API const SLInterfaceID SL_IID_RECORD;
114911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
115011cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct SLRecordItf_;
115111cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef const struct SLRecordItf_ * const * SLRecordItf;
115211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
115311cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef void (SLAPIENTRY *slRecordCallback) (
115411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLRecordItf caller,
115511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	void *pContext,
115611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLuint32 event
115711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert);
115811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
115911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/** Recording interface methods */
116011cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct SLRecordItf_ {
116111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*SetRecordState) (
116211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLRecordItf self,
116311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLuint32 state
116411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
116511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*GetRecordState) (
116611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLRecordItf self,
116711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLuint32 *pState
116811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
116911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*SetDurationLimit) (
117011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLRecordItf self,
117111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLmillisecond msec
117211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
117311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*GetPosition) (
117411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLRecordItf self,
117511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLmillisecond *pMsec
117611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
117711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*RegisterCallback) (
117811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLRecordItf self,
117911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		slRecordCallback callback,
118011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		void *pContext
118111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
118211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*SetCallbackEventsMask) (
118311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLRecordItf self,
118411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLuint32 eventFlags
118511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
118611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*GetCallbackEventsMask) (
118711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLRecordItf self,
118811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLuint32 *pEventFlags
118911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
119011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*SetMarkerPosition) (
119111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLRecordItf self,
119211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLmillisecond mSec
119311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
119411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*ClearMarkerPosition) (
119511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLRecordItf self
119611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
119711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*GetMarkerPosition) (
119811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLRecordItf self,
119911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLmillisecond *pMsec
120011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
120111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*SetPositionUpdatePeriod) (
120211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLRecordItf self,
120311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLmillisecond mSec
120411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
120511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*GetPositionUpdatePeriod) (
120611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLRecordItf self,
120711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLmillisecond *pMsec
120811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
120911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
121011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
121111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/*---------------------------------------------------------------------------*/
121211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* Equalizer interface                                                       */
121311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/*---------------------------------------------------------------------------*/
121411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
121511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_EQUALIZER_UNDEFINED				((SLuint16) 0xFFFF)
121611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
121711cd02dfb91661c65134cac258cf5924270e9d2Dan Albertextern SL_API const SLInterfaceID SL_IID_EQUALIZER;
121811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
121911cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct SLEqualizerItf_;
122011cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef const struct SLEqualizerItf_ * const * SLEqualizerItf;
122111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
122211cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct SLEqualizerItf_ {
122311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*SetEnabled)(
122411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLEqualizerItf self,
122511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLboolean enabled
122611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
122711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*IsEnabled)(
122811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLEqualizerItf self,
122911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLboolean *pEnabled
123011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
123111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*GetNumberOfBands)(
123211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLEqualizerItf self,
123311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLuint16 *pAmount
123411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
123511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*GetBandLevelRange)(
123611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLEqualizerItf self,
123711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLmillibel *pMin,
123811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLmillibel *pMax
123911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
124011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*SetBandLevel)(
124111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLEqualizerItf self,
124211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLuint16 band,
124311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLmillibel level
124411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
124511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*GetBandLevel)(
124611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLEqualizerItf self,
124711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLuint16 band,
124811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLmillibel *pLevel
124911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
125011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*GetCenterFreq)(
125111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLEqualizerItf self,
125211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLuint16 band,
125311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLmilliHertz *pCenter
125411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
125511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*GetBandFreqRange)(
125611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLEqualizerItf self,
125711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLuint16 band,
125811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLmilliHertz *pMin,
125911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLmilliHertz *pMax
126011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
126111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*GetBand)(
126211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLEqualizerItf self,
126311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLmilliHertz frequency,
126411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLuint16 *pBand
126511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
126611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*GetCurrentPreset)(
126711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLEqualizerItf self,
126811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLuint16 *pPreset
126911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
127011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*UsePreset)(
127111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLEqualizerItf self,
127211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLuint16 index
127311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
127411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*GetNumberOfPresets)(
127511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLEqualizerItf self,
127611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLuint16 *pNumPresets
127711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
127811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*GetPresetName)(
127911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLEqualizerItf self,
128011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLuint16 index,
128111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		const SLchar ** ppName
128211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
128311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
128411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
128511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/*---------------------------------------------------------------------------*/
128611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* Volume Interface                                                           */
128711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* --------------------------------------------------------------------------*/
128811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
128911cd02dfb91661c65134cac258cf5924270e9d2Dan Albertextern SL_API const SLInterfaceID SL_IID_VOLUME;
129011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
129111cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct SLVolumeItf_;
129211cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef const struct SLVolumeItf_ * const * SLVolumeItf;
129311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
129411cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct SLVolumeItf_ {
129511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*SetVolumeLevel) (
129611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLVolumeItf self,
129711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLmillibel level
129811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
129911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*GetVolumeLevel) (
130011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLVolumeItf self,
130111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLmillibel *pLevel
130211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
130311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*GetMaxVolumeLevel) (
130411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLVolumeItf  self,
130511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLmillibel *pMaxLevel
130611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
130711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*SetMute) (
130811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLVolumeItf self,
130911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLboolean mute
131011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
131111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*GetMute) (
131211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLVolumeItf self,
131311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLboolean *pMute
131411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
131511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*EnableStereoPosition) (
131611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLVolumeItf self,
131711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLboolean enable
131811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
131911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*IsEnabledStereoPosition) (
132011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLVolumeItf self,
132111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLboolean *pEnable
132211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
132311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*SetStereoPosition) (
132411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLVolumeItf self,
132511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLpermille stereoPosition
132611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
132711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*GetStereoPosition) (
132811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLVolumeItf self,
132911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLpermille *pStereoPosition
133011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
133111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
133211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
133311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
133411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/*---------------------------------------------------------------------------*/
133511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* Device Volume Interface                                                   */
133611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* --------------------------------------------------------------------------*/
133711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
133811cd02dfb91661c65134cac258cf5924270e9d2Dan Albertextern SL_API const SLInterfaceID SL_IID_DEVICEVOLUME;
133911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
134011cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct SLDeviceVolumeItf_;
134111cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef const struct SLDeviceVolumeItf_ * const * SLDeviceVolumeItf;
134211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
134311cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct SLDeviceVolumeItf_ {
134411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*GetVolumeScale) (
134511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLDeviceVolumeItf self,
134611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLuint32 deviceID,
134711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLint32 *pMinValue,
134811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLint32 *pMaxValue,
134911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLboolean *pIsMillibelScale
135011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
135111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*SetVolume) (
135211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLDeviceVolumeItf self,
135311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLuint32 deviceID,
135411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLint32 volume
135511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
135611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*GetVolume) (
135711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLDeviceVolumeItf self,
135811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLuint32 deviceID,
135911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLint32 *pVolume
136011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
136111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
136211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
136311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
136411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/*---------------------------------------------------------------------------*/
136511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* Buffer Queue Interface                                                    */
136611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/*---------------------------------------------------------------------------*/
136711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
136811cd02dfb91661c65134cac258cf5924270e9d2Dan Albertextern SL_API const SLInterfaceID SL_IID_BUFFERQUEUE;
136911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
137011cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct SLBufferQueueItf_;
137111cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef const struct SLBufferQueueItf_ * const * SLBufferQueueItf;
137211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
137311cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef void (SLAPIENTRY *slBufferQueueCallback)(
137411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLBufferQueueItf caller,
137511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	void *pContext
137611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert);
137711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
137811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/** Buffer queue state **/
137911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
138011cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef struct SLBufferQueueState_ {
138111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLuint32	count;
138211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLuint32	playIndex;
138311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert} SLBufferQueueState;
138411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
138511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
138611cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct SLBufferQueueItf_ {
138711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*Enqueue) (
138811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLBufferQueueItf self,
138911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		const void *pBuffer,
139011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLuint32 size
139111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
139211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*Clear) (
139311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLBufferQueueItf self
139411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
139511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*GetState) (
139611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLBufferQueueItf self,
139711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLBufferQueueState *pState
139811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
139911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*RegisterCallback) (
140011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLBufferQueueItf self,
140111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		slBufferQueueCallback callback,
140211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		void* pContext
140311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
140411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
140511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
140611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
140711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/*---------------------------------------------------------------------------*/
140811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* PresetReverb                                                              */
140911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/*---------------------------------------------------------------------------*/
141011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
141111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_REVERBPRESET_NONE		((SLuint16) 0x0000)
141211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_REVERBPRESET_SMALLROOM	((SLuint16) 0x0001)
141311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_REVERBPRESET_MEDIUMROOM	((SLuint16) 0x0002)
141411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_REVERBPRESET_LARGEROOM	((SLuint16) 0x0003)
141511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_REVERBPRESET_MEDIUMHALL	((SLuint16) 0x0004)
141611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_REVERBPRESET_LARGEHALL	((SLuint16) 0x0005)
141711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_REVERBPRESET_PLATE 		((SLuint16) 0x0006)
141811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
141911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
142011cd02dfb91661c65134cac258cf5924270e9d2Dan Albertextern SL_API const SLInterfaceID SL_IID_PRESETREVERB;
142111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
142211cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct SLPresetReverbItf_;
142311cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef const struct SLPresetReverbItf_ * const * SLPresetReverbItf;
142411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
142511cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct SLPresetReverbItf_ {
142611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*SetPreset) (
142711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLPresetReverbItf self,
142811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLuint16 preset
142911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
143011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*GetPreset) (
143111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLPresetReverbItf self,
143211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLuint16 *pPreset
143311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
143411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
143511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
143611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
143711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/*---------------------------------------------------------------------------*/
143811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* EnvironmentalReverb                                                       */
143911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/*---------------------------------------------------------------------------*/
144011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
144111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_I3DL2_ENVIRONMENT_PRESET_DEFAULT \
144211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	{ SL_MILLIBEL_MIN,    0,  1000,   500, SL_MILLIBEL_MIN,  20, SL_MILLIBEL_MIN,  40, 1000,1000 }
144311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_I3DL2_ENVIRONMENT_PRESET_GENERIC \
144411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	{ -1000, -100, 1490,  830, -2602,   7,   200,  11, 1000,1000 }
144511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_I3DL2_ENVIRONMENT_PRESET_PADDEDCELL \
144611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	{ -1000,-6000,  170,  100, -1204,   1,   207,   2, 1000,1000 }
144711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_I3DL2_ENVIRONMENT_PRESET_ROOM \
144811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	{ -1000, -454,  400,  830, -1646,   2,    53,   3, 1000,1000 }
144911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_I3DL2_ENVIRONMENT_PRESET_BATHROOM \
145011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	{ -1000,-1200, 1490,  540,  -370,   7,  1030,  11, 1000, 600 }
145111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_I3DL2_ENVIRONMENT_PRESET_LIVINGROOM \
145211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	{ -1000,-6000,  500,  100, -1376,   3, -1104,   4, 1000,1000 }
145311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_I3DL2_ENVIRONMENT_PRESET_STONEROOM \
145411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	{ -1000, -300, 2310,  640,  -711,  12,    83,  17, 1000,1000 }
145511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_I3DL2_ENVIRONMENT_PRESET_AUDITORIUM \
145611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	{ -1000, -476, 4320,  590,  -789,  20,  -289,  30, 1000,1000 }
145711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_I3DL2_ENVIRONMENT_PRESET_CONCERTHALL \
145811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	{ -1000, -500, 3920,  700, -1230,  20,    -2,  29, 1000,1000 }
145911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_I3DL2_ENVIRONMENT_PRESET_CAVE \
146011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	{ -1000,    0, 2910, 1300,  -602,  15,  -302,  22, 1000,1000 }
146111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_I3DL2_ENVIRONMENT_PRESET_ARENA \
146211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	{ -1000, -698, 7240,  330, -1166,  20,    16,  30, 1000,1000 }
146311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_I3DL2_ENVIRONMENT_PRESET_HANGAR \
146411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	{ -1000,-1000, 10050,  230,  -602,  20,   198,  30, 1000,1000 }
146511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_I3DL2_ENVIRONMENT_PRESET_CARPETEDHALLWAY \
146611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	{ -1000,-4000,  300,  100, -1831,   2, -1630,  30, 1000,1000 }
146711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_I3DL2_ENVIRONMENT_PRESET_HALLWAY \
146811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	{ -1000, -300, 1490,  590, -1219,   7,   441,  11, 1000,1000 }
146911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_I3DL2_ENVIRONMENT_PRESET_STONECORRIDOR \
147011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	{ -1000, -237, 2700,  790, -1214,  13,   395,  20, 1000,1000 }
147111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_I3DL2_ENVIRONMENT_PRESET_ALLEY \
147211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	{ -1000, -270, 1490,  860, -1204,   7,    -4,  11, 1000,1000 }
147311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_I3DL2_ENVIRONMENT_PRESET_FOREST \
147411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	{ -1000,-3300, 1490,  540, -2560, 162,  -613,  88,  790,1000 }
147511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_I3DL2_ENVIRONMENT_PRESET_CITY \
147611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	{ -1000, -800, 1490,  670, -2273,   7, -2217,  11,  500,1000 }
147711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_I3DL2_ENVIRONMENT_PRESET_MOUNTAINS \
147811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	{ -1000,-2500, 1490,  210, -2780, 300, -2014, 100,  270,1000 }
147911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_I3DL2_ENVIRONMENT_PRESET_QUARRY \
148011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	{ -1000,-1000, 1490,  830, SL_MILLIBEL_MIN,  61,   500,  25, 1000,1000 }
148111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_I3DL2_ENVIRONMENT_PRESET_PLAIN \
148211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	{ -1000,-2000, 1490,  500, -2466, 179, -2514, 100,  210,1000 }
148311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_I3DL2_ENVIRONMENT_PRESET_PARKINGLOT \
148411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	{ -1000,    0, 1650, 1500, -1363,   8, -1153,  12, 1000,1000 }
148511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_I3DL2_ENVIRONMENT_PRESET_SEWERPIPE \
148611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	{ -1000,-1000, 2810,  140,   429,  14,   648,  21,  800, 600 }
148711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_I3DL2_ENVIRONMENT_PRESET_UNDERWATER \
148811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	{ -1000,-4000, 1490,  100,  -449,   7,  1700,  11, 1000,1000 }
148911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_I3DL2_ENVIRONMENT_PRESET_SMALLROOM \
149011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	{ -1000,-600, 1100, 830, -400, 5, 500, 10, 1000, 1000 }
149111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_I3DL2_ENVIRONMENT_PRESET_MEDIUMROOM \
149211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	{ -1000,-600, 1300, 830, -1000, 20, -200, 20, 1000, 1000 }
149311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_I3DL2_ENVIRONMENT_PRESET_LARGEROOM \
149411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	{ -1000,-600, 1500, 830, -1600, 5, -1000, 40, 1000, 1000 }
149511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_I3DL2_ENVIRONMENT_PRESET_MEDIUMHALL \
149611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	{ -1000,-600, 1800, 700, -1300, 15, -800, 30, 1000, 1000 }
149711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_I3DL2_ENVIRONMENT_PRESET_LARGEHALL \
149811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	{ -1000,-600, 1800, 700, -2000, 30, -1400, 60, 1000, 1000 }
149911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_I3DL2_ENVIRONMENT_PRESET_PLATE \
150011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	{ -1000,-200, 1300, 900, 0, 2, 0, 10, 1000, 750 }
150111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
150211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
150311cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef struct SLEnvironmentalReverbSettings_ {
150411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLmillibel    roomLevel;
150511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLmillibel    roomHFLevel;
150611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLmillisecond decayTime;
150711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLpermille    decayHFRatio;
150811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLmillibel    reflectionsLevel;
150911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLmillisecond reflectionsDelay;
151011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLmillibel    reverbLevel;
151111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLmillisecond reverbDelay;
151211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLpermille    diffusion;
151311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLpermille    density;
151411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert} SLEnvironmentalReverbSettings;
151511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
151611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
151711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
151811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
151911cd02dfb91661c65134cac258cf5924270e9d2Dan Albertextern SL_API const SLInterfaceID SL_IID_ENVIRONMENTALREVERB;
152011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
152111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
152211cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct SLEnvironmentalReverbItf_;
152311cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef const struct SLEnvironmentalReverbItf_ * const * SLEnvironmentalReverbItf;
152411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
152511cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct SLEnvironmentalReverbItf_ {
152611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*SetRoomLevel) (
152711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLEnvironmentalReverbItf self,
152811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLmillibel room
152911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
153011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*GetRoomLevel) (
153111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLEnvironmentalReverbItf self,
153211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLmillibel *pRoom
153311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
153411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*SetRoomHFLevel) (
153511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLEnvironmentalReverbItf self,
153611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLmillibel roomHF
153711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
153811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*GetRoomHFLevel) (
153911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLEnvironmentalReverbItf self,
154011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLmillibel *pRoomHF
154111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
154211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*SetDecayTime) (
154311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLEnvironmentalReverbItf self,
154411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLmillisecond decayTime
154511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
154611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*GetDecayTime) (
154711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLEnvironmentalReverbItf self,
154811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLmillisecond *pDecayTime
154911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
155011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*SetDecayHFRatio) (
155111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLEnvironmentalReverbItf self,
155211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLpermille decayHFRatio
155311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
155411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*GetDecayHFRatio) (
155511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLEnvironmentalReverbItf self,
155611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLpermille *pDecayHFRatio
155711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
155811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*SetReflectionsLevel) (
155911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLEnvironmentalReverbItf self,
156011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLmillibel reflectionsLevel
156111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
156211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*GetReflectionsLevel) (
156311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLEnvironmentalReverbItf self,
156411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLmillibel *pReflectionsLevel
156511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
156611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*SetReflectionsDelay) (
156711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLEnvironmentalReverbItf self,
156811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLmillisecond reflectionsDelay
156911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
157011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*GetReflectionsDelay) (
157111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLEnvironmentalReverbItf self,
157211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLmillisecond *pReflectionsDelay
157311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
157411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*SetReverbLevel) (
157511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLEnvironmentalReverbItf self,
157611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLmillibel reverbLevel
157711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
157811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*GetReverbLevel) (
157911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLEnvironmentalReverbItf self,
158011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLmillibel *pReverbLevel
158111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
158211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*SetReverbDelay) (
158311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLEnvironmentalReverbItf self,
158411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLmillisecond reverbDelay
158511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
158611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*GetReverbDelay) (
158711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLEnvironmentalReverbItf self,
158811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLmillisecond *pReverbDelay
158911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
159011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*SetDiffusion) (
159111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLEnvironmentalReverbItf self,
159211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLpermille diffusion
159311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
159411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*GetDiffusion) (
159511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLEnvironmentalReverbItf self,
159611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLpermille *pDiffusion
159711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
159811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*SetDensity) (
159911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLEnvironmentalReverbItf self,
160011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLpermille density
160111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
160211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*GetDensity) (
160311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLEnvironmentalReverbItf self,
160411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLpermille *pDensity
160511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
160611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*SetEnvironmentalReverbProperties) (
160711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLEnvironmentalReverbItf self,
160811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		const SLEnvironmentalReverbSettings *pProperties
160911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
161011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*GetEnvironmentalReverbProperties) (
161111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLEnvironmentalReverbItf self,
161211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLEnvironmentalReverbSettings *pProperties
161311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
161411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
161511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
161611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/*---------------------------------------------------------------------------*/
161711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* Effects Send Interface                                                    */
161811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/*---------------------------------------------------------------------------*/
161911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
162011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
162111cd02dfb91661c65134cac258cf5924270e9d2Dan Albertextern SL_API const SLInterfaceID SL_IID_EFFECTSEND;
162211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
162311cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct SLEffectSendItf_;
162411cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef const struct SLEffectSendItf_ * const * SLEffectSendItf;
162511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
162611cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct SLEffectSendItf_ {
162711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*EnableEffectSend) (
162811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLEffectSendItf self,
162911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		const void *pAuxEffect,
163011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLboolean enable,
163111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLmillibel initialLevel
163211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
163311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*IsEnabled) (
163411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLEffectSendItf self,
163511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		const void * pAuxEffect,
163611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLboolean *pEnable
163711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
163811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*SetDirectLevel) (
163911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLEffectSendItf self,
164011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLmillibel directLevel
164111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
164211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*GetDirectLevel) (
164311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLEffectSendItf self,
164411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLmillibel *pDirectLevel
164511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
164611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*SetSendLevel) (
164711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLEffectSendItf self,
164811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		const void *pAuxEffect,
164911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLmillibel sendLevel
165011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
165111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*GetSendLevel)(
165211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLEffectSendItf self,
165311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		const void *pAuxEffect,
165411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLmillibel *pSendLevel
165511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
165611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
165711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
165811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
165911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/*---------------------------------------------------------------------------*/
166011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* 3D Grouping Interface                                                     */
166111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/*---------------------------------------------------------------------------*/
166211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
166311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
166411cd02dfb91661c65134cac258cf5924270e9d2Dan Albertextern SL_API const SLInterfaceID SL_IID_3DGROUPING;
166511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
166611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
166711cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct SL3DGroupingItf_ ;
166811cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef const struct SL3DGroupingItf_ * const * SL3DGroupingItf;
166911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
167011cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct SL3DGroupingItf_ {
167111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*Set3DGroup) (
167211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SL3DGroupingItf self,
167311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLObjectItf group
167411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
167511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*Get3DGroup) (
167611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SL3DGroupingItf self,
167711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLObjectItf *pGroup
167811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
167911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
168011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
168111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
168211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/*---------------------------------------------------------------------------*/
168311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* 3D Commit Interface                                                       */
168411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/*---------------------------------------------------------------------------*/
168511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
168611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
168711cd02dfb91661c65134cac258cf5924270e9d2Dan Albertextern SL_API const SLInterfaceID SL_IID_3DCOMMIT;
168811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
168911cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct SL3DCommitItf_;
169011cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef const struct SL3DCommitItf_* const * SL3DCommitItf;
169111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
169211cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct SL3DCommitItf_ {
169311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*Commit) (
169411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SL3DCommitItf self
169511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
169611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*SetDeferred) (
169711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SL3DCommitItf self,
169811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLboolean deferred
169911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
170011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
170111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
170211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
170311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/*---------------------------------------------------------------------------*/
170411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* 3D Location Interface                                                     */
170511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/*---------------------------------------------------------------------------*/
170611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
170711cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef struct SLVec3D_ {
170811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLint32	x;
170911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLint32	y;
171011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLint32	z;
171111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert} SLVec3D;
171211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
171311cd02dfb91661c65134cac258cf5924270e9d2Dan Albertextern SL_API const SLInterfaceID SL_IID_3DLOCATION;
171411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
171511cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct SL3DLocationItf_;
171611cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef const struct SL3DLocationItf_ * const * SL3DLocationItf;
171711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
171811cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct SL3DLocationItf_ {
171911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*SetLocationCartesian) (
172011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SL3DLocationItf self,
172111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		const SLVec3D *pLocation
172211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
172311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*SetLocationSpherical) (
172411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SL3DLocationItf self,
172511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLmillidegree azimuth,
172611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLmillidegree elevation,
172711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLmillimeter distance
172811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
172911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*Move) (
173011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SL3DLocationItf self,
173111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		const SLVec3D *pMovement
173211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
173311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*GetLocationCartesian) (
173411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SL3DLocationItf self,
173511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLVec3D *pLocation
173611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
173711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*SetOrientationVectors) (
173811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SL3DLocationItf self,
173911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		const SLVec3D *pFront,
174011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		const SLVec3D *pAbove
174111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
174211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*SetOrientationAngles) (
174311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SL3DLocationItf self,
174411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLmillidegree heading,
174511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLmillidegree pitch,
174611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLmillidegree roll
174711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
174811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*Rotate) (
174911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SL3DLocationItf self,
175011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLmillidegree theta,
175111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		const SLVec3D *pAxis
175211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
175311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*GetOrientationVectors) (
175411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SL3DLocationItf self,
175511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLVec3D *pFront,
175611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLVec3D *pUp
175711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
175811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
175911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
176011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
176111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/*---------------------------------------------------------------------------*/
176211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* 3D Doppler Interface                                                      */
176311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/*---------------------------------------------------------------------------*/
176411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
176511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
176611cd02dfb91661c65134cac258cf5924270e9d2Dan Albertextern SL_API const SLInterfaceID SL_IID_3DDOPPLER;
176711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
176811cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct SL3DDopplerItf_;
176911cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef const struct SL3DDopplerItf_ * const * SL3DDopplerItf;
177011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
177111cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct SL3DDopplerItf_ {
177211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*SetVelocityCartesian) (
177311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SL3DDopplerItf self,
177411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		const SLVec3D *pVelocity
177511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
177611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*SetVelocitySpherical) (
177711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SL3DDopplerItf self,
177811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLmillidegree azimuth,
177911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLmillidegree elevation,
178011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLmillimeter speed
178111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
178211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*GetVelocityCartesian) (
178311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SL3DDopplerItf self,
178411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLVec3D *pVelocity
178511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
178611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*SetDopplerFactor) (
178711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SL3DDopplerItf self,
178811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLpermille dopplerFactor
178911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
179011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*GetDopplerFactor) (
179111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SL3DDopplerItf self,
179211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLpermille *pDopplerFactor
179311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
179411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
179511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
179611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/*---------------------------------------------------------------------------*/
179711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* 3D Source Interface and associated defines                                */
179811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* --------------------------------------------------------------------------*/
179911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
180011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_ROLLOFFMODEL_EXPONENTIAL	((SLuint32) 0x00000000)
180111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_ROLLOFFMODEL_LINEAR		((SLuint32) 0x00000001)
180211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
180311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
180411cd02dfb91661c65134cac258cf5924270e9d2Dan Albertextern SL_API const SLInterfaceID SL_IID_3DSOURCE;
180511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
180611cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct SL3DSourceItf_;
180711cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef const struct SL3DSourceItf_ * const * SL3DSourceItf;
180811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
180911cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct SL3DSourceItf_ {
181011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*SetHeadRelative) (
181111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SL3DSourceItf self,
181211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLboolean headRelative
181311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
181411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*GetHeadRelative) (
181511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SL3DSourceItf self,
181611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLboolean *pHeadRelative
181711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
181811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*SetRolloffDistances) (
181911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SL3DSourceItf self,
182011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLmillimeter minDistance,
182111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLmillimeter maxDistance
182211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
182311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*GetRolloffDistances) (
182411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SL3DSourceItf self,
182511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLmillimeter *pMinDistance,
182611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLmillimeter *pMaxDistance
182711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
182811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*SetRolloffMaxDistanceMute) (
182911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SL3DSourceItf self,
183011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLboolean mute
183111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
183211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*GetRolloffMaxDistanceMute) (
183311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SL3DSourceItf self,
183411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLboolean *pMute
183511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
183611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*SetRolloffFactor) (
183711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SL3DSourceItf self,
183811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLpermille rolloffFactor
183911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
184011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*GetRolloffFactor) (
184111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SL3DSourceItf self,
184211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLpermille *pRolloffFactor
184311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
184411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*SetRoomRolloffFactor) (
184511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SL3DSourceItf self,
184611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLpermille roomRolloffFactor
184711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
184811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*GetRoomRolloffFactor) (
184911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SL3DSourceItf self,
185011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLpermille *pRoomRolloffFactor
185111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
185211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*SetRolloffModel) (
185311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SL3DSourceItf self,
185411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLuint8 model
185511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
185611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*GetRolloffModel) (
185711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SL3DSourceItf self,
185811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLuint8 *pModel
185911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
186011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*SetCone) (
186111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SL3DSourceItf self,
186211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLmillidegree innerAngle,
186311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLmillidegree outerAngle,
186411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLmillibel outerLevel
186511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
186611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*GetCone) (
186711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SL3DSourceItf self,
186811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLmillidegree *pInnerAngle,
186911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLmillidegree *pOuterAngle,
187011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLmillibel *pOuterLevel
187111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
187211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
187311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
187411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/*---------------------------------------------------------------------------*/
187511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* 3D Macroscopic Interface                                                  */
187611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* --------------------------------------------------------------------------*/
187711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
187811cd02dfb91661c65134cac258cf5924270e9d2Dan Albertextern SL_API const SLInterfaceID SL_IID_3DMACROSCOPIC;
187911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
188011cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct SL3DMacroscopicItf_;
188111cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef const struct SL3DMacroscopicItf_ * const * SL3DMacroscopicItf;
188211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
188311cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct SL3DMacroscopicItf_ {
188411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*SetSize) (
188511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SL3DMacroscopicItf self,
188611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLmillimeter width,
188711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLmillimeter height,
188811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLmillimeter depth
188911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
189011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*GetSize) (
189111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SL3DMacroscopicItf self,
189211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLmillimeter *pWidth,
189311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLmillimeter *pHeight,
189411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLmillimeter *pDepth
189511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
189611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*SetOrientationAngles) (
189711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SL3DMacroscopicItf self,
189811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLmillidegree heading,
189911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLmillidegree pitch,
190011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLmillidegree roll
190111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
190211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*SetOrientationVectors) (
190311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SL3DMacroscopicItf self,
190411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		const SLVec3D *pFront,
190511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		const SLVec3D *pAbove
190611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
190711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*Rotate) (
190811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SL3DMacroscopicItf self,
190911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLmillidegree theta,
191011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		const SLVec3D *pAxis
191111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
191211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*GetOrientationVectors) (
191311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SL3DMacroscopicItf self,
191411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLVec3D *pFront,
191511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLVec3D *pUp
191611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
191711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
191811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
191911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/*---------------------------------------------------------------------------*/
192011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* Mute Solo Interface                                                       */
192111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* --------------------------------------------------------------------------*/
192211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
192311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
192411cd02dfb91661c65134cac258cf5924270e9d2Dan Albertextern SL_API const SLInterfaceID SL_IID_MUTESOLO;
192511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
192611cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct SLMuteSoloItf_;
192711cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef const struct SLMuteSoloItf_ * const * SLMuteSoloItf;
192811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
192911cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct SLMuteSoloItf_ {
193011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*SetChannelMute) (
193111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLMuteSoloItf self,
193211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLuint8 chan,
193311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLboolean mute
193411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
193511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*GetChannelMute) (
193611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLMuteSoloItf self,
193711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLuint8 chan,
193811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLboolean *pMute
193911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
194011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*SetChannelSolo) (
194111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLMuteSoloItf self,
194211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLuint8 chan,
194311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLboolean solo
194411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
194511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*GetChannelSolo) (
194611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLMuteSoloItf self,
194711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLuint8 chan,
194811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLboolean *pSolo
194911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
195011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*GetNumChannels) (
195111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLMuteSoloItf self,
195211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLuint8 *pNumChannels
195311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
195411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
195511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
195611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
195711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/*---------------------------------------------------------------------------*/
195811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* Dynamic Interface Management Interface and associated types and macros    */
195911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* --------------------------------------------------------------------------*/
196011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
196111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_DYNAMIC_ITF_EVENT_RUNTIME_ERROR			((SLuint32) 0x00000001)
196211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_DYNAMIC_ITF_EVENT_ASYNC_TERMINATION		((SLuint32) 0x00000002)
196311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_DYNAMIC_ITF_EVENT_RESOURCES_LOST			((SLuint32) 0x00000003)
196411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_DYNAMIC_ITF_EVENT_RESOURCES_LOST_PERMANENTLY	((SLuint32) 0x00000004)
196511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_DYNAMIC_ITF_EVENT_RESOURCES_AVAILABLE		((SLuint32) 0x00000005)
196611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
196711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
196811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
196911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
197011cd02dfb91661c65134cac258cf5924270e9d2Dan Albertextern SL_API const SLInterfaceID SL_IID_DYNAMICINTERFACEMANAGEMENT;
197111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
197211cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct SLDynamicInterfaceManagementItf_;
197311cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef const struct SLDynamicInterfaceManagementItf_ * const * SLDynamicInterfaceManagementItf;
197411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
197511cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef void (SLAPIENTRY *slDynamicInterfaceManagementCallback) (
197611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLDynamicInterfaceManagementItf caller,
197711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	void * pContext,
197811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLuint32 event,
197911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult result,
198011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    const SLInterfaceID iid
198111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert);
198211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
198311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
198411cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct SLDynamicInterfaceManagementItf_ {
198511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*AddInterface) (
198611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLDynamicInterfaceManagementItf self,
198711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		const SLInterfaceID iid,
198811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLboolean async
198911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
199011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*RemoveInterface) (
199111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLDynamicInterfaceManagementItf self,
199211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		const SLInterfaceID iid
199311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
199411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*ResumeInterface) (
199511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLDynamicInterfaceManagementItf self,
199611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		const SLInterfaceID iid,
199711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLboolean async
199811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
199911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*RegisterCallback) (
200011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLDynamicInterfaceManagementItf self,
200111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		slDynamicInterfaceManagementCallback callback,
200211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		void * pContext
200311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
200411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
200511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
200611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/*---------------------------------------------------------------------------*/
200711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* Midi Message Interface and associated types                               */
200811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* --------------------------------------------------------------------------*/
200911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
201011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_MIDIMESSAGETYPE_NOTE_ON_OFF		((SLuint32) 0x00000001)
201111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_MIDIMESSAGETYPE_POLY_PRESSURE	((SLuint32) 0x00000002)
201211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_MIDIMESSAGETYPE_CONTROL_CHANGE	((SLuint32) 0x00000003)
201311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_MIDIMESSAGETYPE_PROGRAM_CHANGE	((SLuint32) 0x00000004)
201411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_MIDIMESSAGETYPE_CHANNEL_PRESSURE	((SLuint32) 0x00000005)
201511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_MIDIMESSAGETYPE_PITCH_BEND		((SLuint32) 0x00000006)
201611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_MIDIMESSAGETYPE_SYSTEM_MESSAGE	((SLuint32) 0x00000007)
201711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
201811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
201911cd02dfb91661c65134cac258cf5924270e9d2Dan Albertextern SL_API const SLInterfaceID SL_IID_MIDIMESSAGE;
202011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
202111cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct SLMIDIMessageItf_;
202211cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef const struct SLMIDIMessageItf_ * const * SLMIDIMessageItf;
202311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
202411cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef void (SLAPIENTRY *slMetaEventCallback) (
202511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLMIDIMessageItf caller,
202611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	void *pContext,
202711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLuint8 type,
202811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    SLuint32 length,
202911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	const SLuint8 *pData,
203011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLuint32 tick,
203111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLuint16 track
203211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert);
203311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
203411cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef void (SLAPIENTRY *slMIDIMessageCallback) (
203511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLMIDIMessageItf caller,
203611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	void *pContext,
203711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLuint8 statusByte,
203811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLuint32 length,
203911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	const SLuint8 *pData,
204011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLuint32 tick,
204111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLuint16 track
204211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert);
204311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
204411cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct SLMIDIMessageItf_ {
204511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*SendMessage) (
204611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLMIDIMessageItf self,
204711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		const SLuint8 *data,
204811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLuint32 length
204911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
205011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*RegisterMetaEventCallback) (
205111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLMIDIMessageItf self,
205211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		slMetaEventCallback callback,
205311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		void *pContext
205411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
205511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*RegisterMIDIMessageCallback) (
205611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLMIDIMessageItf self,
205711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		slMIDIMessageCallback callback,
205811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		void *pContext
205911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
206011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*AddMIDIMessageCallbackFilter) (
206111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLMIDIMessageItf self,
206211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLuint32 messageType
206311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
206411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*ClearMIDIMessageCallbackFilter) (
206511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLMIDIMessageItf self
206611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
206711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
206811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
206911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
207011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/*---------------------------------------------------------------------------*/
207111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* Midi Mute Solo interface                                                  */
207211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* --------------------------------------------------------------------------*/
207311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
207411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
207511cd02dfb91661c65134cac258cf5924270e9d2Dan Albertextern SL_API const SLInterfaceID SL_IID_MIDIMUTESOLO;
207611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
207711cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct SLMIDIMuteSoloItf_;
207811cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef const struct SLMIDIMuteSoloItf_ * const * SLMIDIMuteSoloItf;
207911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
208011cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct SLMIDIMuteSoloItf_ {
208111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*SetChannelMute) (
208211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLMIDIMuteSoloItf self,
208311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLuint8 channel,
208411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLboolean mute
208511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
208611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*GetChannelMute) (
208711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLMIDIMuteSoloItf self,
208811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLuint8 channel,
208911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLboolean *pMute
209011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
209111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*SetChannelSolo) (
209211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLMIDIMuteSoloItf self,
209311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLuint8 channel,
209411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLboolean solo
209511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
209611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*GetChannelSolo) (
209711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLMIDIMuteSoloItf self,
209811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLuint8 channel,
209911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLboolean *pSolo
210011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
210111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*GetTrackCount) (
210211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLMIDIMuteSoloItf self,
210311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLuint16 *pCount
210411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
210511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*SetTrackMute) (
210611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLMIDIMuteSoloItf self,
210711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLuint16 track,
210811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLboolean mute
210911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
211011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*GetTrackMute) (
211111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLMIDIMuteSoloItf self,
211211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLuint16 track,
211311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLboolean *pMute
211411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
211511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*SetTrackSolo) (
211611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLMIDIMuteSoloItf self,
211711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLuint16 track,
211811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLboolean solo
211911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
212011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*GetTrackSolo) (
212111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLMIDIMuteSoloItf self,
212211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLuint16 track,
212311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLboolean *pSolo
212411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
212511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
212611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
212711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
212811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/*---------------------------------------------------------------------------*/
212911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* Midi Tempo interface                                                      */
213011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* --------------------------------------------------------------------------*/
213111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
213211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
213311cd02dfb91661c65134cac258cf5924270e9d2Dan Albertextern SL_API const SLInterfaceID SL_IID_MIDITEMPO;
213411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
213511cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct SLMIDITempoItf_;
213611cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef const struct SLMIDITempoItf_ * const * SLMIDITempoItf;
213711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
213811cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct SLMIDITempoItf_ {
213911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*SetTicksPerQuarterNote) (
214011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLMIDITempoItf self,
214111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLuint32 tpqn
214211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
214311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*GetTicksPerQuarterNote) (
214411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLMIDITempoItf self,
214511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLuint32 *pTpqn
214611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
214711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*SetMicrosecondsPerQuarterNote) (
214811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLMIDITempoItf self,
214911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLmicrosecond uspqn
215011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
215111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*GetMicrosecondsPerQuarterNote) (
215211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLMIDITempoItf self,
215311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLmicrosecond *uspqn
215411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
215511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
215611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
215711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
215811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/*---------------------------------------------------------------------------*/
215911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* Midi Time interface                                                       */
216011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* --------------------------------------------------------------------------*/
216111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
216211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
216311cd02dfb91661c65134cac258cf5924270e9d2Dan Albertextern SL_API const SLInterfaceID SL_IID_MIDITIME;
216411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
216511cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct SLMIDITimeItf_;
216611cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef const struct SLMIDITimeItf_ * const * SLMIDITimeItf;
216711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
216811cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct SLMIDITimeItf_ {
216911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*GetDuration) (
217011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLMIDITimeItf self,
217111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLuint32 *pDuration
217211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
217311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*SetPosition) (
217411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLMIDITimeItf self,
217511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLuint32 position
217611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
217711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*GetPosition) (
217811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLMIDITimeItf self,
217911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLuint32 *pPosition
218011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
218111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*SetLoopPoints) (
218211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLMIDITimeItf self,
218311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLuint32 startTick,
218411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLuint32 numTicks
218511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
218611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*GetLoopPoints) (
218711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLMIDITimeItf self,
218811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLuint32 *pStartTick,
218911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLuint32 *pNumTicks
219011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
219111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
219211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
219311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
219411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/*---------------------------------------------------------------------------*/
219511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* Audio Decoder Capabilities Interface                                      */
219611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* --------------------------------------------------------------------------*/
219711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
219811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/*Audio Codec related defines*/
219911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
220011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_RATECONTROLMODE_CONSTANTBITRATE	((SLuint32) 0x00000001)
220111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_RATECONTROLMODE_VARIABLEBITRATE	((SLuint32) 0x00000002)
220211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
220311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_AUDIOCODEC_PCM         ((SLuint32) 0x00000001)
220411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_AUDIOCODEC_MP3         ((SLuint32) 0x00000002)
220511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_AUDIOCODEC_AMR         ((SLuint32) 0x00000003)
220611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_AUDIOCODEC_AMRWB       ((SLuint32) 0x00000004)
220711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_AUDIOCODEC_AMRWBPLUS   ((SLuint32) 0x00000005)
220811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_AUDIOCODEC_AAC         ((SLuint32) 0x00000006)
220911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_AUDIOCODEC_WMA         ((SLuint32) 0x00000007)
221011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_AUDIOCODEC_REAL        ((SLuint32) 0x00000008)
221111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
221211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_AUDIOPROFILE_PCM                   ((SLuint32) 0x00000001)
221311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
221411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_AUDIOPROFILE_MPEG1_L3              ((SLuint32) 0x00000001)
221511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_AUDIOPROFILE_MPEG2_L3              ((SLuint32) 0x00000002)
221611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_AUDIOPROFILE_MPEG25_L3             ((SLuint32) 0x00000003)
221711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
221811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_AUDIOCHANMODE_MP3_MONO             ((SLuint32) 0x00000001)
221911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_AUDIOCHANMODE_MP3_STEREO           ((SLuint32) 0x00000002)
222011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_AUDIOCHANMODE_MP3_JOINTSTEREO      ((SLuint32) 0x00000003)
222111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_AUDIOCHANMODE_MP3_DUAL             ((SLuint32) 0x00000004)
222211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
222311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_AUDIOPROFILE_AMR			((SLuint32) 0x00000001)
222411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
222511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_AUDIOSTREAMFORMAT_CONFORMANCE	((SLuint32) 0x00000001)
222611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_AUDIOSTREAMFORMAT_IF1			((SLuint32) 0x00000002)
222711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_AUDIOSTREAMFORMAT_IF2			((SLuint32) 0x00000003)
222811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_AUDIOSTREAMFORMAT_FSF			((SLuint32) 0x00000004)
222911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_AUDIOSTREAMFORMAT_RTPPAYLOAD	((SLuint32) 0x00000005)
223011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_AUDIOSTREAMFORMAT_ITU			((SLuint32) 0x00000006)
223111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
223211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_AUDIOPROFILE_AMRWB			((SLuint32) 0x00000001)
223311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
223411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_AUDIOPROFILE_AMRWBPLUS		((SLuint32) 0x00000001)
223511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
223611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_AUDIOPROFILE_AAC_AAC			((SLuint32) 0x00000001)
223711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
223811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_AUDIOMODE_AAC_MAIN			((SLuint32) 0x00000001)
223911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_AUDIOMODE_AAC_LC			((SLuint32) 0x00000002)
224011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_AUDIOMODE_AAC_SSR			((SLuint32) 0x00000003)
224111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_AUDIOMODE_AAC_LTP			((SLuint32) 0x00000004)
224211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_AUDIOMODE_AAC_HE			((SLuint32) 0x00000005)
224311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_AUDIOMODE_AAC_SCALABLE		((SLuint32) 0x00000006)
224411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_AUDIOMODE_AAC_ERLC			((SLuint32) 0x00000007)
224511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_AUDIOMODE_AAC_LD			((SLuint32) 0x00000008)
224611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_AUDIOMODE_AAC_HE_PS			((SLuint32) 0x00000009)
224711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_AUDIOMODE_AAC_HE_MPS			((SLuint32) 0x0000000A)
224811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
224911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_AUDIOSTREAMFORMAT_MP2ADTS		((SLuint32) 0x00000001)
225011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_AUDIOSTREAMFORMAT_MP4ADTS		((SLuint32) 0x00000002)
225111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_AUDIOSTREAMFORMAT_MP4LOAS		((SLuint32) 0x00000003)
225211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_AUDIOSTREAMFORMAT_MP4LATM		((SLuint32) 0x00000004)
225311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_AUDIOSTREAMFORMAT_ADIF		((SLuint32) 0x00000005)
225411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_AUDIOSTREAMFORMAT_MP4FF		((SLuint32) 0x00000006)
225511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_AUDIOSTREAMFORMAT_RAW			((SLuint32) 0x00000007)
225611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
225711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_AUDIOPROFILE_WMA7		((SLuint32) 0x00000001)
225811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_AUDIOPROFILE_WMA8		((SLuint32) 0x00000002)
225911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_AUDIOPROFILE_WMA9		((SLuint32) 0x00000003)
226011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_AUDIOPROFILE_WMA10		((SLuint32) 0x00000004)
226111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
226211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_AUDIOMODE_WMA_LEVEL1		((SLuint32) 0x00000001)
226311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_AUDIOMODE_WMA_LEVEL2		((SLuint32) 0x00000002)
226411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_AUDIOMODE_WMA_LEVEL3		((SLuint32) 0x00000003)
226511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_AUDIOMODE_WMA_LEVEL4		((SLuint32) 0x00000004)
226611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_AUDIOMODE_WMAPRO_LEVELM0	((SLuint32) 0x00000005)
226711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_AUDIOMODE_WMAPRO_LEVELM1	((SLuint32) 0x00000006)
226811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_AUDIOMODE_WMAPRO_LEVELM2	((SLuint32) 0x00000007)
226911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_AUDIOMODE_WMAPRO_LEVELM3	((SLuint32) 0x00000008)
227011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
227111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_AUDIOPROFILE_REALAUDIO		((SLuint32) 0x00000001)
227211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
227311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_AUDIOMODE_REALAUDIO_G2		((SLuint32) 0x00000001)
227411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_AUDIOMODE_REALAUDIO_8			((SLuint32) 0x00000002)
227511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_AUDIOMODE_REALAUDIO_10		((SLuint32) 0x00000003)
227611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_AUDIOMODE_REALAUDIO_SURROUND	((SLuint32) 0x00000004)
227711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
227811cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef struct SLAudioCodecDescriptor_ {
227911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    SLuint32      maxChannels;
228011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    SLuint32      minBitsPerSample;
228111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    SLuint32      maxBitsPerSample;
228211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    SLmilliHertz  minSampleRate;
228311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    SLmilliHertz  maxSampleRate;
228411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    SLboolean     isFreqRangeContinuous;
228511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    SLmilliHertz *pSampleRatesSupported;
228611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    SLuint32      numSampleRatesSupported;
228711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    SLuint32      minBitRate;
228811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    SLuint32      maxBitRate;
228911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    SLboolean     isBitrateRangeContinuous;
229011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    SLuint32     *pBitratesSupported;
229111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    SLuint32      numBitratesSupported;
229211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    SLuint32	  profileSetting;
229311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    SLuint32      modeSetting;
229411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert} SLAudioCodecDescriptor;
229511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
229611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/*Structure used to retrieve the profile and level settings supported by an audio encoder */
229711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
229811cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef struct SLAudioCodecProfileMode_ {
229911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    SLuint32 profileSetting;
230011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    SLuint32 modeSetting;
230111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert} SLAudioCodecProfileMode;
230211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
230311cd02dfb91661c65134cac258cf5924270e9d2Dan Albertextern SL_API const SLInterfaceID SL_IID_AUDIODECODERCAPABILITIES;
230411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
230511cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct SLAudioDecoderCapabilitiesItf_;
230611cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef const struct SLAudioDecoderCapabilitiesItf_ * const * SLAudioDecoderCapabilitiesItf;
230711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
230811cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct SLAudioDecoderCapabilitiesItf_ {
230911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    SLresult (*GetAudioDecoders) (
231011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        SLAudioDecoderCapabilitiesItf self,
231111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        SLuint32 * pNumDecoders ,
231211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        SLuint32 *pDecoderIds
231311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
231411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    SLresult (*GetAudioDecoderCapabilities) (
231511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        SLAudioDecoderCapabilitiesItf self,
231611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        SLuint32 decoderId,
231711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        SLuint32 *pIndex,
231811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        SLAudioCodecDescriptor *pDescriptor
231911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
232011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
232111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
232211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
232311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
232411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
232511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/*---------------------------------------------------------------------------*/
232611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* Audio Encoder Capabilities Interface                                      */
232711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* --------------------------------------------------------------------------*/
232811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
232911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* Structure used when setting audio encoding parameters */
233011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
233111cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef struct SLAudioEncoderSettings_ {
233211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    SLuint32 encoderId;
233311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    SLuint32 channelsIn;
233411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    SLuint32 channelsOut;
233511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    SLmilliHertz sampleRate;
233611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    SLuint32 bitRate;
233711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    SLuint32 bitsPerSample;
233811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    SLuint32 rateControl;
233911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    SLuint32 profileSetting;
234011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    SLuint32 levelSetting;
234111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    SLuint32 channelMode;
234211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    SLuint32 streamFormat;
234311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    SLuint32 encodeOptions;
234411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    SLuint32 blockAlignment;
234511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert} SLAudioEncoderSettings;
234611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
234711cd02dfb91661c65134cac258cf5924270e9d2Dan Albertextern SL_API const SLInterfaceID SL_IID_AUDIOENCODERCAPABILITIES;
234811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
234911cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct SLAudioEncoderCapabilitiesItf_;
235011cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef const struct SLAudioEncoderCapabilitiesItf_ * const * SLAudioEncoderCapabilitiesItf;
235111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
235211cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct SLAudioEncoderCapabilitiesItf_ {
235311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    SLresult (*GetAudioEncoders) (
235411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        SLAudioEncoderCapabilitiesItf self,
235511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        SLuint32 *pNumEncoders ,
235611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        SLuint32 *pEncoderIds
235711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
235811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    SLresult (*GetAudioEncoderCapabilities) (
235911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        SLAudioEncoderCapabilitiesItf self,
236011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        SLuint32 encoderId,
236111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        SLuint32 *pIndex,
236211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        SLAudioCodecDescriptor * pDescriptor
236311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
236411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
236511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
236611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
236711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/*---------------------------------------------------------------------------*/
236811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* Audio Encoder Interface                                                   */
236911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* --------------------------------------------------------------------------*/
237011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
237111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
237211cd02dfb91661c65134cac258cf5924270e9d2Dan Albertextern SL_API const SLInterfaceID SL_IID_AUDIOENCODER;
237311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
237411cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct SLAudioEncoderItf_;
237511cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef const struct SLAudioEncoderItf_ * const * SLAudioEncoderItf;
237611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
237711cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct SLAudioEncoderItf_ {
237811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    SLresult (*SetEncoderSettings) (
237911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        SLAudioEncoderItf		self,
238011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        SLAudioEncoderSettings 	*pSettings
238111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
238211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    SLresult (*GetEncoderSettings) (
238311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        SLAudioEncoderItf		self,
238411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        SLAudioEncoderSettings	*pSettings
238511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
238611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
238711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
238811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
238911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/*---------------------------------------------------------------------------*/
239011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* Bass Boost Interface                                                      */
239111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* --------------------------------------------------------------------------*/
239211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
239311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
239411cd02dfb91661c65134cac258cf5924270e9d2Dan Albertextern SL_API const SLInterfaceID SL_IID_BASSBOOST;
239511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
239611cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct SLBassBoostItf_;
239711cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef const struct SLBassBoostItf_ * const * SLBassBoostItf;
239811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
239911cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct SLBassBoostItf_ {
240011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*SetEnabled)(
240111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLBassBoostItf self,
240211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLboolean enabled
240311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
240411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*IsEnabled)(
240511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLBassBoostItf self,
240611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLboolean *pEnabled
240711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
240811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*SetStrength)(
240911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLBassBoostItf self,
241011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLpermille strength
241111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
241211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*GetRoundedStrength)(
241311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLBassBoostItf self,
241411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLpermille *pStrength
241511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
241611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*IsStrengthSupported)(
241711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLBassBoostItf self,
241811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLboolean *pSupported
241911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
242011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
242111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
242211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/*---------------------------------------------------------------------------*/
242311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* Pitch Interface                                                           */
242411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* --------------------------------------------------------------------------*/
242511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
242611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
242711cd02dfb91661c65134cac258cf5924270e9d2Dan Albertextern SL_API const SLInterfaceID SL_IID_PITCH;
242811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
242911cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct SLPitchItf_;
243011cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef const struct SLPitchItf_ * const * SLPitchItf;
243111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
243211cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct SLPitchItf_ {
243311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*SetPitch) (
243411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLPitchItf self,
243511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLpermille pitch
243611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
243711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*GetPitch) (
243811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLPitchItf self,
243911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLpermille *pPitch
244011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
244111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*GetPitchCapabilities) (
244211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLPitchItf self,
244311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLpermille *pMinPitch,
244411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLpermille *pMaxPitch
244511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
244611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
244711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
244811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
244911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/*---------------------------------------------------------------------------*/
245011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* Rate Pitch Interface                                                      */
245111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* RatePitchItf is an interface for controlling the rate a sound is played   */
245211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* back. A change in rate will cause a change in pitch.                      */
245311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* --------------------------------------------------------------------------*/
245411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
245511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
245611cd02dfb91661c65134cac258cf5924270e9d2Dan Albertextern SL_API const SLInterfaceID SL_IID_RATEPITCH;
245711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
245811cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct SLRatePitchItf_;
245911cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef const struct SLRatePitchItf_ * const * SLRatePitchItf;
246011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
246111cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct SLRatePitchItf_ {
246211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*SetRate) (
246311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLRatePitchItf self,
246411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLpermille rate
246511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
246611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*GetRate) (
246711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLRatePitchItf self,
246811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLpermille *pRate
246911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
247011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*GetRatePitchCapabilities) (
247111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLRatePitchItf self,
247211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLpermille *pMinRate,
247311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLpermille *pMaxRate
247411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
247511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
247611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
247711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
247811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/*---------------------------------------------------------------------------*/
247911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* Virtualizer Interface                                                      */
248011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* --------------------------------------------------------------------------*/
248111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
248211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
248311cd02dfb91661c65134cac258cf5924270e9d2Dan Albertextern SL_API const SLInterfaceID SL_IID_VIRTUALIZER;
248411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
248511cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct SLVirtualizerItf_;
248611cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef const struct SLVirtualizerItf_ * const * SLVirtualizerItf;
248711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
248811cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct SLVirtualizerItf_ {
248911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*SetEnabled)(
249011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLVirtualizerItf self,
249111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLboolean enabled
249211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
249311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*IsEnabled)(
249411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLVirtualizerItf self,
249511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLboolean *pEnabled
249611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
249711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*SetStrength)(
249811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLVirtualizerItf self,
249911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLpermille strength
250011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
250111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*GetRoundedStrength)(
250211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLVirtualizerItf self,
250311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLpermille *pStrength
250411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
250511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*IsStrengthSupported)(
250611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLVirtualizerItf self,
250711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLboolean *pSupported
250811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
250911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
251011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
251111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/*---------------------------------------------------------------------------*/
251211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* Visualization Interface                                                   */
251311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* --------------------------------------------------------------------------*/
251411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
251511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
251611cd02dfb91661c65134cac258cf5924270e9d2Dan Albertextern SL_API const SLInterfaceID SL_IID_VISUALIZATION;
251711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
251811cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct SLVisualizationItf_;
251911cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef const struct SLVisualizationItf_ * const * SLVisualizationItf;
252011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
252111cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef void (SLAPIENTRY *slVisualizationCallback) (
252211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	void *pContext,
252311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	const SLuint8 waveform[],
252411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	const SLuint8 fft[],
252511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLmilliHertz samplerate
252611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert);
252711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
252811cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct SLVisualizationItf_{
252911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*RegisterVisualizationCallback)(
253011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLVisualizationItf self,
253111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		slVisualizationCallback callback,
253211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		void *pContext,
253311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLmilliHertz rate
253411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
253511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*GetMaxRate)(
253611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLVisualizationItf self,
253711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLmilliHertz* pRate
253811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
253911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
254011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
254111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
254211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/*---------------------------------------------------------------------------*/
254311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* Engine Interface                                                          */
254411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* --------------------------------------------------------------------------*/
254511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
254611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
254711cd02dfb91661c65134cac258cf5924270e9d2Dan Albertextern SL_API const SLInterfaceID SL_IID_ENGINE;
254811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
254911cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct SLEngineItf_;
255011cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef const struct SLEngineItf_ * const * SLEngineItf;
255111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
255211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
255311cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct SLEngineItf_ {
255411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
255511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*CreateLEDDevice) (
255611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLEngineItf self,
255711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLObjectItf * pDevice,
255811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLuint32 deviceID,
255911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLuint32 numInterfaces,
256011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		const SLInterfaceID * pInterfaceIds,
256111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		const SLboolean * pInterfaceRequired
256211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
256311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*CreateVibraDevice) (
256411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLEngineItf self,
256511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLObjectItf * pDevice,
256611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLuint32 deviceID,
256711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLuint32 numInterfaces,
256811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		const SLInterfaceID * pInterfaceIds,
256911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		const SLboolean * pInterfaceRequired
257011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
257111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*CreateAudioPlayer) (
257211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLEngineItf self,
257311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLObjectItf * pPlayer,
257411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLDataSource *pAudioSrc,
257511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLDataSink *pAudioSnk,
257611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLuint32 numInterfaces,
257711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		const SLInterfaceID * pInterfaceIds,
257811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		const SLboolean * pInterfaceRequired
257911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
258011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*CreateAudioRecorder) (
258111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLEngineItf self,
258211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLObjectItf * pRecorder,
258311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLDataSource *pAudioSrc,
258411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLDataSink *pAudioSnk,
258511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLuint32 numInterfaces,
258611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		const SLInterfaceID * pInterfaceIds,
258711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		const SLboolean * pInterfaceRequired
258811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
258911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*CreateMidiPlayer) (
259011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLEngineItf self,
259111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLObjectItf * pPlayer,
259211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLDataSource *pMIDISrc,
259311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLDataSource *pBankSrc,
259411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLDataSink *pAudioOutput,
259511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLDataSink *pVibra,
259611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLDataSink *pLEDArray,
259711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLuint32 numInterfaces,
259811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		const SLInterfaceID * pInterfaceIds,
259911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		const SLboolean * pInterfaceRequired
260011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
260111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*CreateListener) (
260211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLEngineItf self,
260311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLObjectItf * pListener,
260411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLuint32 numInterfaces,
260511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		const SLInterfaceID * pInterfaceIds,
260611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		const SLboolean * pInterfaceRequired
260711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
260811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*Create3DGroup) (
260911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLEngineItf self,
261011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLObjectItf * pGroup,
261111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLuint32 numInterfaces,
261211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		const SLInterfaceID * pInterfaceIds,
261311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		const SLboolean * pInterfaceRequired
261411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
261511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*CreateOutputMix) (
261611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLEngineItf self,
261711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLObjectItf * pMix,
261811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLuint32 numInterfaces,
261911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		const SLInterfaceID * pInterfaceIds,
262011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		const SLboolean * pInterfaceRequired
262111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
262211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*CreateMetadataExtractor) (
262311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLEngineItf self,
262411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLObjectItf * pMetadataExtractor,
262511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLDataSource * pDataSource,
262611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLuint32 numInterfaces,
262711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		const SLInterfaceID * pInterfaceIds,
262811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		const SLboolean * pInterfaceRequired
262911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
263011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    SLresult (*CreateExtensionObject) (
263111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        SLEngineItf self,
263211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        SLObjectItf * pObject,
263311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        void * pParameters,
263411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        SLuint32 objectID,
263511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        SLuint32 numInterfaces,
263611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        const SLInterfaceID * pInterfaceIds,
263711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        const SLboolean * pInterfaceRequired
263811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
263911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*QueryNumSupportedInterfaces) (
264011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLEngineItf self,
264111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLuint32 objectID,
264211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLuint32 * pNumSupportedInterfaces
264311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
264411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*QuerySupportedInterfaces) (
264511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLEngineItf self,
264611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLuint32 objectID,
264711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLuint32 index,
264811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLInterfaceID * pInterfaceId
264911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
265011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    SLresult (*QueryNumSupportedExtensions) (
265111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        SLEngineItf self,
265211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        SLuint32 * pNumExtensions
265311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
265411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    SLresult (*QuerySupportedExtension) (
265511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        SLEngineItf self,
265611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        SLuint32 index,
265711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        SLchar * pExtensionName,
265811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        SLint16 * pNameLength
265911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
266011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    SLresult (*IsExtensionSupported) (
266111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        SLEngineItf self,
266211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        const SLchar * pExtensionName,
266311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        SLboolean * pSupported
266411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
266511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
266611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
266711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
266811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/*---------------------------------------------------------------------------*/
266911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* Engine Capabilities Interface                                             */
267011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* --------------------------------------------------------------------------*/
267111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
267211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
267311cd02dfb91661c65134cac258cf5924270e9d2Dan Albertextern SL_API const SLInterfaceID SL_IID_ENGINECAPABILITIES;
267411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
267511cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct SLEngineCapabilitiesItf_;
267611cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef const struct SLEngineCapabilitiesItf_ * const * SLEngineCapabilitiesItf;
267711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
267811cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct SLEngineCapabilitiesItf_ {
267911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*QuerySupportedProfiles) (
268011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLEngineCapabilitiesItf self,
268111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLuint16 *pProfilesSupported
268211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
268311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*QueryAvailableVoices) (
268411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLEngineCapabilitiesItf self,
268511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLuint16 voiceType,
268611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLint16 *pNumMaxVoices,
268711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLboolean *pIsAbsoluteMax,
268811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLint16 *pNumFreeVoices
268911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
269011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*QueryNumberOfMIDISynthesizers) (
269111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLEngineCapabilitiesItf self,
269211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLint16 *pNumMIDIsynthesizers
269311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
269411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*QueryAPIVersion) (
269511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLEngineCapabilitiesItf self,
269611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLint16 *pMajor,
269711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLint16 *pMinor,
269811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLint16 *pStep
269911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
270011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*QueryLEDCapabilities) (
270111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLEngineCapabilitiesItf self,
270211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        SLuint32 *pIndex,
270311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLuint32 *pLEDDeviceID,
270411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLLEDDescriptor *pDescriptor
270511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
270611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*QueryVibraCapabilities) (
270711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLEngineCapabilitiesItf self,
270811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        SLuint32 *pIndex,
270911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLuint32 *pVibraDeviceID,
271011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLVibraDescriptor *pDescriptor
271111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
271211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*IsThreadSafe) (
271311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLEngineCapabilitiesItf self,
271411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLboolean *pIsThreadSafe
271511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
271611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
271711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
271811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/*---------------------------------------------------------------------------*/
271911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* Thread Sync Interface                                                     */
272011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* --------------------------------------------------------------------------*/
272111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
272211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
272311cd02dfb91661c65134cac258cf5924270e9d2Dan Albertextern SL_API const SLInterfaceID SL_IID_THREADSYNC;
272411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
272511cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct SLThreadSyncItf_;
272611cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef const struct SLThreadSyncItf_ * const * SLThreadSyncItf;
272711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
272811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
272911cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct SLThreadSyncItf_ {
273011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*EnterCriticalSection) (
273111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLThreadSyncItf self
273211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
273311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLresult (*ExitCriticalSection) (
273411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		SLThreadSyncItf self
273511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	);
273611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
273711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
273811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
273911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/*****************************************************************************/
274011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* SL engine constructor                                                     */
274111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/*****************************************************************************/
274211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
274311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_ENGINEOPTION_THREADSAFE	((SLuint32) 0x00000001)
274411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SL_ENGINEOPTION_LOSSOFCONTROL	((SLuint32) 0x00000002)
274511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
274611cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef struct SLEngineOption_ {
274711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLuint32 feature;
274811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLuint32 data;
274911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert} SLEngineOption;
275011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
275111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
275211cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertSL_API SLresult SLAPIENTRY slCreateEngine(
275311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLObjectItf             *pEngine,
275411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLuint32                numOptions,
275511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	const SLEngineOption    *pEngineOptions,
275611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLuint32                numInterfaces,
275711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	const SLInterfaceID     *pInterfaceIds,
275811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	const SLboolean         * pInterfaceRequired
275911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert);
276011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
276111cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertSL_API SLresult SLAPIENTRY slQueryNumSupportedEngineInterfaces(
276211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLuint32 * pNumSupportedInterfaces
276311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert);
276411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
276511cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertSL_API SLresult SLAPIENTRY slQuerySupportedEngineInterfaces(
276611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLuint32 index,
276711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	SLInterfaceID * pInterfaceId
276811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert);
276911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
277011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#ifdef __cplusplus
277111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert} /* extern "C" */
277211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif
277311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
277411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif /* OPENSL_ES_H_ */
2775