19c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/*
229ecc091f988ce8e6d95296a5f47377007ad77feGlenn Kasten * Copyright (c) 2007-2009 The Khronos Group Inc.
39c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten *
49c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten * Permission is hereby granted, free of charge, to any person obtaining a copy of
59c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten * this software and /or associated documentation files (the "Materials "), to
69c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten * deal in the Materials without restriction, including without limitation the
79c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
89c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten * sell copies of the Materials, and to permit persons to whom the Materials are
99c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten * furnished to do so, subject to
109c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten * the following conditions:
119c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten *
129c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten * The above copyright notice and this permission notice shall be included
139c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten * in all copies or substantial portions of the Materials.
149c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten *
159c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten * THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
169c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
179c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
189c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
199c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
209c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten * OUT OF OR IN CONNECTION WITH THE MATERIALS OR THE USE OR OTHER DEALINGS IN THE
219c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten * MATERIALS.
229c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten *
2329ecc091f988ce8e6d95296a5f47377007ad77feGlenn Kasten * OpenSLES.h - OpenSL ES version 1.0.1
249c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten *
259c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten */
269c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
279c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/****************************************************************************/
289c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/* NOTE: This file is a standard OpenSL ES header file and should not be    */
299c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/* modified in any way.                                                     */
309c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/****************************************************************************/
319c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
329c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#ifndef OPENSL_ES_H_
339c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define OPENSL_ES_H_
349c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
359c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#ifdef __cplusplus
369c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastenextern "C" {
379c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#endif
389c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
399c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#include "OpenSLES_Platform.h"
409c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
419c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
429c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/*****************************************************************************/
439c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/* Common types, structures, and defines                                */
449c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/*****************************************************************************/
459c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
469c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#ifndef _KHRONOS_KEYS_
479c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define _KHRONOS_KEYS_
489c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
499c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define KHRONOS_TITLE "KhronosTitle"
509c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define KHRONOS_ALBUM "KhronosAlbum"
519c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define KHRONOS_TRACK_NUMBER "KhronosTrackNumber"
529c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define KHRONOS_ARTIST "KhronosArtist"
539c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define KHRONOS_GENRE "KhronosGenre"
549c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define KHRONOS_YEAR "KhronosYear"
559c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define KHRONOS_COMMENT "KhronosComment"
569c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define KHRONOS_ARTIST_URL "KhronosArtistURL"
579c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define KHRONOS_CONTENT_URL "KhronosContentURL"
589c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define KHRONOS_RATING "KhronosRating"
599c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define KHRONOS_ALBUM_ART "KhronosAlbumArt"
609c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define KHRONOS_COPYRIGHT "KhronosCopyright"
619c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
629c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#endif
639c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
649c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
659c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/* remap common types to SL types for clarity */
669c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastentypedef sl_int8_t              SLint8;          /* 8 bit signed integer  */
679c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastentypedef sl_uint8_t             SLuint8;         /* 8 bit unsigned integer */
689c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastentypedef sl_int16_t             SLint16;         /* 16 bit signed integer */
699c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastentypedef sl_uint16_t            SLuint16;        /* 16 bit unsigned integer */
709c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastentypedef sl_int32_t             SLint32;           /* 32 bit signed integer */
719c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastentypedef sl_uint32_t            SLuint32;          /* 32 bit unsigned integer */
729c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
739c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastentypedef SLuint32                    SLboolean;
749c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_BOOLEAN_FALSE            ((SLboolean) 0x00000000)
759c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_BOOLEAN_TRUE             ((SLboolean) 0x00000001)
769c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
779c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastentypedef SLuint8						SLchar;			/* UTF-8 is to be used */
789c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastentypedef SLint16						SLmillibel;
799c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastentypedef SLuint32					SLmillisecond;
809c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastentypedef SLuint32					SLmilliHertz;
819c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastentypedef SLint32						SLmillimeter;
829c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastentypedef SLint32						SLmillidegree;
839c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastentypedef SLint16						SLpermille;
849c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastentypedef SLuint32					SLmicrosecond;
859c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastentypedef SLuint32					SLresult;
869c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
879c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_MILLIBEL_MAX 	((SLmillibel) 0x7FFF)
889c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_MILLIBEL_MIN 	((SLmillibel) (-SL_MILLIBEL_MAX-1))
899c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
909c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_MILLIHERTZ_MAX	((SLmilliHertz) 0xFFFFFFFF)
919c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_MILLIMETER_MAX	((SLmillimeter) 0x7FFFFFFF)
929c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
939c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/** Interface ID defined as a UUID */
949c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastentypedef const struct SLInterfaceID_ {
959c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten    SLuint32 time_low;
969c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten    SLuint16 time_mid;
979c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten    SLuint16 time_hi_and_version;
989c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten    SLuint16 clock_seq;
999c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten    SLuint8  node[6];
1009c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten} * SLInterfaceID;
1019c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
1029c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/* Forward declaration for the object interface */
1039c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastenstruct SLObjectItf_;
1049c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
1059c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastentypedef const struct SLObjectItf_ * const * SLObjectItf;
1069c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
1079c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/* Objects ID's */
1089c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
1099c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_OBJECTID_ENGINE			((SLuint32) 0x00001001)
1109c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_OBJECTID_LEDDEVICE		((SLuint32) 0x00001002)
1119c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_OBJECTID_VIBRADEVICE		((SLuint32) 0x00001003)
1129c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_OBJECTID_AUDIOPLAYER		((SLuint32) 0x00001004)
1139c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_OBJECTID_AUDIORECORDER	((SLuint32) 0x00001005)
1149c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_OBJECTID_MIDIPLAYER		((SLuint32) 0x00001006)
1159c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_OBJECTID_LISTENER		((SLuint32) 0x00001007)
1169c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_OBJECTID_3DGROUP			((SLuint32) 0x00001008)
1179c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_OBJECTID_OUTPUTMIX		((SLuint32) 0x00001009)
1189c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_OBJECTID_METADATAEXTRACTOR	((SLuint32) 0x0000100A)
1199c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
1209c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
1219c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/* SL Profiles */
1229c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
1239c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_PROFILES_PHONE	((SLuint16) 0x0001)
1249c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_PROFILES_MUSIC	((SLuint16) 0x0002)
1259c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_PROFILES_GAME	((SLuint16) 0x0004)
1269c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
1279c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/* Types of voices supported by the system */
1289c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
1299c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_VOICETYPE_2D_AUDIO		((SLuint16) 0x0001)
1309c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_VOICETYPE_MIDI			((SLuint16) 0x0002)
1319c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_VOICETYPE_3D_AUDIO 		((SLuint16) 0x0004)
1329c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_VOICETYPE_3D_MIDIOUTPUT 	((SLuint16) 0x0008)
1339c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
1349c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/* Convenient macros representing various different priority levels, for use with the SetPriority method */
1359c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
1369c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_PRIORITY_LOWEST		((SLint32) (-0x7FFFFFFF-1))
1379c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_PRIORITY_VERYLOW		((SLint32) -0x60000000)
1389c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_PRIORITY_LOW			((SLint32) -0x40000000)
1399c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_PRIORITY_BELOWNORMAL	((SLint32) -0x20000000)
1409c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_PRIORITY_NORMAL		((SLint32) 0x00000000)
1419c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_PRIORITY_ABOVENORMAL	((SLint32) 0x20000000)
1429c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_PRIORITY_HIGH		((SLint32) 0x40000000)
1439c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_PRIORITY_VERYHIGH	((SLint32) 0x60000000)
1449c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_PRIORITY_HIGHEST	((SLint32) 0x7FFFFFFF)
1459c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
1469c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
1479c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/** These macros list the various sample formats that are possible on audio input and output devices. */
1489c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
1499c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_PCMSAMPLEFORMAT_FIXED_8	((SLuint16) 0x0008)
1509c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_PCMSAMPLEFORMAT_FIXED_16	((SLuint16) 0x0010)
1519c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_PCMSAMPLEFORMAT_FIXED_20 	((SLuint16) 0x0014)
1529c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_PCMSAMPLEFORMAT_FIXED_24	((SLuint16) 0x0018)
1539c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_PCMSAMPLEFORMAT_FIXED_28 	((SLuint16) 0x001C)
1549c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_PCMSAMPLEFORMAT_FIXED_32	((SLuint16) 0x0020)
1559c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
1569c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
1579c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/** These macros specify the commonly used sampling rates (in milliHertz) supported by most audio I/O devices. */
1589c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
1599c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_SAMPLINGRATE_8		((SLuint32) 8000000)
1609c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_SAMPLINGRATE_11_025	((SLuint32) 11025000)
1619c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_SAMPLINGRATE_12		((SLuint32) 12000000)
1629c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_SAMPLINGRATE_16		((SLuint32) 16000000)
1639c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_SAMPLINGRATE_22_05	((SLuint32) 22050000)
1649c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_SAMPLINGRATE_24		((SLuint32) 24000000)
1659c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_SAMPLINGRATE_32		((SLuint32) 32000000)
1669c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_SAMPLINGRATE_44_1	((SLuint32) 44100000)
1679c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_SAMPLINGRATE_48		((SLuint32) 48000000)
1689c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_SAMPLINGRATE_64		((SLuint32) 64000000)
1699c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_SAMPLINGRATE_88_2	((SLuint32) 88200000)
1709c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_SAMPLINGRATE_96		((SLuint32) 96000000)
1719c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_SAMPLINGRATE_192	((SLuint32) 192000000)
1729c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
1739c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_SPEAKER_FRONT_LEFT			((SLuint32) 0x00000001)
1749c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_SPEAKER_FRONT_RIGHT			((SLuint32) 0x00000002)
1759c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_SPEAKER_FRONT_CENTER			((SLuint32) 0x00000004)
1769c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_SPEAKER_LOW_FREQUENCY			((SLuint32) 0x00000008)
1779c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_SPEAKER_BACK_LEFT			((SLuint32) 0x00000010)
1789c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_SPEAKER_BACK_RIGHT			((SLuint32) 0x00000020)
1799c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_SPEAKER_FRONT_LEFT_OF_CENTER	((SLuint32) 0x00000040)
1809c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_SPEAKER_FRONT_RIGHT_OF_CENTER	((SLuint32) 0x00000080)
1819c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_SPEAKER_BACK_CENTER			((SLuint32) 0x00000100)
1829c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_SPEAKER_SIDE_LEFT			((SLuint32) 0x00000200)
1839c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_SPEAKER_SIDE_RIGHT			((SLuint32) 0x00000400)
1849c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_SPEAKER_TOP_CENTER			((SLuint32) 0x00000800)
1859c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_SPEAKER_TOP_FRONT_LEFT		((SLuint32) 0x00001000)
1869c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_SPEAKER_TOP_FRONT_CENTER		((SLuint32) 0x00002000)
1879c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_SPEAKER_TOP_FRONT_RIGHT		((SLuint32) 0x00004000)
1889c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_SPEAKER_TOP_BACK_LEFT			((SLuint32) 0x00008000)
1899c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_SPEAKER_TOP_BACK_CENTER		((SLuint32) 0x00010000)
1909c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_SPEAKER_TOP_BACK_RIGHT		((SLuint32) 0x00020000)
1919c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
1929c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
1939c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/*****************************************************************************/
1949c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/* Errors                                                                    */
1959c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/*                                                                           */
1969c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/*****************************************************************************/
1979c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
1989c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_RESULT_SUCCESS				((SLuint32) 0x00000000)
1999c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_RESULT_PRECONDITIONS_VIOLATED	((SLuint32) 0x00000001)
2009c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_RESULT_PARAMETER_INVALID		((SLuint32) 0x00000002)
2019c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_RESULT_MEMORY_FAILURE			((SLuint32) 0x00000003)
2029c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_RESULT_RESOURCE_ERROR			((SLuint32) 0x00000004)
2039c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_RESULT_RESOURCE_LOST			((SLuint32) 0x00000005)
2049c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_RESULT_IO_ERROR				((SLuint32) 0x00000006)
2059c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_RESULT_BUFFER_INSUFFICIENT		((SLuint32) 0x00000007)
2069c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_RESULT_CONTENT_CORRUPTED		((SLuint32) 0x00000008)
2079c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_RESULT_CONTENT_UNSUPPORTED		((SLuint32) 0x00000009)
2089c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_RESULT_CONTENT_NOT_FOUND		((SLuint32) 0x0000000A)
2099c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_RESULT_PERMISSION_DENIED		((SLuint32) 0x0000000B)
2109c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_RESULT_FEATURE_UNSUPPORTED		((SLuint32) 0x0000000C)
2119c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_RESULT_INTERNAL_ERROR			((SLuint32) 0x0000000D)
2129c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_RESULT_UNKNOWN_ERROR			((SLuint32) 0x0000000E)
2139c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_RESULT_OPERATION_ABORTED		((SLuint32) 0x0000000F)
2149c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_RESULT_CONTROL_LOST			((SLuint32) 0x00000010)
2159c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
2169c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
2179c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/* Object state definitions */
2189c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
2199c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_OBJECT_STATE_UNREALIZED	((SLuint32) 0x00000001)
2209c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_OBJECT_STATE_REALIZED		((SLuint32) 0x00000002)
2219c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_OBJECT_STATE_SUSPENDED	((SLuint32) 0x00000003)
2229c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
2239c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/* Object event definitions */
2249c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
2259c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_OBJECT_EVENT_RUNTIME_ERROR			((SLuint32) 0x00000001)
2269c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_OBJECT_EVENT_ASYNC_TERMINATION		((SLuint32) 0x00000002)
2279c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_OBJECT_EVENT_RESOURCES_LOST			((SLuint32) 0x00000003)
2289c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_OBJECT_EVENT_RESOURCES_AVAILABLE		((SLuint32) 0x00000004)
2299c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_OBJECT_EVENT_ITF_CONTROL_TAKEN		((SLuint32) 0x00000005)
2309c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_OBJECT_EVENT_ITF_CONTROL_RETURNED		((SLuint32) 0x00000006)
2319c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_OBJECT_EVENT_ITF_PARAMETERS_CHANGED	((SLuint32) 0x00000007)
2329c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
2339c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
2349c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/*****************************************************************************/
2359c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/* Interface definitions                                                     */
2369c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/*****************************************************************************/
2379c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
2389c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/** NULL Interface */
2399c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
240ebc8fd365b402e498d499fa8737a7591c290347cGlenn Kastenextern SL_API const SLInterfaceID SL_IID_NULL;
2419c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
2429c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/*---------------------------------------------------------------------------*/
2439c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/* Data Source and Data Sink Structures                                      */
2449c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/*---------------------------------------------------------------------------*/
2459c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
2469c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/** Data locator macros  */
2479c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_DATALOCATOR_URI			((SLuint32) 0x00000001)
2489c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_DATALOCATOR_ADDRESS		((SLuint32) 0x00000002)
2499c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_DATALOCATOR_IODEVICE		((SLuint32) 0x00000003)
2509c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_DATALOCATOR_OUTPUTMIX		((SLuint32) 0x00000004)
2519c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_DATALOCATOR_RESERVED5		((SLuint32) 0x00000005)
2529c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_DATALOCATOR_BUFFERQUEUE	((SLuint32) 0x00000006)
2539c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_DATALOCATOR_MIDIBUFFERQUEUE	((SLuint32) 0x00000007)
2549c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_DATALOCATOR_RESERVED8		((SLuint32) 0x00000008)
2559c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
2569c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
2579c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
2589c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/** URI-based data locator definition where locatorType must be SL_DATALOCATOR_URI*/
2599c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastentypedef struct SLDataLocator_URI_ {
2609c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLuint32 		locatorType;
2619c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLchar *		URI;
2629c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten} SLDataLocator_URI;
2639c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
2649c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/** Address-based data locator definition where locatorType must be SL_DATALOCATOR_ADDRESS*/
2659c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastentypedef struct SLDataLocator_Address_ {
2669c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLuint32 	locatorType;
2679c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	void 		*pAddress;
2689c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLuint32	length;
2699c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten} SLDataLocator_Address;
2709c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
2719c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/** IODevice-types */
2729c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_IODEVICE_AUDIOINPUT	((SLuint32) 0x00000001)
2739c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_IODEVICE_LEDARRAY	((SLuint32) 0x00000002)
2749c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_IODEVICE_VIBRA		((SLuint32) 0x00000003)
2759c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_IODEVICE_RESERVED4	((SLuint32) 0x00000004)
2769c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_IODEVICE_RESERVED5	((SLuint32) 0x00000005)
2779c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
2789c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/** IODevice-based data locator definition where locatorType must be SL_DATALOCATOR_IODEVICE*/
2799c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastentypedef struct SLDataLocator_IODevice_ {
2809c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLuint32	locatorType;
2819c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLuint32	deviceType;
2829c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLuint32	deviceID;
2839c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLObjectItf	device;
2849c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten} SLDataLocator_IODevice;
2859c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
2869c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/** OutputMix-based data locator definition where locatorType must be SL_DATALOCATOR_OUTPUTMIX*/
2879c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastentypedef struct SLDataLocator_OutputMix {
2889c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLuint32 		locatorType;
2899c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLObjectItf		outputMix;
2909c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten} SLDataLocator_OutputMix;
2919c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
2929c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
2939c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/** BufferQueue-based data locator definition where locatorType must be SL_DATALOCATOR_BUFFERQUEUE*/
2949c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastentypedef struct SLDataLocator_BufferQueue {
2959c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLuint32	locatorType;
2969c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLuint32	numBuffers;
2979c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten} SLDataLocator_BufferQueue;
2989c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
2999c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/** MidiBufferQueue-based data locator definition where locatorType must be SL_DATALOCATOR_MIDIBUFFERQUEUE*/
3009c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastentypedef struct SLDataLocator_MIDIBufferQueue {
3019c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLuint32	locatorType;
3029c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLuint32	tpqn;
3039c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLuint32	numBuffers;
3049c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten} SLDataLocator_MIDIBufferQueue;
3059c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
3069c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/** Data format defines */
3079c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_DATAFORMAT_MIME		((SLuint32) 0x00000001)
3089c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_DATAFORMAT_PCM		((SLuint32) 0x00000002)
3099c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_DATAFORMAT_RESERVED3	((SLuint32) 0x00000003)
3109c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
3119c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
3129c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/** MIME-type-based data format definition where formatType must be SL_DATAFORMAT_MIME*/
3139c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastentypedef struct SLDataFormat_MIME_ {
3149c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLuint32 		formatType;
3159c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLchar * 		mimeType;
3169c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLuint32		containerType;
3179c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten} SLDataFormat_MIME;
3189c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
3199c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/* Byte order of a block of 16- or 32-bit data */
3209c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_BYTEORDER_BIGENDIAN				((SLuint32) 0x00000001)
3219c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_BYTEORDER_LITTLEENDIAN			((SLuint32) 0x00000002)
3229c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
3239c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/* Container type */
3249c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_CONTAINERTYPE_UNSPECIFIED	((SLuint32) 0x00000001)
3259c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_CONTAINERTYPE_RAW		((SLuint32) 0x00000002)
3269c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_CONTAINERTYPE_ASF		((SLuint32) 0x00000003)
3279c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_CONTAINERTYPE_AVI		((SLuint32) 0x00000004)
3289c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_CONTAINERTYPE_BMP		((SLuint32) 0x00000005)
3299c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_CONTAINERTYPE_JPG		((SLuint32) 0x00000006)
3309c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_CONTAINERTYPE_JPG2000		((SLuint32) 0x00000007)
3319c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_CONTAINERTYPE_M4A		((SLuint32) 0x00000008)
3329c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_CONTAINERTYPE_MP3		((SLuint32) 0x00000009)
3339c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_CONTAINERTYPE_MP4		((SLuint32) 0x0000000A)
3349c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_CONTAINERTYPE_MPEG_ES		((SLuint32) 0x0000000B)
3359c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_CONTAINERTYPE_MPEG_PS		((SLuint32) 0x0000000C)
3369c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_CONTAINERTYPE_MPEG_TS		((SLuint32) 0x0000000D)
3379c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_CONTAINERTYPE_QT		((SLuint32) 0x0000000E)
3389c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_CONTAINERTYPE_WAV		((SLuint32) 0x0000000F)
3399c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_CONTAINERTYPE_XMF_0		((SLuint32) 0x00000010)
3409c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_CONTAINERTYPE_XMF_1		((SLuint32) 0x00000011)
3419c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_CONTAINERTYPE_XMF_2		((SLuint32) 0x00000012)
3429c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_CONTAINERTYPE_XMF_3		((SLuint32) 0x00000013)
3439c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_CONTAINERTYPE_XMF_GENERIC	((SLuint32) 0x00000014)
3449c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_CONTAINERTYPE_AMR  		((SLuint32) 0x00000015)
3459c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_CONTAINERTYPE_AAC		((SLuint32) 0x00000016)
3469c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_CONTAINERTYPE_3GPP		((SLuint32) 0x00000017)
3479c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_CONTAINERTYPE_3GA		((SLuint32) 0x00000018)
3489c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_CONTAINERTYPE_RM		((SLuint32) 0x00000019)
3499c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_CONTAINERTYPE_DMF		((SLuint32) 0x0000001A)
3509c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_CONTAINERTYPE_SMF		((SLuint32) 0x0000001B)
3519c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_CONTAINERTYPE_MOBILE_DLS	((SLuint32) 0x0000001C)
35229ecc091f988ce8e6d95296a5f47377007ad77feGlenn Kasten#define SL_CONTAINERTYPE_OGG	((SLuint32) 0x0000001D)
3539c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
3549c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
3559c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/** PCM-type-based data format definition where formatType must be SL_DATAFORMAT_PCM*/
3569c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastentypedef struct SLDataFormat_PCM_ {
3579c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLuint32 		formatType;
3589c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLuint32 		numChannels;
3599c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLuint32 		samplesPerSec;
3609c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLuint32 		bitsPerSample;
3619c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLuint32 		containerSize;
3629c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLuint32 		channelMask;
3639c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLuint32		endianness;
3649c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten} SLDataFormat_PCM;
3659c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
3669c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastentypedef struct SLDataSource_ {
3679c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	void *pLocator;
3689c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	void *pFormat;
3699c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten} SLDataSource;
3709c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
3719c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
3729c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastentypedef struct SLDataSink_ {
3739c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	void *pLocator;
3749c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	void *pFormat;
3759c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten} SLDataSink;
3769c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
3779c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
3789c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
3799c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
3809c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
3819c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
3829c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/*---------------------------------------------------------------------------*/
3839c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/* Standard Object Interface                                                 */
3849c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/*---------------------------------------------------------------------------*/
3859c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
386ebc8fd365b402e498d499fa8737a7591c290347cGlenn Kastenextern SL_API const SLInterfaceID SL_IID_OBJECT;
3879c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
3889c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/** Object callback */
3899c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
3909c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
391ebc8fd365b402e498d499fa8737a7591c290347cGlenn Kastentypedef void (SLAPIENTRY *slObjectCallback) (
3929c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLObjectItf caller,
3939c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	const void * pContext,
3949c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLuint32 event,
3959c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult result,
3969c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten    SLuint32 param,
3979c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten    void *pInterface
3989c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten);
3999c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
4009c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
4019c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastenstruct SLObjectItf_ {
4029c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*Realize) (
4039c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLObjectItf self,
4049c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLboolean async
4059c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
4069c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*Resume) (
4079c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLObjectItf self,
4089c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLboolean async
4099c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
4109c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*GetState) (
4119c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLObjectItf self,
4129c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint32 * pState
4139c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
4149c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*GetInterface) (
4159c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLObjectItf self,
4169c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		const SLInterfaceID iid,
4179c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		void * pInterface
4189c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
4199c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*RegisterCallback) (
4209c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLObjectItf self,
4219c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		slObjectCallback callback,
4229c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		void * pContext
4239c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
4249c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	void (*AbortAsyncOperation) (
4259c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLObjectItf self
4269c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
4279c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	void (*Destroy) (
4289c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLObjectItf self
4299c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
4309c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*SetPriority) (
4319c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLObjectItf self,
4329c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLint32 priority,
4339c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLboolean preemptable
4349c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
4359c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*GetPriority) (
4369c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLObjectItf self,
4379c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLint32 *pPriority,
4389c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLboolean *pPreemptable
4399c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
4409c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*SetLossOfControlInterfaces) (
4419c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLObjectItf self,
4429c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLint16 numInterfaces,
4439c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLInterfaceID * pInterfaceIDs,
4449c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLboolean enabled
4459c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
4469c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten};
4479c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
4489c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
4499c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/*---------------------------------------------------------------------------*/
4509c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/* Audio IO Device capabilities interface                                    */
4519c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/*---------------------------------------------------------------------------*/
4529c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
4539c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_DEFAULTDEVICEID_AUDIOINPUT 	((SLuint32) 0xFFFFFFFF)
4549c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_DEFAULTDEVICEID_AUDIOOUTPUT 	((SLuint32) 0xFFFFFFFE)
4559c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_DEFAULTDEVICEID_LED          ((SLuint32) 0xFFFFFFFD)
4569c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_DEFAULTDEVICEID_VIBRA        ((SLuint32) 0xFFFFFFFC)
4579c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_DEFAULTDEVICEID_RESERVED1    ((SLuint32) 0xFFFFFFFB)
4589c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
4599c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
46029ecc091f988ce8e6d95296a5f47377007ad77feGlenn Kasten#define SL_DEVCONNECTION_INTEGRATED         ((SLint16) 0x0001)
46129ecc091f988ce8e6d95296a5f47377007ad77feGlenn Kasten#define SL_DEVCONNECTION_ATTACHED_WIRED     ((SLint16) 0x0100)
46229ecc091f988ce8e6d95296a5f47377007ad77feGlenn Kasten#define SL_DEVCONNECTION_ATTACHED_WIRELESS  ((SLint16) 0x0200)
46329ecc091f988ce8e6d95296a5f47377007ad77feGlenn Kasten#define SL_DEVCONNECTION_NETWORK 		    ((SLint16) 0x0400)
4649c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
4659c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
4669c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_DEVLOCATION_HANDSET 	((SLuint16) 0x0001)
4679c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_DEVLOCATION_HEADSET 	((SLuint16) 0x0002)
4689c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_DEVLOCATION_CARKIT 	((SLuint16) 0x0003)
4699c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_DEVLOCATION_DOCK 	((SLuint16) 0x0004)
47029ecc091f988ce8e6d95296a5f47377007ad77feGlenn Kasten#define SL_DEVLOCATION_REMOTE 	((SLuint16) 0x0005)
47129ecc091f988ce8e6d95296a5f47377007ad77feGlenn Kasten/* Note: SL_DEVLOCATION_RESLTE is deprecated, use SL_DEVLOCATION_REMOTE instead. */
4729c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_DEVLOCATION_RESLTE 	((SLuint16) 0x0005)
4739c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
4749c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
4759c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_DEVSCOPE_UNKNOWN     ((SLuint16) 0x0001)
4769c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_DEVSCOPE_ENVIRONMENT ((SLuint16) 0x0002)
4779c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_DEVSCOPE_USER        ((SLuint16) 0x0003)
4789c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
4799c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
4809c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastentypedef struct SLAudioInputDescriptor_ {
4819c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLchar *deviceName;
4829c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLint16 deviceConnection;
4839c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLint16 deviceScope;
4849c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLint16 deviceLocation;
4859c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLboolean isForTelephony;
4869c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLmilliHertz minSampleRate;
4879c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLmilliHertz maxSampleRate;
4889c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLboolean isFreqRangeContinuous;
4899c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLmilliHertz *samplingRatesSupported;
4909c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLint16 numOfSamplingRatesSupported;
4919c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLint16 maxChannels;
4929c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten} SLAudioInputDescriptor;
4939c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
4949c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
4959c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastentypedef struct SLAudioOutputDescriptor_ {
4969c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLchar *pDeviceName;
4979c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLint16 deviceConnection;
4989c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLint16 deviceScope;
4999c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLint16 deviceLocation;
5009c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLboolean isForTelephony;
5019c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLmilliHertz minSampleRate;
5029c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLmilliHertz maxSampleRate;
5039c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLboolean isFreqRangeContinuous;
5049c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLmilliHertz *samplingRatesSupported;
5059c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLint16 numOfSamplingRatesSupported;
5069c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLint16 maxChannels;
5079c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten} SLAudioOutputDescriptor;
5089c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
5099c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
5109c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
511ebc8fd365b402e498d499fa8737a7591c290347cGlenn Kastenextern SL_API const SLInterfaceID SL_IID_AUDIOIODEVICECAPABILITIES;
5129c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
5139c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastenstruct SLAudioIODeviceCapabilitiesItf_;
5149c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastentypedef const struct SLAudioIODeviceCapabilitiesItf_ * const * SLAudioIODeviceCapabilitiesItf;
5159c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
5169c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
517ebc8fd365b402e498d499fa8737a7591c290347cGlenn Kastentypedef void (SLAPIENTRY *slAvailableAudioInputsChangedCallback) (
5189c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLAudioIODeviceCapabilitiesItf caller,
5199c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	void *pContext,
5209c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLuint32 deviceID,
5219c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLint32 numInputs,
5229c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLboolean isNew
5239c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten);
5249c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
5259c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
526ebc8fd365b402e498d499fa8737a7591c290347cGlenn Kastentypedef void (SLAPIENTRY *slAvailableAudioOutputsChangedCallback) (
5279c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLAudioIODeviceCapabilitiesItf caller,
5289c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	void *pContext,
5299c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLuint32 deviceID,
5309c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLint32 numOutputs,
5319c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLboolean isNew
5329c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten);
5339c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
534ebc8fd365b402e498d499fa8737a7591c290347cGlenn Kastentypedef void (SLAPIENTRY *slDefaultDeviceIDMapChangedCallback) (
5359c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLAudioIODeviceCapabilitiesItf caller,
5369c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	void *pContext,
5379c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLboolean isOutput,
5389c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLint32 numDevices
5399c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten);
5409c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
5419c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
5429c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastenstruct SLAudioIODeviceCapabilitiesItf_ {
5439c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*GetAvailableAudioInputs)(
5449c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLAudioIODeviceCapabilitiesItf self,
5459c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLint32  *pNumInputs,
5469c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint32 *pInputDeviceIDs
5479c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
5489c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*QueryAudioInputCapabilities)(
5499c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLAudioIODeviceCapabilitiesItf self,
5509c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint32 deviceId,
5519c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLAudioInputDescriptor *pDescriptor
5529c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
5539c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*RegisterAvailableAudioInputsChangedCallback) (
5549c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLAudioIODeviceCapabilitiesItf self,
5559c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		slAvailableAudioInputsChangedCallback callback,
5569c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		void *pContext
5579c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
5589c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*GetAvailableAudioOutputs)(
5599c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLAudioIODeviceCapabilitiesItf self,
5609c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLint32 *pNumOutputs,
5619c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint32 *pOutputDeviceIDs
5629c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
5639c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*QueryAudioOutputCapabilities)(
5649c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLAudioIODeviceCapabilitiesItf self,
5659c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint32 deviceId,
5669c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLAudioOutputDescriptor *pDescriptor
5679c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
5689c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*RegisterAvailableAudioOutputsChangedCallback) (
5699c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLAudioIODeviceCapabilitiesItf self,
5709c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		slAvailableAudioOutputsChangedCallback callback,
5719c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		void *pContext
5729c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
5739c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*RegisterDefaultDeviceIDMapChangedCallback) (
5749c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLAudioIODeviceCapabilitiesItf self,
5759c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		slDefaultDeviceIDMapChangedCallback callback,
5769c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		void *pContext
5779c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
5789c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*GetAssociatedAudioInputs) (
5799c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLAudioIODeviceCapabilitiesItf self,
5809c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint32 deviceId,
5819c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLint32 *pNumAudioInputs,
5829c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint32 *pAudioInputDeviceIDs
5839c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
5849c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*GetAssociatedAudioOutputs) (
5859c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLAudioIODeviceCapabilitiesItf self,
5869c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint32 deviceId,
5879c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLint32 *pNumAudioOutputs,
5889c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint32 *pAudioOutputDeviceIDs
5899c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
5909c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*GetDefaultAudioDevices) (
5919c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLAudioIODeviceCapabilitiesItf self,
5929c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint32 defaultDeviceID,
5939c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLint32 *pNumAudioDevices,
5949c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint32 *pAudioDeviceIDs
5959c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
5969c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*QuerySampleFormatsSupported)(
5979c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLAudioIODeviceCapabilitiesItf self,
5989c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint32 deviceId,
5999c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLmilliHertz samplingRate,
6009c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLint32 *pSampleFormats,
6019c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLint32 *pNumOfSampleFormats
6029c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
6039c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten};
6049c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
6059c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
6069c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
6079c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/*---------------------------------------------------------------------------*/
6089c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/* Capabilities of the LED array IODevice                                    */
6099c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/*---------------------------------------------------------------------------*/
6109c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
6119c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastentypedef struct SLLEDDescriptor_ {
6129c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLuint8   ledCount;
6139c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLuint8   primaryLED;
6149c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLuint32  colorMask;
6159c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten} SLLEDDescriptor;
6169c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
6179c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
6189c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/*---------------------------------------------------------------------------*/
6199c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/* LED Array interface                                                       */
6209c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/*---------------------------------------------------------------------------*/
6219c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
6229c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastentypedef struct SLHSL_ {
6239c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten    SLmillidegree  hue;
6249c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten    SLpermille     saturation;
6259c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten    SLpermille     lightness;
6269c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten} SLHSL;
6279c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
6289c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
629ebc8fd365b402e498d499fa8737a7591c290347cGlenn Kastenextern SL_API const SLInterfaceID SL_IID_LED;
6309c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
6319c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastenstruct SLLEDArrayItf_;
6329c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastentypedef const struct SLLEDArrayItf_ * const * SLLEDArrayItf;
6339c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
6349c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastenstruct SLLEDArrayItf_ {
6359c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*ActivateLEDArray) (
6369c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLLEDArrayItf self,
6379c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint32 lightMask
6389c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
6399c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*IsLEDArrayActivated) (
6409c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLLEDArrayItf self,
6419c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint32 *lightMask
6429c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
6439c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*SetColor) (
6449c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLLEDArrayItf self,
6459c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint8 index,
6469c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		const SLHSL *color
6479c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
6489c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*GetColor) (
6499c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLLEDArrayItf self,
6509c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint8 index,
6519c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLHSL *color
6529c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
6539c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten};
6549c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
6559c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/*---------------------------------------------------------------------------*/
6569c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/* Capabilities of the Vibra IODevice                                        */
6579c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/*---------------------------------------------------------------------------*/
6589c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
6599c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastentypedef struct SLVibraDescriptor_ {
6609c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLboolean supportsFrequency;
6619c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLboolean supportsIntensity;
6629c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLmilliHertz  minFrequency;
6639c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLmilliHertz  maxFrequency;
6649c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten} SLVibraDescriptor;
6659c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
6669c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
6679c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
6689c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/*---------------------------------------------------------------------------*/
6699c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/* Vibra interface                                                           */
6709c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/*---------------------------------------------------------------------------*/
6719c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
6729c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
673ebc8fd365b402e498d499fa8737a7591c290347cGlenn Kastenextern SL_API const SLInterfaceID SL_IID_VIBRA;
6749c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
6759c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
6769c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastenstruct SLVibraItf_;
6779c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastentypedef const struct SLVibraItf_ * const * SLVibraItf;
6789c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
6799c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastenstruct SLVibraItf_ {
6809c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*Vibrate) (
6819c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLVibraItf self,
6829c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLboolean vibrate
6839c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
6849c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*IsVibrating) (
6859c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLVibraItf self,
6869c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLboolean *pVibrating
6879c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
6889c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*SetFrequency) (
6899c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLVibraItf self,
6909c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLmilliHertz frequency
6919c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
6929c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*GetFrequency) (
6939c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLVibraItf self,
6949c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLmilliHertz *pFrequency
6959c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
6969c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*SetIntensity) (
6979c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLVibraItf self,
6989c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLpermille intensity
6999c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
7009c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*GetIntensity) (
7019c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLVibraItf self,
7029c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLpermille *pIntensity
7039c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
7049c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten};
7059c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
7069c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
7079c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/*---------------------------------------------------------------------------*/
7089c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/* Meta data extraction related types and interface                          */
7099c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/*---------------------------------------------------------------------------*/
7109c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
7119c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_CHARACTERENCODING_UNKNOWN			((SLuint32) 0x00000000)
7129c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_CHARACTERENCODING_BINARY       ((SLuint32) 0x00000001)
7139c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_CHARACTERENCODING_ASCII        ((SLuint32) 0x00000002)
7149c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_CHARACTERENCODING_BIG5         ((SLuint32) 0x00000003)
7159c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_CHARACTERENCODING_CODEPAGE1252		((SLuint32) 0x00000004)
7169c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_CHARACTERENCODING_GB2312			((SLuint32) 0x00000005)
7179c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_CHARACTERENCODING_HZGB2312			((SLuint32) 0x00000006)
7189c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_CHARACTERENCODING_GB12345			((SLuint32) 0x00000007)
7199c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_CHARACTERENCODING_GB18030			((SLuint32) 0x00000008)
7209c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_CHARACTERENCODING_GBK				((SLuint32) 0x00000009)
7219c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_CHARACTERENCODING_IMAPUTF7			((SLuint32) 0x0000000A)
7229c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_CHARACTERENCODING_ISO2022JP			((SLuint32) 0x0000000B)
7239c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_CHARACTERENCODING_ISO2022JP1		((SLuint32) 0x0000000B)
7249c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_CHARACTERENCODING_ISO88591			((SLuint32) 0x0000000C)
7259c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_CHARACTERENCODING_ISO885910			((SLuint32) 0x0000000D)
7269c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_CHARACTERENCODING_ISO885913			((SLuint32) 0x0000000E)
7279c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_CHARACTERENCODING_ISO885914			((SLuint32) 0x0000000F)
7289c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_CHARACTERENCODING_ISO885915			((SLuint32) 0x00000010)
7299c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_CHARACTERENCODING_ISO88592			((SLuint32) 0x00000011)
7309c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_CHARACTERENCODING_ISO88593			((SLuint32) 0x00000012)
7319c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_CHARACTERENCODING_ISO88594			((SLuint32) 0x00000013)
7329c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_CHARACTERENCODING_ISO88595			((SLuint32) 0x00000014)
7339c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_CHARACTERENCODING_ISO88596			((SLuint32) 0x00000015)
7349c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_CHARACTERENCODING_ISO88597			((SLuint32) 0x00000016)
7359c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_CHARACTERENCODING_ISO88598			((SLuint32) 0x00000017)
7369c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_CHARACTERENCODING_ISO88599			((SLuint32) 0x00000018)
7379c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_CHARACTERENCODING_ISOEUCJP			((SLuint32) 0x00000019)
7389c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_CHARACTERENCODING_SHIFTJIS			((SLuint32) 0x0000001A)
7399c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_CHARACTERENCODING_SMS7BIT			((SLuint32) 0x0000001B)
7409c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_CHARACTERENCODING_UTF7			((SLuint32) 0x0000001C)
7419c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_CHARACTERENCODING_UTF8			((SLuint32) 0x0000001D)
7429c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_CHARACTERENCODING_JAVACONFORMANTUTF8	((SLuint32) 0x0000001E)
7439c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_CHARACTERENCODING_UTF16BE			((SLuint32) 0x0000001F)
7449c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_CHARACTERENCODING_UTF16LE			((SLuint32) 0x00000020)
7459c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
7469c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
7479c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_METADATA_FILTER_KEY		((SLuint8) 0x01)
7489c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_METADATA_FILTER_LANG		((SLuint8) 0x02)
7499c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_METADATA_FILTER_ENCODING	((SLuint8) 0x04)
7509c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
7519c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
7529c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastentypedef struct SLMetadataInfo_ {
7539c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten    SLuint32     size;
7549c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten    SLuint32     encoding;
7559c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten    SLchar       langCountry[16];
7569c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten    SLuint8      data[1];
7579c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten} SLMetadataInfo;
7589c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
759ebc8fd365b402e498d499fa8737a7591c290347cGlenn Kastenextern SL_API const SLInterfaceID SL_IID_METADATAEXTRACTION;
7609c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
7619c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastenstruct SLMetadataExtractionItf_;
7629c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastentypedef const struct SLMetadataExtractionItf_ * const * SLMetadataExtractionItf;
7639c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
7649c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
7659c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastenstruct SLMetadataExtractionItf_ {
7669c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*GetItemCount) (
7679c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLMetadataExtractionItf self,
7689c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint32 *pItemCount
7699c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
7709c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*GetKeySize) (
7719c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLMetadataExtractionItf self,
7729c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint32 index,
7739c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint32 *pKeySize
7749c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
7759c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*GetKey) (
7769c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLMetadataExtractionItf self,
7779c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint32 index,
7789c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint32 keySize,
7799c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLMetadataInfo *pKey
7809c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
7819c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*GetValueSize) (
7829c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLMetadataExtractionItf self,
7839c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint32 index,
7849c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint32 *pValueSize
7859c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
7869c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*GetValue) (
7879c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLMetadataExtractionItf self,
7889c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint32 index,
7899c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint32 valueSize,
7909c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLMetadataInfo *pValue
7919c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
7929c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*AddKeyFilter) (
7939c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLMetadataExtractionItf self,
7949c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint32 keySize,
7959c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		const void *pKey,
7969c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint32 keyEncoding,
7979c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		const SLchar *pValueLangCountry,
7989c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint32 valueEncoding,
7999c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint8 filterMask
8009c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
8019c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*ClearKeyFilter) (
8029c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLMetadataExtractionItf self
8039c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
8049c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten};
8059c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
8069c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
8079c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/*---------------------------------------------------------------------------*/
8089c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/* Meta data traversal related types and interface                          */
8099c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/*---------------------------------------------------------------------------*/
8109c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
8119c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_METADATATRAVERSALMODE_ALL	((SLuint32) 0x00000001)
8129c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_METADATATRAVERSALMODE_NODE	((SLuint32) 0x00000002)
8139c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
8149c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
8159c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_NODETYPE_UNSPECIFIED	((SLuint32) 0x00000001)
8169c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_NODETYPE_AUDIO		((SLuint32) 0x00000002)
8179c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_NODETYPE_VIDEO		((SLuint32) 0x00000003)
8189c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_NODETYPE_IMAGE		((SLuint32) 0x00000004)
8199c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
8209c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_NODE_PARENT 0xFFFFFFFF
8219c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
822ebc8fd365b402e498d499fa8737a7591c290347cGlenn Kastenextern SL_API const SLInterfaceID SL_IID_METADATATRAVERSAL;
8239c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
8249c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastenstruct SLMetadataTraversalItf_;
8259c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastentypedef const struct SLMetadataTraversalItf_ * const * SLMetadataTraversalItf;
8269c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
8279c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastenstruct SLMetadataTraversalItf_ {
8289c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*SetMode) (
8299c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLMetadataTraversalItf self,
8309c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint32 mode
8319c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
8329c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*GetChildCount) (
8339c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLMetadataTraversalItf self,
8349c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint32 *pCount
8359c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
8369c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*GetChildMIMETypeSize) (
8379c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLMetadataTraversalItf self,
8389c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint32 index,
8399c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint32 *pSize
8409c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
8419c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*GetChildInfo) (
8429c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLMetadataTraversalItf self,
8439c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint32 index,
8449c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLint32 *pNodeID,
8459c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint32 *pType,
8469c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint32 size,
8479c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLchar *pMimeType
8489c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
8499c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*SetActiveNode) (
8509c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLMetadataTraversalItf self,
8519c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint32 index
8529c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
8539c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten};
8549c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
8559c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/*---------------------------------------------------------------------------*/
8569c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/* Dynamic Source types and interface                                        */
8579c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/*---------------------------------------------------------------------------*/
8589c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
859ebc8fd365b402e498d499fa8737a7591c290347cGlenn Kastenextern SL_API const SLInterfaceID SL_IID_DYNAMICSOURCE;
8609c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
8619c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastenstruct SLDynamicSourceItf_;
8629c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastentypedef const struct SLDynamicSourceItf_ * const * SLDynamicSourceItf;
8639c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
8649c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastenstruct SLDynamicSourceItf_ {
8659c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*SetSource) (
8669c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLDynamicSourceItf self,
8679c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLDataSource *pDataSource
8689c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
8699c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten};
8709c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
8719c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/*---------------------------------------------------------------------------*/
8729c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/* Output Mix interface                                                      */
8739c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/*---------------------------------------------------------------------------*/
8749c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
875ebc8fd365b402e498d499fa8737a7591c290347cGlenn Kastenextern SL_API const SLInterfaceID SL_IID_OUTPUTMIX;
8769c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
8779c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastenstruct SLOutputMixItf_;
8789c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastentypedef const struct SLOutputMixItf_ * const * SLOutputMixItf;
8799c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
880ebc8fd365b402e498d499fa8737a7591c290347cGlenn Kastentypedef void (SLAPIENTRY *slMixDeviceChangeCallback) (
8819c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLOutputMixItf caller,
8829c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten    void *pContext
8839c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten);
8849c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
8859c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
8869c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastenstruct SLOutputMixItf_ {
8879c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*GetDestinationOutputDeviceIDs) (
8889c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLOutputMixItf self,
8899c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLint32 *pNumDevices,
8909c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint32 *pDeviceIDs
8919c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
8929c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*RegisterDeviceChangeCallback) (
8939c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLOutputMixItf self,
8949c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		slMixDeviceChangeCallback callback,
8959c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		void *pContext
8969c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten    );
8979c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten    SLresult (*ReRoute)(
8989c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten        SLOutputMixItf self,
8999c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten        SLint32 numOutputDevices,
9009c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten        SLuint32 *pOutputDeviceIDs
9019c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten    );
9029c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten};
9039c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
9049c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
9059c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/*---------------------------------------------------------------------------*/
9069c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/* Playback interface                                                        */
9079c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/*---------------------------------------------------------------------------*/
9089c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
9099c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/** Playback states */
9109c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_PLAYSTATE_STOPPED	((SLuint32) 0x00000001)
9119c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_PLAYSTATE_PAUSED	((SLuint32) 0x00000002)
9129c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_PLAYSTATE_PLAYING	((SLuint32) 0x00000003)
9139c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
9149c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/** Play events **/
9159c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_PLAYEVENT_HEADATEND		((SLuint32) 0x00000001)
9169c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_PLAYEVENT_HEADATMARKER	((SLuint32) 0x00000002)
9179c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_PLAYEVENT_HEADATNEWPOS	((SLuint32) 0x00000004)
9189c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_PLAYEVENT_HEADMOVING		((SLuint32) 0x00000008)
91929ecc091f988ce8e6d95296a5f47377007ad77feGlenn Kasten#define SL_PLAYEVENT_HEADSTALLED	((SLuint32) 0x00000010)
9209c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
9219c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_TIME_UNKNOWN	((SLuint32) 0xFFFFFFFF)
9229c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
9239c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
924ebc8fd365b402e498d499fa8737a7591c290347cGlenn Kastenextern SL_API const SLInterfaceID SL_IID_PLAY;
9259c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
9269c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/** Playback interface methods */
9279c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
9289c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastenstruct SLPlayItf_;
9299c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastentypedef const struct SLPlayItf_ * const * SLPlayItf;
9309c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
931ebc8fd365b402e498d499fa8737a7591c290347cGlenn Kastentypedef void (SLAPIENTRY *slPlayCallback) (
9329c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLPlayItf caller,
9339c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	void *pContext,
9349c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLuint32 event
9359c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten);
9369c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
9379c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastenstruct SLPlayItf_ {
9389c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*SetPlayState) (
9399c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLPlayItf self,
9409c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint32 state
9419c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
9429c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*GetPlayState) (
9439c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLPlayItf self,
9449c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint32 *pState
9459c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
9469c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*GetDuration) (
9479c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLPlayItf self,
9489c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLmillisecond *pMsec
9499c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
9509c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*GetPosition) (
9519c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLPlayItf self,
9529c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLmillisecond *pMsec
9539c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
9549c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*RegisterCallback) (
9559c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLPlayItf self,
9569c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		slPlayCallback callback,
9579c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		void *pContext
9589c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
9599c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*SetCallbackEventsMask) (
9609c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLPlayItf self,
9619c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint32 eventFlags
9629c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
9639c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*GetCallbackEventsMask) (
9649c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLPlayItf self,
9659c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint32 *pEventFlags
9669c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
9679c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*SetMarkerPosition) (
9689c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLPlayItf self,
9699c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLmillisecond mSec
9709c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
9719c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*ClearMarkerPosition) (
9729c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLPlayItf self
9739c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
9749c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*GetMarkerPosition) (
9759c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLPlayItf self,
9769c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLmillisecond *pMsec
9779c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
9789c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*SetPositionUpdatePeriod) (
9799c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLPlayItf self,
9809c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLmillisecond mSec
9819c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
9829c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*GetPositionUpdatePeriod) (
9839c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLPlayItf self,
9849c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLmillisecond *pMsec
9859c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
9869c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten};
9879c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
9889c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/*---------------------------------------------------------------------------*/
9899c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/* Prefetch status interface                                                 */
9909c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/*---------------------------------------------------------------------------*/
9919c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
9929c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_PREFETCHEVENT_STATUSCHANGE		((SLuint32) 0x00000001)
9939c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_PREFETCHEVENT_FILLLEVELCHANGE	((SLuint32) 0x00000002)
9949c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
9959c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_PREFETCHSTATUS_UNDERFLOW		((SLuint32) 0x00000001)
9969c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_PREFETCHSTATUS_SUFFICIENTDATA	((SLuint32) 0x00000002)
9979c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_PREFETCHSTATUS_OVERFLOW		((SLuint32) 0x00000003)
9989c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
9999c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
1000ebc8fd365b402e498d499fa8737a7591c290347cGlenn Kastenextern SL_API const SLInterfaceID SL_IID_PREFETCHSTATUS;
10019c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
10029c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
10039c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/** Prefetch status interface methods */
10049c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
10059c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastenstruct SLPrefetchStatusItf_;
10069c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastentypedef const struct SLPrefetchStatusItf_ * const * SLPrefetchStatusItf;
10079c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
1008ebc8fd365b402e498d499fa8737a7591c290347cGlenn Kastentypedef void (SLAPIENTRY *slPrefetchCallback) (
10099c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLPrefetchStatusItf caller,
10109c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	void *pContext,
10119c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLuint32 event
10129c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten);
10139c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
10149c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastenstruct SLPrefetchStatusItf_ {
10159c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*GetPrefetchStatus) (
10169c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLPrefetchStatusItf self,
10179c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint32 *pStatus
10189c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
10199c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*GetFillLevel) (
10209c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLPrefetchStatusItf self,
10219c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLpermille *pLevel
10229c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
10239c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*RegisterCallback) (
10249c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLPrefetchStatusItf self,
10259c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		slPrefetchCallback callback,
10269c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		void *pContext
10279c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
10289c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*SetCallbackEventsMask) (
10299c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLPrefetchStatusItf self,
10309c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint32 eventFlags
10319c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
10329c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*GetCallbackEventsMask) (
10339c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLPrefetchStatusItf self,
10349c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint32 *pEventFlags
10359c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
10369c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*SetFillUpdatePeriod) (
10379c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLPrefetchStatusItf self,
10389c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLpermille period
10399c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
10409c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*GetFillUpdatePeriod) (
10419c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLPrefetchStatusItf self,
10429c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLpermille *pPeriod
10439c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
10449c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten};
10459c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
10469c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/*---------------------------------------------------------------------------*/
10479c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/* Playback Rate interface                                                   */
10489c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/*---------------------------------------------------------------------------*/
10499c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
10509c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_RATEPROP_RESERVED1		  		((SLuint32) 0x00000001)
10519c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_RATEPROP_RESERVED2		  		((SLuint32) 0x00000002)
10529c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_RATEPROP_SILENTAUDIO				((SLuint32) 0x00000100)
10539c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_RATEPROP_STAGGEREDAUDIO	((SLuint32) 0x00000200)
10549c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_RATEPROP_NOPITCHCORAUDIO	((SLuint32) 0x00000400)
10559c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_RATEPROP_PITCHCORAUDIO	((SLuint32) 0x00000800)
10569c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
10579c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
1058ebc8fd365b402e498d499fa8737a7591c290347cGlenn Kastenextern SL_API const SLInterfaceID SL_IID_PLAYBACKRATE;
10599c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
10609c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastenstruct SLPlaybackRateItf_;
10619c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastentypedef const struct SLPlaybackRateItf_ * const * SLPlaybackRateItf;
10629c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
10639c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastenstruct SLPlaybackRateItf_ {
10649c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*SetRate)(
10659c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLPlaybackRateItf self,
10669c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLpermille rate
10679c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
10689c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*GetRate)(
10699c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLPlaybackRateItf self,
10709c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLpermille *pRate
10719c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
10729c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*SetPropertyConstraints)(
10739c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLPlaybackRateItf self,
10749c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint32 constraints
10759c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
10769c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*GetProperties)(
10779c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLPlaybackRateItf self,
10789c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint32 *pProperties
10799c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
10809c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*GetCapabilitiesOfRate)(
10819c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLPlaybackRateItf self,
10829c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLpermille rate,
10839c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint32 *pCapabilities
10849c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
10859c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*GetRateRange) (
10869c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLPlaybackRateItf self,
10879c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint8 index,
10889c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLpermille *pMinRate,
10899c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLpermille *pMaxRate,
10909c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLpermille *pStepSize,
10919c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint32 *pCapabilities
10929c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
10939c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten};
10949c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
10959c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/*---------------------------------------------------------------------------*/
10969c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/* Seek Interface                                                            */
10979c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/*---------------------------------------------------------------------------*/
10989c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
109929ecc091f988ce8e6d95296a5f47377007ad77feGlenn Kasten#define SL_SEEKMODE_FAST		((SLuint32) 0x0001)
110029ecc091f988ce8e6d95296a5f47377007ad77feGlenn Kasten#define SL_SEEKMODE_ACCURATE	((SLuint32) 0x0002)
11019c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
1102ebc8fd365b402e498d499fa8737a7591c290347cGlenn Kastenextern SL_API const SLInterfaceID SL_IID_SEEK;
11039c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
11049c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastenstruct SLSeekItf_;
11059c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastentypedef const struct SLSeekItf_ * const * SLSeekItf;
11069c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
11079c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastenstruct SLSeekItf_ {
11089c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*SetPosition)(
11099c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLSeekItf self,
11109c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLmillisecond pos,
11119c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint32 seekMode
11129c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
11139c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*SetLoop)(
11149c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLSeekItf self,
11159c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLboolean loopEnable,
11169c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLmillisecond startPos,
11179c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLmillisecond endPos
11189c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
11199c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*GetLoop)(
11209c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLSeekItf self,
11219c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLboolean *pLoopEnabled,
11229c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLmillisecond *pStartPos,
11239c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLmillisecond *pEndPos
11249c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
11259c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten};
11269c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
11279c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/*---------------------------------------------------------------------------*/
11289c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/* Standard Recording Interface                                              */
11299c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/*---------------------------------------------------------------------------*/
11309c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
11319c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/** Recording states */
11329c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_RECORDSTATE_STOPPED 	((SLuint32) 0x00000001)
11339c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_RECORDSTATE_PAUSED	((SLuint32) 0x00000002)
11349c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_RECORDSTATE_RECORDING	((SLuint32) 0x00000003)
11359c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
11369c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
11379c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/** Record event **/
11389c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_RECORDEVENT_HEADATLIMIT	((SLuint32) 0x00000001)
11399c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_RECORDEVENT_HEADATMARKER	((SLuint32) 0x00000002)
11409c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_RECORDEVENT_HEADATNEWPOS	((SLuint32) 0x00000004)
11419c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_RECORDEVENT_HEADMOVING	((SLuint32) 0x00000008)
11429c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_RECORDEVENT_HEADSTALLED 	((SLuint32) 0x00000010)
114329ecc091f988ce8e6d95296a5f47377007ad77feGlenn Kasten/* Note: SL_RECORDEVENT_BUFFER_INSUFFICIENT is deprecated, use SL_RECORDEVENT_BUFFER_FULL instead. */
114429ecc091f988ce8e6d95296a5f47377007ad77feGlenn Kasten#define SL_RECORDEVENT_BUFFER_INSUFFICIENT      ((SLuint32) 0x00000020)
114529ecc091f988ce8e6d95296a5f47377007ad77feGlenn Kasten#define SL_RECORDEVENT_BUFFER_FULL	((SLuint32) 0x00000020)
11469c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
11479c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
1148ebc8fd365b402e498d499fa8737a7591c290347cGlenn Kastenextern SL_API const SLInterfaceID SL_IID_RECORD;
11499c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
11509c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastenstruct SLRecordItf_;
11519c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastentypedef const struct SLRecordItf_ * const * SLRecordItf;
11529c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
1153ebc8fd365b402e498d499fa8737a7591c290347cGlenn Kastentypedef void (SLAPIENTRY *slRecordCallback) (
11549c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLRecordItf caller,
11559c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	void *pContext,
11569c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLuint32 event
11579c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten);
11589c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
11599c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/** Recording interface methods */
11609c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastenstruct SLRecordItf_ {
11619c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*SetRecordState) (
11629c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLRecordItf self,
11639c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint32 state
11649c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
11659c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*GetRecordState) (
11669c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLRecordItf self,
11679c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint32 *pState
11689c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
11699c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*SetDurationLimit) (
11709c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLRecordItf self,
11719c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLmillisecond msec
11729c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
11739c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*GetPosition) (
11749c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLRecordItf self,
11759c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLmillisecond *pMsec
11769c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
11779c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*RegisterCallback) (
11789c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLRecordItf self,
11799c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		slRecordCallback callback,
11809c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		void *pContext
11819c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
11829c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*SetCallbackEventsMask) (
11839c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLRecordItf self,
11849c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint32 eventFlags
11859c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
11869c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*GetCallbackEventsMask) (
11879c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLRecordItf self,
11889c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint32 *pEventFlags
11899c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
11909c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*SetMarkerPosition) (
11919c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLRecordItf self,
11929c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLmillisecond mSec
11939c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
11949c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*ClearMarkerPosition) (
11959c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLRecordItf self
11969c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
11979c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*GetMarkerPosition) (
11989c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLRecordItf self,
11999c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLmillisecond *pMsec
12009c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
12019c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*SetPositionUpdatePeriod) (
12029c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLRecordItf self,
12039c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLmillisecond mSec
12049c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
12059c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*GetPositionUpdatePeriod) (
12069c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLRecordItf self,
12079c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLmillisecond *pMsec
12089c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
12099c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten};
12109c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
12119c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/*---------------------------------------------------------------------------*/
12129c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/* Equalizer interface                                                       */
12139c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/*---------------------------------------------------------------------------*/
12149c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
12159c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_EQUALIZER_UNDEFINED				((SLuint16) 0xFFFF)
12169c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
1217ebc8fd365b402e498d499fa8737a7591c290347cGlenn Kastenextern SL_API const SLInterfaceID SL_IID_EQUALIZER;
12189c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
12199c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastenstruct SLEqualizerItf_;
12209c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastentypedef const struct SLEqualizerItf_ * const * SLEqualizerItf;
12219c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
12229c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastenstruct SLEqualizerItf_ {
12239c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*SetEnabled)(
12249c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLEqualizerItf self,
12259c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLboolean enabled
12269c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
12279c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*IsEnabled)(
12289c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLEqualizerItf self,
12299c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLboolean *pEnabled
12309c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
12319c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*GetNumberOfBands)(
12329c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLEqualizerItf self,
12339c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint16 *pAmount
12349c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
12359c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*GetBandLevelRange)(
12369c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLEqualizerItf self,
12379c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLmillibel *pMin,
12389c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLmillibel *pMax
12399c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
12409c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*SetBandLevel)(
12419c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLEqualizerItf self,
12429c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint16 band,
12439c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLmillibel level
12449c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
12459c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*GetBandLevel)(
12469c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLEqualizerItf self,
12479c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint16 band,
12489c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLmillibel *pLevel
12499c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
12509c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*GetCenterFreq)(
12519c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLEqualizerItf self,
12529c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint16 band,
12539c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLmilliHertz *pCenter
12549c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
12559c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*GetBandFreqRange)(
12569c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLEqualizerItf self,
12579c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint16 band,
12589c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLmilliHertz *pMin,
12599c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLmilliHertz *pMax
12609c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
12619c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*GetBand)(
12629c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLEqualizerItf self,
12639c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLmilliHertz frequency,
12649c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint16 *pBand
12659c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
12669c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*GetCurrentPreset)(
12679c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLEqualizerItf self,
12689c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint16 *pPreset
12699c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
12709c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*UsePreset)(
12719c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLEqualizerItf self,
12729c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint16 index
12739c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
12749c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*GetNumberOfPresets)(
12759c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLEqualizerItf self,
12769c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint16 *pNumPresets
12779c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
12789c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*GetPresetName)(
12799c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLEqualizerItf self,
12809c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint16 index,
12819c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		const SLchar ** ppName
12829c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
12839c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten};
12849c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
12859c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/*---------------------------------------------------------------------------*/
12869c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/* Volume Interface                                                           */
12879c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/* --------------------------------------------------------------------------*/
12889c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
1289ebc8fd365b402e498d499fa8737a7591c290347cGlenn Kastenextern SL_API const SLInterfaceID SL_IID_VOLUME;
12909c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
12919c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastenstruct SLVolumeItf_;
12929c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastentypedef const struct SLVolumeItf_ * const * SLVolumeItf;
12939c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
12949c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastenstruct SLVolumeItf_ {
12959c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*SetVolumeLevel) (
12969c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLVolumeItf self,
12979c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLmillibel level
12989c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
12999c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*GetVolumeLevel) (
13009c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLVolumeItf self,
13019c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLmillibel *pLevel
13029c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
13039c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*GetMaxVolumeLevel) (
13049c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLVolumeItf  self,
13059c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLmillibel *pMaxLevel
13069c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
13079c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*SetMute) (
13089c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLVolumeItf self,
13099c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLboolean mute
13109c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
13119c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*GetMute) (
13129c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLVolumeItf self,
13139c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLboolean *pMute
13149c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
13159c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*EnableStereoPosition) (
13169c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLVolumeItf self,
13179c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLboolean enable
13189c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
13199c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*IsEnabledStereoPosition) (
13209c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLVolumeItf self,
13219c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLboolean *pEnable
13229c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
13239c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*SetStereoPosition) (
13249c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLVolumeItf self,
13259c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLpermille stereoPosition
13269c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
13279c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*GetStereoPosition) (
13289c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLVolumeItf self,
13299c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLpermille *pStereoPosition
13309c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
13319c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten};
13329c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
13339c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
13349c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/*---------------------------------------------------------------------------*/
13359c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/* Device Volume Interface                                                   */
13369c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/* --------------------------------------------------------------------------*/
13379c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
1338ebc8fd365b402e498d499fa8737a7591c290347cGlenn Kastenextern SL_API const SLInterfaceID SL_IID_DEVICEVOLUME;
13399c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
13409c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastenstruct SLDeviceVolumeItf_;
13419c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastentypedef const struct SLDeviceVolumeItf_ * const * SLDeviceVolumeItf;
13429c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
13439c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastenstruct SLDeviceVolumeItf_ {
13449c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*GetVolumeScale) (
13459c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLDeviceVolumeItf self,
13469c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint32 deviceID,
13479c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLint32 *pMinValue,
13489c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLint32 *pMaxValue,
13499c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLboolean *pIsMillibelScale
13509c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
13519c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*SetVolume) (
13529c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLDeviceVolumeItf self,
13539c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint32 deviceID,
13549c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLint32 volume
13559c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
13569c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*GetVolume) (
13579c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLDeviceVolumeItf self,
13589c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint32 deviceID,
13599c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLint32 *pVolume
13609c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
13619c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten};
13629c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
13639c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
13649c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/*---------------------------------------------------------------------------*/
13659c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/* Buffer Queue Interface                                                    */
13669c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/*---------------------------------------------------------------------------*/
13679c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
1368ebc8fd365b402e498d499fa8737a7591c290347cGlenn Kastenextern SL_API const SLInterfaceID SL_IID_BUFFERQUEUE;
13699c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
13709c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastenstruct SLBufferQueueItf_;
13719c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastentypedef const struct SLBufferQueueItf_ * const * SLBufferQueueItf;
13729c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
1373ebc8fd365b402e498d499fa8737a7591c290347cGlenn Kastentypedef void (SLAPIENTRY *slBufferQueueCallback)(
13749c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLBufferQueueItf caller,
13759c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	void *pContext
13769c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten);
13779c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
13789c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/** Buffer queue state **/
13799c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
13809c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastentypedef struct SLBufferQueueState_ {
13819c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLuint32	count;
13829c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLuint32	playIndex;
13839c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten} SLBufferQueueState;
13849c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
13859c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
13869c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastenstruct SLBufferQueueItf_ {
13879c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*Enqueue) (
13889c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLBufferQueueItf self,
13899c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		const void *pBuffer,
13909c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint32 size
13919c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
13929c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*Clear) (
13939c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLBufferQueueItf self
13949c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
13959c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*GetState) (
13969c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLBufferQueueItf self,
13979c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLBufferQueueState *pState
13989c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
13999c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*RegisterCallback) (
14009c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLBufferQueueItf self,
14019c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		slBufferQueueCallback callback,
14029c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		void* pContext
14039c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
14049c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten};
14059c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
14069c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
14079c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/*---------------------------------------------------------------------------*/
14089c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/* PresetReverb                                                              */
14099c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/*---------------------------------------------------------------------------*/
14109c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
14119c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_REVERBPRESET_NONE		((SLuint16) 0x0000)
14129c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_REVERBPRESET_SMALLROOM	((SLuint16) 0x0001)
14139c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_REVERBPRESET_MEDIUMROOM	((SLuint16) 0x0002)
14149c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_REVERBPRESET_LARGEROOM	((SLuint16) 0x0003)
14159c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_REVERBPRESET_MEDIUMHALL	((SLuint16) 0x0004)
14169c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_REVERBPRESET_LARGEHALL	((SLuint16) 0x0005)
14179c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_REVERBPRESET_PLATE 		((SLuint16) 0x0006)
14189c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
14199c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
1420ebc8fd365b402e498d499fa8737a7591c290347cGlenn Kastenextern SL_API const SLInterfaceID SL_IID_PRESETREVERB;
14219c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
14229c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastenstruct SLPresetReverbItf_;
14239c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastentypedef const struct SLPresetReverbItf_ * const * SLPresetReverbItf;
14249c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
14259c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastenstruct SLPresetReverbItf_ {
14269c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*SetPreset) (
14279c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLPresetReverbItf self,
14289c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint16 preset
14299c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
14309c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*GetPreset) (
14319c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLPresetReverbItf self,
14329c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint16 *pPreset
14339c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
14349c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten};
14359c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
14369c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
14379c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/*---------------------------------------------------------------------------*/
14389c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/* EnvironmentalReverb                                                       */
14399c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/*---------------------------------------------------------------------------*/
14409c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
14419c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_I3DL2_ENVIRONMENT_PRESET_DEFAULT \
14429c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	{ SL_MILLIBEL_MIN,    0,  1000,   500, SL_MILLIBEL_MIN,  20, SL_MILLIBEL_MIN,  40, 1000,1000 }
14439c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_I3DL2_ENVIRONMENT_PRESET_GENERIC \
14449c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	{ -1000, -100, 1490,  830, -2602,   7,   200,  11, 1000,1000 }
14459c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_I3DL2_ENVIRONMENT_PRESET_PADDEDCELL \
14469c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	{ -1000,-6000,  170,  100, -1204,   1,   207,   2, 1000,1000 }
14479c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_I3DL2_ENVIRONMENT_PRESET_ROOM \
14489c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	{ -1000, -454,  400,  830, -1646,   2,    53,   3, 1000,1000 }
14499c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_I3DL2_ENVIRONMENT_PRESET_BATHROOM \
14509c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	{ -1000,-1200, 1490,  540,  -370,   7,  1030,  11, 1000, 600 }
14519c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_I3DL2_ENVIRONMENT_PRESET_LIVINGROOM \
14529c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	{ -1000,-6000,  500,  100, -1376,   3, -1104,   4, 1000,1000 }
14539c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_I3DL2_ENVIRONMENT_PRESET_STONEROOM \
14549c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	{ -1000, -300, 2310,  640,  -711,  12,    83,  17, 1000,1000 }
14559c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_I3DL2_ENVIRONMENT_PRESET_AUDITORIUM \
14569c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	{ -1000, -476, 4320,  590,  -789,  20,  -289,  30, 1000,1000 }
14579c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_I3DL2_ENVIRONMENT_PRESET_CONCERTHALL \
14589c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	{ -1000, -500, 3920,  700, -1230,  20,    -2,  29, 1000,1000 }
14599c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_I3DL2_ENVIRONMENT_PRESET_CAVE \
14609c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	{ -1000,    0, 2910, 1300,  -602,  15,  -302,  22, 1000,1000 }
14619c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_I3DL2_ENVIRONMENT_PRESET_ARENA \
14629c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	{ -1000, -698, 7240,  330, -1166,  20,    16,  30, 1000,1000 }
14639c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_I3DL2_ENVIRONMENT_PRESET_HANGAR \
14649c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	{ -1000,-1000, 10050,  230,  -602,  20,   198,  30, 1000,1000 }
14659c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_I3DL2_ENVIRONMENT_PRESET_CARPETEDHALLWAY \
14669c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	{ -1000,-4000,  300,  100, -1831,   2, -1630,  30, 1000,1000 }
14679c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_I3DL2_ENVIRONMENT_PRESET_HALLWAY \
14689c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	{ -1000, -300, 1490,  590, -1219,   7,   441,  11, 1000,1000 }
14699c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_I3DL2_ENVIRONMENT_PRESET_STONECORRIDOR \
14709c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	{ -1000, -237, 2700,  790, -1214,  13,   395,  20, 1000,1000 }
14719c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_I3DL2_ENVIRONMENT_PRESET_ALLEY \
14729c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	{ -1000, -270, 1490,  860, -1204,   7,    -4,  11, 1000,1000 }
14739c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_I3DL2_ENVIRONMENT_PRESET_FOREST \
14749c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	{ -1000,-3300, 1490,  540, -2560, 162,  -613,  88,  790,1000 }
14759c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_I3DL2_ENVIRONMENT_PRESET_CITY \
14769c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	{ -1000, -800, 1490,  670, -2273,   7, -2217,  11,  500,1000 }
14779c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_I3DL2_ENVIRONMENT_PRESET_MOUNTAINS \
14789c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	{ -1000,-2500, 1490,  210, -2780, 300, -2014, 100,  270,1000 }
14799c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_I3DL2_ENVIRONMENT_PRESET_QUARRY \
14809c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	{ -1000,-1000, 1490,  830, SL_MILLIBEL_MIN,  61,   500,  25, 1000,1000 }
14819c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_I3DL2_ENVIRONMENT_PRESET_PLAIN \
14829c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	{ -1000,-2000, 1490,  500, -2466, 179, -2514, 100,  210,1000 }
14839c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_I3DL2_ENVIRONMENT_PRESET_PARKINGLOT \
14849c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	{ -1000,    0, 1650, 1500, -1363,   8, -1153,  12, 1000,1000 }
14859c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_I3DL2_ENVIRONMENT_PRESET_SEWERPIPE \
14869c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	{ -1000,-1000, 2810,  140,   429,  14,   648,  21,  800, 600 }
14879c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_I3DL2_ENVIRONMENT_PRESET_UNDERWATER \
14889c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	{ -1000,-4000, 1490,  100,  -449,   7,  1700,  11, 1000,1000 }
14899c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_I3DL2_ENVIRONMENT_PRESET_SMALLROOM \
14909c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	{ -1000,-600, 1100, 830, -400, 5, 500, 10, 1000, 1000 }
14919c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_I3DL2_ENVIRONMENT_PRESET_MEDIUMROOM \
14929c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	{ -1000,-600, 1300, 830, -1000, 20, -200, 20, 1000, 1000 }
14939c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_I3DL2_ENVIRONMENT_PRESET_LARGEROOM \
14949c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	{ -1000,-600, 1500, 830, -1600, 5, -1000, 40, 1000, 1000 }
14959c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_I3DL2_ENVIRONMENT_PRESET_MEDIUMHALL \
14969c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	{ -1000,-600, 1800, 700, -1300, 15, -800, 30, 1000, 1000 }
14979c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_I3DL2_ENVIRONMENT_PRESET_LARGEHALL \
14989c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	{ -1000,-600, 1800, 700, -2000, 30, -1400, 60, 1000, 1000 }
14999c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_I3DL2_ENVIRONMENT_PRESET_PLATE \
15009c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	{ -1000,-200, 1300, 900, 0, 2, 0, 10, 1000, 750 }
15019c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
15029c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
15039c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastentypedef struct SLEnvironmentalReverbSettings_ {
15049c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLmillibel    roomLevel;
15059c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLmillibel    roomHFLevel;
15069c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLmillisecond decayTime;
15079c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLpermille    decayHFRatio;
15089c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLmillibel    reflectionsLevel;
15099c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLmillisecond reflectionsDelay;
15109c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLmillibel    reverbLevel;
15119c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLmillisecond reverbDelay;
15129c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLpermille    diffusion;
15139c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLpermille    density;
15149c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten} SLEnvironmentalReverbSettings;
15159c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
15169c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
15179c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
15189c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
1519ebc8fd365b402e498d499fa8737a7591c290347cGlenn Kastenextern SL_API const SLInterfaceID SL_IID_ENVIRONMENTALREVERB;
15209c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
15219c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
15229c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastenstruct SLEnvironmentalReverbItf_;
15239c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastentypedef const struct SLEnvironmentalReverbItf_ * const * SLEnvironmentalReverbItf;
15249c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
15259c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastenstruct SLEnvironmentalReverbItf_ {
15269c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*SetRoomLevel) (
15279c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLEnvironmentalReverbItf self,
15289c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLmillibel room
15299c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
15309c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*GetRoomLevel) (
15319c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLEnvironmentalReverbItf self,
15329c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLmillibel *pRoom
15339c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
15349c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*SetRoomHFLevel) (
15359c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLEnvironmentalReverbItf self,
15369c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLmillibel roomHF
15379c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
15389c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*GetRoomHFLevel) (
15399c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLEnvironmentalReverbItf self,
15409c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLmillibel *pRoomHF
15419c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
15429c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*SetDecayTime) (
15439c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLEnvironmentalReverbItf self,
15449c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLmillisecond decayTime
15459c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
15469c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*GetDecayTime) (
15479c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLEnvironmentalReverbItf self,
15489c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLmillisecond *pDecayTime
15499c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
15509c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*SetDecayHFRatio) (
15519c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLEnvironmentalReverbItf self,
15529c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLpermille decayHFRatio
15539c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
15549c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*GetDecayHFRatio) (
15559c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLEnvironmentalReverbItf self,
15569c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLpermille *pDecayHFRatio
15579c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
15589c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*SetReflectionsLevel) (
15599c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLEnvironmentalReverbItf self,
15609c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLmillibel reflectionsLevel
15619c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
15629c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*GetReflectionsLevel) (
15639c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLEnvironmentalReverbItf self,
15649c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLmillibel *pReflectionsLevel
15659c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
15669c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*SetReflectionsDelay) (
15679c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLEnvironmentalReverbItf self,
15689c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLmillisecond reflectionsDelay
15699c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
15709c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*GetReflectionsDelay) (
15719c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLEnvironmentalReverbItf self,
15729c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLmillisecond *pReflectionsDelay
15739c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
15749c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*SetReverbLevel) (
15759c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLEnvironmentalReverbItf self,
15769c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLmillibel reverbLevel
15779c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
15789c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*GetReverbLevel) (
15799c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLEnvironmentalReverbItf self,
15809c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLmillibel *pReverbLevel
15819c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
15829c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*SetReverbDelay) (
15839c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLEnvironmentalReverbItf self,
15849c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLmillisecond reverbDelay
15859c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
15869c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*GetReverbDelay) (
15879c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLEnvironmentalReverbItf self,
15889c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLmillisecond *pReverbDelay
15899c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
15909c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*SetDiffusion) (
15919c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLEnvironmentalReverbItf self,
15929c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLpermille diffusion
15939c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
15949c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*GetDiffusion) (
15959c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLEnvironmentalReverbItf self,
15969c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLpermille *pDiffusion
15979c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
15989c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*SetDensity) (
15999c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLEnvironmentalReverbItf self,
16009c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLpermille density
16019c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
16029c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*GetDensity) (
16039c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLEnvironmentalReverbItf self,
16049c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLpermille *pDensity
16059c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
16069c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*SetEnvironmentalReverbProperties) (
16079c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLEnvironmentalReverbItf self,
16089c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		const SLEnvironmentalReverbSettings *pProperties
16099c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
16109c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*GetEnvironmentalReverbProperties) (
16119c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLEnvironmentalReverbItf self,
16129c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLEnvironmentalReverbSettings *pProperties
16139c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
16149c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten};
16159c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
16169c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/*---------------------------------------------------------------------------*/
16179c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/* Effects Send Interface                                                    */
16189c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/*---------------------------------------------------------------------------*/
16199c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
16209c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
1621ebc8fd365b402e498d499fa8737a7591c290347cGlenn Kastenextern SL_API const SLInterfaceID SL_IID_EFFECTSEND;
16229c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
16239c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastenstruct SLEffectSendItf_;
16249c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastentypedef const struct SLEffectSendItf_ * const * SLEffectSendItf;
16259c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
16269c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastenstruct SLEffectSendItf_ {
16279c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*EnableEffectSend) (
16289c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLEffectSendItf self,
16299c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		const void *pAuxEffect,
16309c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLboolean enable,
16319c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLmillibel initialLevel
16329c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
16339c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*IsEnabled) (
16349c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLEffectSendItf self,
16359c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		const void * pAuxEffect,
16369c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLboolean *pEnable
16379c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
16389c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*SetDirectLevel) (
16399c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLEffectSendItf self,
16409c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLmillibel directLevel
16419c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
16429c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*GetDirectLevel) (
16439c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLEffectSendItf self,
16449c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLmillibel *pDirectLevel
16459c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
16469c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*SetSendLevel) (
16479c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLEffectSendItf self,
16489c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		const void *pAuxEffect,
16499c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLmillibel sendLevel
16509c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
16519c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*GetSendLevel)(
16529c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLEffectSendItf self,
16539c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		const void *pAuxEffect,
16549c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLmillibel *pSendLevel
16559c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
16569c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten};
16579c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
16589c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
16599c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/*---------------------------------------------------------------------------*/
16609c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/* 3D Grouping Interface                                                     */
16619c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/*---------------------------------------------------------------------------*/
16629c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
16639c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
1664ebc8fd365b402e498d499fa8737a7591c290347cGlenn Kastenextern SL_API const SLInterfaceID SL_IID_3DGROUPING;
16659c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
16669c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
16679c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastenstruct SL3DGroupingItf_ ;
16689c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastentypedef const struct SL3DGroupingItf_ * const * SL3DGroupingItf;
16699c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
16709c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastenstruct SL3DGroupingItf_ {
16719c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*Set3DGroup) (
16729c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SL3DGroupingItf self,
16739c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLObjectItf group
16749c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
16759c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*Get3DGroup) (
16769c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SL3DGroupingItf self,
16779c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLObjectItf *pGroup
16789c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
16799c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten};
16809c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
16819c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
16829c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/*---------------------------------------------------------------------------*/
16839c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/* 3D Commit Interface                                                       */
16849c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/*---------------------------------------------------------------------------*/
16859c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
16869c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
1687ebc8fd365b402e498d499fa8737a7591c290347cGlenn Kastenextern SL_API const SLInterfaceID SL_IID_3DCOMMIT;
16889c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
16899c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastenstruct SL3DCommitItf_;
16909c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastentypedef const struct SL3DCommitItf_* const * SL3DCommitItf;
16919c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
16929c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastenstruct SL3DCommitItf_ {
16939c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*Commit) (
16949c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SL3DCommitItf self
16959c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
16969c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*SetDeferred) (
16979c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SL3DCommitItf self,
16989c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLboolean deferred
16999c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
17009c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten};
17019c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
17029c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
17039c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/*---------------------------------------------------------------------------*/
17049c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/* 3D Location Interface                                                     */
17059c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/*---------------------------------------------------------------------------*/
17069c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
17079c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastentypedef struct SLVec3D_ {
17089c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLint32	x;
17099c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLint32	y;
17109c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLint32	z;
17119c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten} SLVec3D;
17129c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
1713ebc8fd365b402e498d499fa8737a7591c290347cGlenn Kastenextern SL_API const SLInterfaceID SL_IID_3DLOCATION;
17149c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
17159c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastenstruct SL3DLocationItf_;
17169c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastentypedef const struct SL3DLocationItf_ * const * SL3DLocationItf;
17179c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
17189c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastenstruct SL3DLocationItf_ {
17199c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*SetLocationCartesian) (
17209c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SL3DLocationItf self,
17219c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		const SLVec3D *pLocation
17229c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
17239c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*SetLocationSpherical) (
17249c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SL3DLocationItf self,
17259c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLmillidegree azimuth,
17269c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLmillidegree elevation,
17279c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLmillimeter distance
17289c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
17299c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*Move) (
17309c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SL3DLocationItf self,
17319c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		const SLVec3D *pMovement
17329c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
17339c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*GetLocationCartesian) (
17349c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SL3DLocationItf self,
17359c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLVec3D *pLocation
17369c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
17379c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*SetOrientationVectors) (
17389c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SL3DLocationItf self,
17399c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		const SLVec3D *pFront,
17409c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		const SLVec3D *pAbove
17419c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
17429c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*SetOrientationAngles) (
17439c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SL3DLocationItf self,
17449c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLmillidegree heading,
17459c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLmillidegree pitch,
17469c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLmillidegree roll
17479c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
17489c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*Rotate) (
17499c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SL3DLocationItf self,
17509c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLmillidegree theta,
17519c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		const SLVec3D *pAxis
17529c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
17539c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*GetOrientationVectors) (
17549c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SL3DLocationItf self,
17559c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLVec3D *pFront,
17569c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLVec3D *pUp
17579c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
17589c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten};
17599c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
17609c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
17619c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/*---------------------------------------------------------------------------*/
17629c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/* 3D Doppler Interface                                                      */
17639c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/*---------------------------------------------------------------------------*/
17649c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
17659c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
1766ebc8fd365b402e498d499fa8737a7591c290347cGlenn Kastenextern SL_API const SLInterfaceID SL_IID_3DDOPPLER;
17679c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
17689c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastenstruct SL3DDopplerItf_;
17699c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastentypedef const struct SL3DDopplerItf_ * const * SL3DDopplerItf;
17709c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
17719c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastenstruct SL3DDopplerItf_ {
17729c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*SetVelocityCartesian) (
17739c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SL3DDopplerItf self,
17749c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		const SLVec3D *pVelocity
17759c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
17769c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*SetVelocitySpherical) (
17779c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SL3DDopplerItf self,
17789c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLmillidegree azimuth,
17799c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLmillidegree elevation,
17809c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLmillimeter speed
17819c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
17829c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*GetVelocityCartesian) (
17839c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SL3DDopplerItf self,
17849c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLVec3D *pVelocity
17859c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
17869c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*SetDopplerFactor) (
17879c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SL3DDopplerItf self,
17889c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLpermille dopplerFactor
17899c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
17909c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*GetDopplerFactor) (
17919c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SL3DDopplerItf self,
17929c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLpermille *pDopplerFactor
17939c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
17949c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten};
17959c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
17969c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/*---------------------------------------------------------------------------*/
17979c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/* 3D Source Interface and associated defines                                */
17989c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/* --------------------------------------------------------------------------*/
17999c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
18009c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_ROLLOFFMODEL_EXPONENTIAL	((SLuint32) 0x00000000)
18019c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_ROLLOFFMODEL_LINEAR		((SLuint32) 0x00000001)
18029c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
18039c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
1804ebc8fd365b402e498d499fa8737a7591c290347cGlenn Kastenextern SL_API const SLInterfaceID SL_IID_3DSOURCE;
18059c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
18069c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastenstruct SL3DSourceItf_;
18079c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastentypedef const struct SL3DSourceItf_ * const * SL3DSourceItf;
18089c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
18099c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastenstruct SL3DSourceItf_ {
18109c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*SetHeadRelative) (
18119c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SL3DSourceItf self,
18129c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLboolean headRelative
18139c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
18149c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*GetHeadRelative) (
18159c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SL3DSourceItf self,
18169c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLboolean *pHeadRelative
18179c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
18189c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*SetRolloffDistances) (
18199c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SL3DSourceItf self,
18209c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLmillimeter minDistance,
18219c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLmillimeter maxDistance
18229c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
18239c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*GetRolloffDistances) (
18249c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SL3DSourceItf self,
18259c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLmillimeter *pMinDistance,
18269c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLmillimeter *pMaxDistance
18279c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
18289c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*SetRolloffMaxDistanceMute) (
18299c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SL3DSourceItf self,
18309c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLboolean mute
18319c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
18329c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*GetRolloffMaxDistanceMute) (
18339c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SL3DSourceItf self,
18349c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLboolean *pMute
18359c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
18369c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*SetRolloffFactor) (
18379c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SL3DSourceItf self,
18389c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLpermille rolloffFactor
18399c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
18409c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*GetRolloffFactor) (
18419c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SL3DSourceItf self,
18429c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLpermille *pRolloffFactor
18439c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
18449c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*SetRoomRolloffFactor) (
18459c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SL3DSourceItf self,
18469c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLpermille roomRolloffFactor
18479c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
18489c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*GetRoomRolloffFactor) (
18499c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SL3DSourceItf self,
18509c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLpermille *pRoomRolloffFactor
18519c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
18529c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*SetRolloffModel) (
18539c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SL3DSourceItf self,
18549c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint8 model
18559c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
18569c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*GetRolloffModel) (
18579c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SL3DSourceItf self,
18589c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint8 *pModel
18599c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
18609c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*SetCone) (
18619c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SL3DSourceItf self,
18629c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLmillidegree innerAngle,
18639c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLmillidegree outerAngle,
18649c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLmillibel outerLevel
18659c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
18669c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*GetCone) (
18679c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SL3DSourceItf self,
18689c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLmillidegree *pInnerAngle,
18699c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLmillidegree *pOuterAngle,
18709c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLmillibel *pOuterLevel
18719c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
18729c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten};
18739c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
18749c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/*---------------------------------------------------------------------------*/
18759c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/* 3D Macroscopic Interface                                                  */
18769c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/* --------------------------------------------------------------------------*/
18779c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
1878ebc8fd365b402e498d499fa8737a7591c290347cGlenn Kastenextern SL_API const SLInterfaceID SL_IID_3DMACROSCOPIC;
18799c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
18809c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastenstruct SL3DMacroscopicItf_;
18819c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastentypedef const struct SL3DMacroscopicItf_ * const * SL3DMacroscopicItf;
18829c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
18839c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastenstruct SL3DMacroscopicItf_ {
18849c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*SetSize) (
18859c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SL3DMacroscopicItf self,
18869c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLmillimeter width,
18879c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLmillimeter height,
18889c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLmillimeter depth
18899c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
18909c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*GetSize) (
18919c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SL3DMacroscopicItf self,
18929c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLmillimeter *pWidth,
18939c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLmillimeter *pHeight,
18949c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLmillimeter *pDepth
18959c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
18969c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*SetOrientationAngles) (
18979c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SL3DMacroscopicItf self,
18989c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLmillidegree heading,
18999c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLmillidegree pitch,
19009c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLmillidegree roll
19019c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
19029c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*SetOrientationVectors) (
19039c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SL3DMacroscopicItf self,
19049c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		const SLVec3D *pFront,
19059c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		const SLVec3D *pAbove
19069c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
19079c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*Rotate) (
19089c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SL3DMacroscopicItf self,
19099c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLmillidegree theta,
19109c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		const SLVec3D *pAxis
19119c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
19129c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*GetOrientationVectors) (
19139c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SL3DMacroscopicItf self,
19149c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLVec3D *pFront,
19159c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLVec3D *pUp
19169c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
19179c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten};
19189c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
19199c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/*---------------------------------------------------------------------------*/
19209c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/* Mute Solo Interface                                                       */
19219c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/* --------------------------------------------------------------------------*/
19229c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
19239c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
1924ebc8fd365b402e498d499fa8737a7591c290347cGlenn Kastenextern SL_API const SLInterfaceID SL_IID_MUTESOLO;
19259c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
19269c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastenstruct SLMuteSoloItf_;
19279c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastentypedef const struct SLMuteSoloItf_ * const * SLMuteSoloItf;
19289c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
19299c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastenstruct SLMuteSoloItf_ {
19309c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*SetChannelMute) (
19319c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLMuteSoloItf self,
19329c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint8 chan,
19339c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLboolean mute
19349c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
19359c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*GetChannelMute) (
19369c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLMuteSoloItf self,
19379c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint8 chan,
19389c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLboolean *pMute
19399c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
19409c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*SetChannelSolo) (
19419c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLMuteSoloItf self,
19429c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint8 chan,
19439c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLboolean solo
19449c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
19459c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*GetChannelSolo) (
19469c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLMuteSoloItf self,
19479c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint8 chan,
19489c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLboolean *pSolo
19499c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
19509c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*GetNumChannels) (
19519c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLMuteSoloItf self,
19529c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint8 *pNumChannels
19539c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
19549c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten};
19559c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
19569c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
19579c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/*---------------------------------------------------------------------------*/
19589c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/* Dynamic Interface Management Interface and associated types and macros    */
19599c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/* --------------------------------------------------------------------------*/
19609c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
19619c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_DYNAMIC_ITF_EVENT_RUNTIME_ERROR			((SLuint32) 0x00000001)
19629c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_DYNAMIC_ITF_EVENT_ASYNC_TERMINATION		((SLuint32) 0x00000002)
19639c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_DYNAMIC_ITF_EVENT_RESOURCES_LOST			((SLuint32) 0x00000003)
19649c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_DYNAMIC_ITF_EVENT_RESOURCES_LOST_PERMANENTLY	((SLuint32) 0x00000004)
19659c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_DYNAMIC_ITF_EVENT_RESOURCES_AVAILABLE		((SLuint32) 0x00000005)
19669c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
19679c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
19689c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
19699c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
1970ebc8fd365b402e498d499fa8737a7591c290347cGlenn Kastenextern SL_API const SLInterfaceID SL_IID_DYNAMICINTERFACEMANAGEMENT;
19719c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
19729c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastenstruct SLDynamicInterfaceManagementItf_;
19739c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastentypedef const struct SLDynamicInterfaceManagementItf_ * const * SLDynamicInterfaceManagementItf;
19749c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
1975ebc8fd365b402e498d499fa8737a7591c290347cGlenn Kastentypedef void (SLAPIENTRY *slDynamicInterfaceManagementCallback) (
19769c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLDynamicInterfaceManagementItf caller,
19779c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	void * pContext,
19789c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLuint32 event,
19799c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult result,
19809c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten    const SLInterfaceID iid
19819c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten);
19829c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
19839c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
19849c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastenstruct SLDynamicInterfaceManagementItf_ {
19859c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*AddInterface) (
19869c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLDynamicInterfaceManagementItf self,
19879c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		const SLInterfaceID iid,
19889c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLboolean async
19899c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
19909c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*RemoveInterface) (
19919c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLDynamicInterfaceManagementItf self,
19929c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		const SLInterfaceID iid
19939c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
19949c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*ResumeInterface) (
19959c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLDynamicInterfaceManagementItf self,
19969c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		const SLInterfaceID iid,
19979c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLboolean async
19989c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
19999c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*RegisterCallback) (
20009c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLDynamicInterfaceManagementItf self,
20019c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		slDynamicInterfaceManagementCallback callback,
20029c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		void * pContext
20039c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
20049c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten};
20059c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
20069c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/*---------------------------------------------------------------------------*/
20079c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/* Midi Message Interface and associated types                               */
20089c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/* --------------------------------------------------------------------------*/
20099c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
20109c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_MIDIMESSAGETYPE_NOTE_ON_OFF		((SLuint32) 0x00000001)
20119c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_MIDIMESSAGETYPE_POLY_PRESSURE	((SLuint32) 0x00000002)
20129c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_MIDIMESSAGETYPE_CONTROL_CHANGE	((SLuint32) 0x00000003)
20139c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_MIDIMESSAGETYPE_PROGRAM_CHANGE	((SLuint32) 0x00000004)
20149c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_MIDIMESSAGETYPE_CHANNEL_PRESSURE	((SLuint32) 0x00000005)
20159c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_MIDIMESSAGETYPE_PITCH_BEND		((SLuint32) 0x00000006)
20169c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_MIDIMESSAGETYPE_SYSTEM_MESSAGE	((SLuint32) 0x00000007)
20179c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
20189c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
2019ebc8fd365b402e498d499fa8737a7591c290347cGlenn Kastenextern SL_API const SLInterfaceID SL_IID_MIDIMESSAGE;
20209c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
20219c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastenstruct SLMIDIMessageItf_;
20229c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastentypedef const struct SLMIDIMessageItf_ * const * SLMIDIMessageItf;
20239c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
2024ebc8fd365b402e498d499fa8737a7591c290347cGlenn Kastentypedef void (SLAPIENTRY *slMetaEventCallback) (
20259c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLMIDIMessageItf caller,
20269c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	void *pContext,
20279c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLuint8 type,
20289c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten    SLuint32 length,
20299c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	const SLuint8 *pData,
20309c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLuint32 tick,
20319c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLuint16 track
20329c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten);
20339c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
2034ebc8fd365b402e498d499fa8737a7591c290347cGlenn Kastentypedef void (SLAPIENTRY *slMIDIMessageCallback) (
20359c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLMIDIMessageItf caller,
20369c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	void *pContext,
20379c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLuint8 statusByte,
20389c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLuint32 length,
20399c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	const SLuint8 *pData,
20409c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLuint32 tick,
20419c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLuint16 track
20429c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten);
20439c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
20449c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastenstruct SLMIDIMessageItf_ {
20459c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*SendMessage) (
20469c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLMIDIMessageItf self,
20479c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		const SLuint8 *data,
20489c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint32 length
20499c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
20509c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*RegisterMetaEventCallback) (
20519c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLMIDIMessageItf self,
20529c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		slMetaEventCallback callback,
20539c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		void *pContext
20549c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
20559c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*RegisterMIDIMessageCallback) (
20569c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLMIDIMessageItf self,
20579c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		slMIDIMessageCallback callback,
20589c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		void *pContext
20599c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
20609c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*AddMIDIMessageCallbackFilter) (
20619c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLMIDIMessageItf self,
20629c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint32 messageType
20639c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
20649c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*ClearMIDIMessageCallbackFilter) (
20659c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLMIDIMessageItf self
20669c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
20679c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten};
20689c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
20699c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
20709c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/*---------------------------------------------------------------------------*/
20719c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/* Midi Mute Solo interface                                                  */
20729c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/* --------------------------------------------------------------------------*/
20739c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
20749c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
2075ebc8fd365b402e498d499fa8737a7591c290347cGlenn Kastenextern SL_API const SLInterfaceID SL_IID_MIDIMUTESOLO;
20769c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
20779c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastenstruct SLMIDIMuteSoloItf_;
20789c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastentypedef const struct SLMIDIMuteSoloItf_ * const * SLMIDIMuteSoloItf;
20799c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
20809c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastenstruct SLMIDIMuteSoloItf_ {
20819c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*SetChannelMute) (
20829c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLMIDIMuteSoloItf self,
20839c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint8 channel,
20849c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLboolean mute
20859c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
20869c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*GetChannelMute) (
20879c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLMIDIMuteSoloItf self,
20889c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint8 channel,
20899c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLboolean *pMute
20909c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
20919c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*SetChannelSolo) (
20929c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLMIDIMuteSoloItf self,
20939c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint8 channel,
20949c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLboolean solo
20959c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
20969c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*GetChannelSolo) (
20979c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLMIDIMuteSoloItf self,
20989c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint8 channel,
20999c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLboolean *pSolo
21009c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
21019c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*GetTrackCount) (
21029c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLMIDIMuteSoloItf self,
21039c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint16 *pCount
21049c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
21059c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*SetTrackMute) (
21069c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLMIDIMuteSoloItf self,
21079c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint16 track,
21089c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLboolean mute
21099c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
21109c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*GetTrackMute) (
21119c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLMIDIMuteSoloItf self,
21129c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint16 track,
21139c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLboolean *pMute
21149c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
21159c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*SetTrackSolo) (
21169c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLMIDIMuteSoloItf self,
21179c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint16 track,
21189c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLboolean solo
21199c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
21209c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*GetTrackSolo) (
21219c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLMIDIMuteSoloItf self,
21229c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint16 track,
21239c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLboolean *pSolo
21249c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
21259c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten};
21269c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
21279c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
21289c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/*---------------------------------------------------------------------------*/
21299c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/* Midi Tempo interface                                                      */
21309c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/* --------------------------------------------------------------------------*/
21319c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
21329c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
2133ebc8fd365b402e498d499fa8737a7591c290347cGlenn Kastenextern SL_API const SLInterfaceID SL_IID_MIDITEMPO;
21349c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
21359c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastenstruct SLMIDITempoItf_;
21369c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastentypedef const struct SLMIDITempoItf_ * const * SLMIDITempoItf;
21379c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
21389c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastenstruct SLMIDITempoItf_ {
21399c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*SetTicksPerQuarterNote) (
21409c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLMIDITempoItf self,
21419c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint32 tpqn
21429c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
21439c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*GetTicksPerQuarterNote) (
21449c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLMIDITempoItf self,
21459c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint32 *pTpqn
21469c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
21479c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*SetMicrosecondsPerQuarterNote) (
21489c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLMIDITempoItf self,
21499c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLmicrosecond uspqn
21509c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
21519c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*GetMicrosecondsPerQuarterNote) (
21529c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLMIDITempoItf self,
21539c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLmicrosecond *uspqn
21549c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
21559c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten};
21569c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
21579c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
21589c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/*---------------------------------------------------------------------------*/
21599c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/* Midi Time interface                                                       */
21609c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/* --------------------------------------------------------------------------*/
21619c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
21629c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
2163ebc8fd365b402e498d499fa8737a7591c290347cGlenn Kastenextern SL_API const SLInterfaceID SL_IID_MIDITIME;
21649c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
21659c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastenstruct SLMIDITimeItf_;
21669c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastentypedef const struct SLMIDITimeItf_ * const * SLMIDITimeItf;
21679c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
21689c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastenstruct SLMIDITimeItf_ {
21699c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*GetDuration) (
21709c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLMIDITimeItf self,
21719c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint32 *pDuration
21729c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
21739c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*SetPosition) (
21749c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLMIDITimeItf self,
21759c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint32 position
21769c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
21779c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*GetPosition) (
21789c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLMIDITimeItf self,
21799c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint32 *pPosition
21809c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
21819c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*SetLoopPoints) (
21829c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLMIDITimeItf self,
21839c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint32 startTick,
21849c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint32 numTicks
21859c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
21869c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*GetLoopPoints) (
21879c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLMIDITimeItf self,
21889c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint32 *pStartTick,
21899c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint32 *pNumTicks
21909c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
21919c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten};
21929c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
21939c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
21949c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/*---------------------------------------------------------------------------*/
21959c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/* Audio Decoder Capabilities Interface                                      */
21969c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/* --------------------------------------------------------------------------*/
21979c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
21989c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/*Audio Codec related defines*/
21999c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
22009c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_RATECONTROLMODE_CONSTANTBITRATE	((SLuint32) 0x00000001)
22019c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_RATECONTROLMODE_VARIABLEBITRATE	((SLuint32) 0x00000002)
22029c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
22039c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_AUDIOCODEC_PCM         ((SLuint32) 0x00000001)
22049c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_AUDIOCODEC_MP3         ((SLuint32) 0x00000002)
22059c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_AUDIOCODEC_AMR         ((SLuint32) 0x00000003)
22069c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_AUDIOCODEC_AMRWB       ((SLuint32) 0x00000004)
22079c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_AUDIOCODEC_AMRWBPLUS   ((SLuint32) 0x00000005)
22089c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_AUDIOCODEC_AAC         ((SLuint32) 0x00000006)
22099c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_AUDIOCODEC_WMA         ((SLuint32) 0x00000007)
22109c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_AUDIOCODEC_REAL        ((SLuint32) 0x00000008)
22119c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
22129c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_AUDIOPROFILE_PCM                   ((SLuint32) 0x00000001)
22139c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
22149c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_AUDIOPROFILE_MPEG1_L3              ((SLuint32) 0x00000001)
22159c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_AUDIOPROFILE_MPEG2_L3              ((SLuint32) 0x00000002)
22169c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_AUDIOPROFILE_MPEG25_L3             ((SLuint32) 0x00000003)
22179c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
22189c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_AUDIOCHANMODE_MP3_MONO             ((SLuint32) 0x00000001)
22199c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_AUDIOCHANMODE_MP3_STEREO           ((SLuint32) 0x00000002)
22209c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_AUDIOCHANMODE_MP3_JOINTSTEREO      ((SLuint32) 0x00000003)
22219c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_AUDIOCHANMODE_MP3_DUAL             ((SLuint32) 0x00000004)
22229c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
22239c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_AUDIOPROFILE_AMR			((SLuint32) 0x00000001)
22249c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
22259c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_AUDIOSTREAMFORMAT_CONFORMANCE	((SLuint32) 0x00000001)
22269c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_AUDIOSTREAMFORMAT_IF1			((SLuint32) 0x00000002)
22279c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_AUDIOSTREAMFORMAT_IF2			((SLuint32) 0x00000003)
22289c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_AUDIOSTREAMFORMAT_FSF			((SLuint32) 0x00000004)
22299c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_AUDIOSTREAMFORMAT_RTPPAYLOAD	((SLuint32) 0x00000005)
22309c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_AUDIOSTREAMFORMAT_ITU			((SLuint32) 0x00000006)
22319c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
22329c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_AUDIOPROFILE_AMRWB			((SLuint32) 0x00000001)
22339c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
22349c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_AUDIOPROFILE_AMRWBPLUS		((SLuint32) 0x00000001)
22359c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
22369c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_AUDIOPROFILE_AAC_AAC			((SLuint32) 0x00000001)
22379c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
22389c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_AUDIOMODE_AAC_MAIN			((SLuint32) 0x00000001)
22399c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_AUDIOMODE_AAC_LC			((SLuint32) 0x00000002)
22409c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_AUDIOMODE_AAC_SSR			((SLuint32) 0x00000003)
22419c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_AUDIOMODE_AAC_LTP			((SLuint32) 0x00000004)
22429c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_AUDIOMODE_AAC_HE			((SLuint32) 0x00000005)
22439c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_AUDIOMODE_AAC_SCALABLE		((SLuint32) 0x00000006)
22449c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_AUDIOMODE_AAC_ERLC			((SLuint32) 0x00000007)
22459c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_AUDIOMODE_AAC_LD			((SLuint32) 0x00000008)
22469c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_AUDIOMODE_AAC_HE_PS			((SLuint32) 0x00000009)
22479c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_AUDIOMODE_AAC_HE_MPS			((SLuint32) 0x0000000A)
22489c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
22499c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_AUDIOSTREAMFORMAT_MP2ADTS		((SLuint32) 0x00000001)
22509c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_AUDIOSTREAMFORMAT_MP4ADTS		((SLuint32) 0x00000002)
22519c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_AUDIOSTREAMFORMAT_MP4LOAS		((SLuint32) 0x00000003)
22529c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_AUDIOSTREAMFORMAT_MP4LATM		((SLuint32) 0x00000004)
22539c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_AUDIOSTREAMFORMAT_ADIF		((SLuint32) 0x00000005)
22549c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_AUDIOSTREAMFORMAT_MP4FF		((SLuint32) 0x00000006)
22559c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_AUDIOSTREAMFORMAT_RAW			((SLuint32) 0x00000007)
22569c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
22579c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_AUDIOPROFILE_WMA7		((SLuint32) 0x00000001)
22589c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_AUDIOPROFILE_WMA8		((SLuint32) 0x00000002)
22599c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_AUDIOPROFILE_WMA9		((SLuint32) 0x00000003)
22609c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_AUDIOPROFILE_WMA10		((SLuint32) 0x00000004)
22619c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
22629c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_AUDIOMODE_WMA_LEVEL1		((SLuint32) 0x00000001)
22639c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_AUDIOMODE_WMA_LEVEL2		((SLuint32) 0x00000002)
22649c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_AUDIOMODE_WMA_LEVEL3		((SLuint32) 0x00000003)
22659c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_AUDIOMODE_WMA_LEVEL4		((SLuint32) 0x00000004)
22669c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_AUDIOMODE_WMAPRO_LEVELM0	((SLuint32) 0x00000005)
22679c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_AUDIOMODE_WMAPRO_LEVELM1	((SLuint32) 0x00000006)
22689c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_AUDIOMODE_WMAPRO_LEVELM2	((SLuint32) 0x00000007)
22699c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_AUDIOMODE_WMAPRO_LEVELM3	((SLuint32) 0x00000008)
22709c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
22719c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_AUDIOPROFILE_REALAUDIO		((SLuint32) 0x00000001)
22729c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
22739c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_AUDIOMODE_REALAUDIO_G2		((SLuint32) 0x00000001)
22749c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_AUDIOMODE_REALAUDIO_8			((SLuint32) 0x00000002)
22759c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_AUDIOMODE_REALAUDIO_10		((SLuint32) 0x00000003)
22769c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_AUDIOMODE_REALAUDIO_SURROUND	((SLuint32) 0x00000004)
22779c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
22789c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastentypedef struct SLAudioCodecDescriptor_ {
22799c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten    SLuint32      maxChannels;
22809c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten    SLuint32      minBitsPerSample;
22819c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten    SLuint32      maxBitsPerSample;
22829c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten    SLmilliHertz  minSampleRate;
22839c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten    SLmilliHertz  maxSampleRate;
22849c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten    SLboolean     isFreqRangeContinuous;
22859c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten    SLmilliHertz *pSampleRatesSupported;
22869c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten    SLuint32      numSampleRatesSupported;
22879c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten    SLuint32      minBitRate;
22889c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten    SLuint32      maxBitRate;
22899c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten    SLboolean     isBitrateRangeContinuous;
22909c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten    SLuint32     *pBitratesSupported;
22919c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten    SLuint32      numBitratesSupported;
22929c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten    SLuint32	  profileSetting;
22939c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten    SLuint32      modeSetting;
22949c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten} SLAudioCodecDescriptor;
22959c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
22969c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/*Structure used to retrieve the profile and level settings supported by an audio encoder */
22979c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
22989c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastentypedef struct SLAudioCodecProfileMode_ {
22999c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten    SLuint32 profileSetting;
23009c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten    SLuint32 modeSetting;
23019c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten} SLAudioCodecProfileMode;
23029c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
2303ebc8fd365b402e498d499fa8737a7591c290347cGlenn Kastenextern SL_API const SLInterfaceID SL_IID_AUDIODECODERCAPABILITIES;
23049c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
23059c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastenstruct SLAudioDecoderCapabilitiesItf_;
23069c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastentypedef const struct SLAudioDecoderCapabilitiesItf_ * const * SLAudioDecoderCapabilitiesItf;
23079c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
23089c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastenstruct SLAudioDecoderCapabilitiesItf_ {
23099c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten    SLresult (*GetAudioDecoders) (
23109c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten        SLAudioDecoderCapabilitiesItf self,
23119c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten        SLuint32 * pNumDecoders ,
23129c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten        SLuint32 *pDecoderIds
23139c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten    );
23149c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten    SLresult (*GetAudioDecoderCapabilities) (
23159c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten        SLAudioDecoderCapabilitiesItf self,
23169c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten        SLuint32 decoderId,
23179c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten        SLuint32 *pIndex,
23189c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten        SLAudioCodecDescriptor *pDescriptor
23199c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten    );
23209c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten};
23219c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
23229c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
23239c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
23249c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
23259c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/*---------------------------------------------------------------------------*/
23269c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/* Audio Encoder Capabilities Interface                                      */
23279c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/* --------------------------------------------------------------------------*/
23289c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
23299c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/* Structure used when setting audio encoding parameters */
23309c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
23319c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastentypedef struct SLAudioEncoderSettings_ {
23329c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten    SLuint32 encoderId;
23339c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten    SLuint32 channelsIn;
23349c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten    SLuint32 channelsOut;
23359c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten    SLmilliHertz sampleRate;
23369c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten    SLuint32 bitRate;
23379c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten    SLuint32 bitsPerSample;
23389c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten    SLuint32 rateControl;
23399c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten    SLuint32 profileSetting;
23409c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten    SLuint32 levelSetting;
23419c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten    SLuint32 channelMode;
23429c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten    SLuint32 streamFormat;
23439c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten    SLuint32 encodeOptions;
23449c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten    SLuint32 blockAlignment;
23459c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten} SLAudioEncoderSettings;
23469c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
2347ebc8fd365b402e498d499fa8737a7591c290347cGlenn Kastenextern SL_API const SLInterfaceID SL_IID_AUDIOENCODERCAPABILITIES;
23489c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
23499c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastenstruct SLAudioEncoderCapabilitiesItf_;
23509c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastentypedef const struct SLAudioEncoderCapabilitiesItf_ * const * SLAudioEncoderCapabilitiesItf;
23519c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
23529c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastenstruct SLAudioEncoderCapabilitiesItf_ {
23539c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten    SLresult (*GetAudioEncoders) (
23549c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten        SLAudioEncoderCapabilitiesItf self,
23559c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten        SLuint32 *pNumEncoders ,
23569c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten        SLuint32 *pEncoderIds
23579c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten    );
23589c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten    SLresult (*GetAudioEncoderCapabilities) (
23599c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten        SLAudioEncoderCapabilitiesItf self,
23609c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten        SLuint32 encoderId,
23619c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten        SLuint32 *pIndex,
23629c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten        SLAudioCodecDescriptor * pDescriptor
23639c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten    );
23649c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten};
23659c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
23669c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
23679c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/*---------------------------------------------------------------------------*/
23689c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/* Audio Encoder Interface                                                   */
23699c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/* --------------------------------------------------------------------------*/
23709c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
23719c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
2372ebc8fd365b402e498d499fa8737a7591c290347cGlenn Kastenextern SL_API const SLInterfaceID SL_IID_AUDIOENCODER;
23739c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
23749c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastenstruct SLAudioEncoderItf_;
23759c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastentypedef const struct SLAudioEncoderItf_ * const * SLAudioEncoderItf;
23769c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
23779c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastenstruct SLAudioEncoderItf_ {
23789c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten    SLresult (*SetEncoderSettings) (
23799c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten        SLAudioEncoderItf		self,
23809c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten        SLAudioEncoderSettings 	*pSettings
23819c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten    );
23829c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten    SLresult (*GetEncoderSettings) (
23839c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten        SLAudioEncoderItf		self,
23849c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten        SLAudioEncoderSettings	*pSettings
23859c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten    );
23869c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten};
23879c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
23889c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
23899c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/*---------------------------------------------------------------------------*/
23909c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/* Bass Boost Interface                                                      */
23919c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/* --------------------------------------------------------------------------*/
23929c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
23939c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
2394ebc8fd365b402e498d499fa8737a7591c290347cGlenn Kastenextern SL_API const SLInterfaceID SL_IID_BASSBOOST;
23959c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
23969c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastenstruct SLBassBoostItf_;
23979c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastentypedef const struct SLBassBoostItf_ * const * SLBassBoostItf;
23989c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
23999c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastenstruct SLBassBoostItf_ {
24009c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*SetEnabled)(
24019c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLBassBoostItf self,
24029c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLboolean enabled
24039c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
24049c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*IsEnabled)(
24059c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLBassBoostItf self,
24069c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLboolean *pEnabled
24079c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
24089c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*SetStrength)(
24099c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLBassBoostItf self,
24109c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLpermille strength
24119c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
24129c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*GetRoundedStrength)(
24139c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLBassBoostItf self,
24149c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLpermille *pStrength
24159c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
24169c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*IsStrengthSupported)(
24179c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLBassBoostItf self,
24189c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLboolean *pSupported
24199c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
24209c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten};
24219c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
24229c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/*---------------------------------------------------------------------------*/
24239c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/* Pitch Interface                                                           */
24249c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/* --------------------------------------------------------------------------*/
24259c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
24269c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
2427ebc8fd365b402e498d499fa8737a7591c290347cGlenn Kastenextern SL_API const SLInterfaceID SL_IID_PITCH;
24289c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
24299c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastenstruct SLPitchItf_;
24309c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastentypedef const struct SLPitchItf_ * const * SLPitchItf;
24319c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
24329c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastenstruct SLPitchItf_ {
24339c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*SetPitch) (
24349c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLPitchItf self,
24359c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLpermille pitch
24369c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
24379c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*GetPitch) (
24389c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLPitchItf self,
24399c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLpermille *pPitch
24409c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
24419c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*GetPitchCapabilities) (
24429c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLPitchItf self,
24439c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLpermille *pMinPitch,
24449c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLpermille *pMaxPitch
24459c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
24469c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten};
24479c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
24489c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
24499c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/*---------------------------------------------------------------------------*/
24509c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/* Rate Pitch Interface                                                      */
24519c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/* RatePitchItf is an interface for controlling the rate a sound is played   */
24529c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/* back. A change in rate will cause a change in pitch.                      */
24539c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/* --------------------------------------------------------------------------*/
24549c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
24559c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
2456ebc8fd365b402e498d499fa8737a7591c290347cGlenn Kastenextern SL_API const SLInterfaceID SL_IID_RATEPITCH;
24579c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
24589c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastenstruct SLRatePitchItf_;
24599c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastentypedef const struct SLRatePitchItf_ * const * SLRatePitchItf;
24609c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
24619c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastenstruct SLRatePitchItf_ {
24629c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*SetRate) (
24639c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLRatePitchItf self,
24649c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLpermille rate
24659c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
24669c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*GetRate) (
24679c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLRatePitchItf self,
24689c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLpermille *pRate
24699c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
24709c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*GetRatePitchCapabilities) (
24719c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLRatePitchItf self,
24729c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLpermille *pMinRate,
24739c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLpermille *pMaxRate
24749c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
24759c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten};
24769c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
24779c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
24789c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/*---------------------------------------------------------------------------*/
24799c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/* Virtualizer Interface                                                      */
24809c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/* --------------------------------------------------------------------------*/
24819c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
24829c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
2483ebc8fd365b402e498d499fa8737a7591c290347cGlenn Kastenextern SL_API const SLInterfaceID SL_IID_VIRTUALIZER;
24849c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
24859c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastenstruct SLVirtualizerItf_;
24869c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastentypedef const struct SLVirtualizerItf_ * const * SLVirtualizerItf;
24879c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
24889c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastenstruct SLVirtualizerItf_ {
24899c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*SetEnabled)(
24909c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLVirtualizerItf self,
24919c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLboolean enabled
24929c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
24939c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*IsEnabled)(
24949c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLVirtualizerItf self,
24959c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLboolean *pEnabled
24969c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
24979c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*SetStrength)(
24989c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLVirtualizerItf self,
24999c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLpermille strength
25009c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
25019c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*GetRoundedStrength)(
25029c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLVirtualizerItf self,
25039c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLpermille *pStrength
25049c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
25059c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*IsStrengthSupported)(
25069c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLVirtualizerItf self,
25079c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLboolean *pSupported
25089c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
25099c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten};
25109c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
25119c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/*---------------------------------------------------------------------------*/
25129c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/* Visualization Interface                                                   */
25139c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/* --------------------------------------------------------------------------*/
25149c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
25159c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
2516ebc8fd365b402e498d499fa8737a7591c290347cGlenn Kastenextern SL_API const SLInterfaceID SL_IID_VISUALIZATION;
25179c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
25189c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastenstruct SLVisualizationItf_;
25199c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastentypedef const struct SLVisualizationItf_ * const * SLVisualizationItf;
25209c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
2521ebc8fd365b402e498d499fa8737a7591c290347cGlenn Kastentypedef void (SLAPIENTRY *slVisualizationCallback) (
25229c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	void *pContext,
25239c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	const SLuint8 waveform[],
25249c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	const SLuint8 fft[],
25259c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLmilliHertz samplerate
25269c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten);
25279c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
25289c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastenstruct SLVisualizationItf_{
25299c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*RegisterVisualizationCallback)(
25309c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLVisualizationItf self,
25319c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		slVisualizationCallback callback,
25329c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		void *pContext,
25339c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLmilliHertz rate
25349c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
25359c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*GetMaxRate)(
25369c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLVisualizationItf self,
25379c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLmilliHertz* pRate
25389c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
25399c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten};
25409c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
25419c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
25429c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/*---------------------------------------------------------------------------*/
25439c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/* Engine Interface                                                          */
25449c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/* --------------------------------------------------------------------------*/
25459c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
25469c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
2547ebc8fd365b402e498d499fa8737a7591c290347cGlenn Kastenextern SL_API const SLInterfaceID SL_IID_ENGINE;
25489c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
25499c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastenstruct SLEngineItf_;
25509c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastentypedef const struct SLEngineItf_ * const * SLEngineItf;
25519c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
25529c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
25539c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastenstruct SLEngineItf_ {
25549c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
25559c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*CreateLEDDevice) (
25569c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLEngineItf self,
25579c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLObjectItf * pDevice,
25589c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint32 deviceID,
25599c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint32 numInterfaces,
25609c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		const SLInterfaceID * pInterfaceIds,
25619c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		const SLboolean * pInterfaceRequired
25629c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
25639c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*CreateVibraDevice) (
25649c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLEngineItf self,
25659c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLObjectItf * pDevice,
25669c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint32 deviceID,
25679c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint32 numInterfaces,
25689c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		const SLInterfaceID * pInterfaceIds,
25699c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		const SLboolean * pInterfaceRequired
25709c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
25719c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*CreateAudioPlayer) (
25729c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLEngineItf self,
25739c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLObjectItf * pPlayer,
25749c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLDataSource *pAudioSrc,
25759c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLDataSink *pAudioSnk,
25769c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint32 numInterfaces,
25779c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		const SLInterfaceID * pInterfaceIds,
25789c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		const SLboolean * pInterfaceRequired
25799c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
25809c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*CreateAudioRecorder) (
25819c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLEngineItf self,
25829c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLObjectItf * pRecorder,
25839c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLDataSource *pAudioSrc,
25849c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLDataSink *pAudioSnk,
25859c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint32 numInterfaces,
25869c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		const SLInterfaceID * pInterfaceIds,
25879c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		const SLboolean * pInterfaceRequired
25889c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
25899c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*CreateMidiPlayer) (
25909c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLEngineItf self,
25919c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLObjectItf * pPlayer,
25929c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLDataSource *pMIDISrc,
25939c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLDataSource *pBankSrc,
25949c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLDataSink *pAudioOutput,
25959c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLDataSink *pVibra,
25969c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLDataSink *pLEDArray,
25979c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint32 numInterfaces,
25989c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		const SLInterfaceID * pInterfaceIds,
25999c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		const SLboolean * pInterfaceRequired
26009c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
26019c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*CreateListener) (
26029c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLEngineItf self,
26039c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLObjectItf * pListener,
26049c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint32 numInterfaces,
26059c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		const SLInterfaceID * pInterfaceIds,
26069c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		const SLboolean * pInterfaceRequired
26079c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
26089c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*Create3DGroup) (
26099c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLEngineItf self,
26109c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLObjectItf * pGroup,
26119c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint32 numInterfaces,
26129c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		const SLInterfaceID * pInterfaceIds,
26139c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		const SLboolean * pInterfaceRequired
26149c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
26159c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*CreateOutputMix) (
26169c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLEngineItf self,
26179c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLObjectItf * pMix,
26189c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint32 numInterfaces,
26199c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		const SLInterfaceID * pInterfaceIds,
26209c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		const SLboolean * pInterfaceRequired
26219c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
26229c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*CreateMetadataExtractor) (
26239c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLEngineItf self,
26249c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLObjectItf * pMetadataExtractor,
26259c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLDataSource * pDataSource,
26269c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint32 numInterfaces,
26279c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		const SLInterfaceID * pInterfaceIds,
26289c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		const SLboolean * pInterfaceRequired
26299c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
26309c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten    SLresult (*CreateExtensionObject) (
26319c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten        SLEngineItf self,
26329c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten        SLObjectItf * pObject,
26339c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten        void * pParameters,
26349c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten        SLuint32 objectID,
26359c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten        SLuint32 numInterfaces,
26369c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten        const SLInterfaceID * pInterfaceIds,
26379c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten        const SLboolean * pInterfaceRequired
26389c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten    );
26399c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*QueryNumSupportedInterfaces) (
26409c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLEngineItf self,
26419c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint32 objectID,
26429c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint32 * pNumSupportedInterfaces
26439c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
26449c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*QuerySupportedInterfaces) (
26459c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLEngineItf self,
26469c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint32 objectID,
26479c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint32 index,
26489c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLInterfaceID * pInterfaceId
26499c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
26509c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten    SLresult (*QueryNumSupportedExtensions) (
26519c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten        SLEngineItf self,
26529c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten        SLuint32 * pNumExtensions
26539c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten    );
26549c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten    SLresult (*QuerySupportedExtension) (
2655e3105d7d252fe0d1018c3578a675a8d63714d823Jean-Michel Trivi        SLEngineItf self,
26569c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten        SLuint32 index,
26579c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten        SLchar * pExtensionName,
26589c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten        SLint16 * pNameLength
26599c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten    );
26609c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten    SLresult (*IsExtensionSupported) (
2661e3105d7d252fe0d1018c3578a675a8d63714d823Jean-Michel Trivi        SLEngineItf self,
26629c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten        const SLchar * pExtensionName,
26639c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten        SLboolean * pSupported
26649c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten    );
26659c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten};
26669c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
26679c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
26689c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/*---------------------------------------------------------------------------*/
26699c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/* Engine Capabilities Interface                                             */
26709c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/* --------------------------------------------------------------------------*/
26719c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
26729c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
2673ebc8fd365b402e498d499fa8737a7591c290347cGlenn Kastenextern SL_API const SLInterfaceID SL_IID_ENGINECAPABILITIES;
26749c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
26759c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastenstruct SLEngineCapabilitiesItf_;
26769c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastentypedef const struct SLEngineCapabilitiesItf_ * const * SLEngineCapabilitiesItf;
26779c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
26789c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastenstruct SLEngineCapabilitiesItf_ {
26799c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*QuerySupportedProfiles) (
26809c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLEngineCapabilitiesItf self,
26819c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint16 *pProfilesSupported
26829c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
26839c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*QueryAvailableVoices) (
26849c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLEngineCapabilitiesItf self,
26859c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint16 voiceType,
26869c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLint16 *pNumMaxVoices,
26879c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLboolean *pIsAbsoluteMax,
26889c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLint16 *pNumFreeVoices
26899c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
26909c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*QueryNumberOfMIDISynthesizers) (
26919c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLEngineCapabilitiesItf self,
26929c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLint16 *pNumMIDIsynthesizers
26939c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
26949c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*QueryAPIVersion) (
26959c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLEngineCapabilitiesItf self,
26969c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLint16 *pMajor,
26979c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLint16 *pMinor,
26989c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLint16 *pStep
26999c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
27009c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*QueryLEDCapabilities) (
27019c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLEngineCapabilitiesItf self,
27029c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten        SLuint32 *pIndex,
27039c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint32 *pLEDDeviceID,
27049c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLLEDDescriptor *pDescriptor
27059c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
27069c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*QueryVibraCapabilities) (
27079c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLEngineCapabilitiesItf self,
27089c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten        SLuint32 *pIndex,
27099c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint32 *pVibraDeviceID,
27109c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLVibraDescriptor *pDescriptor
27119c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
27129c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*IsThreadSafe) (
27139c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLEngineCapabilitiesItf self,
27149c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLboolean *pIsThreadSafe
27159c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
27169c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten};
27179c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
27189c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/*---------------------------------------------------------------------------*/
27199c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/* Thread Sync Interface                                                     */
27209c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/* --------------------------------------------------------------------------*/
27219c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
27229c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
2723ebc8fd365b402e498d499fa8737a7591c290347cGlenn Kastenextern SL_API const SLInterfaceID SL_IID_THREADSYNC;
27249c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
27259c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastenstruct SLThreadSyncItf_;
27269c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastentypedef const struct SLThreadSyncItf_ * const * SLThreadSyncItf;
27279c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
27289c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
27299c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastenstruct SLThreadSyncItf_ {
27309c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*EnterCriticalSection) (
27319c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLThreadSyncItf self
27329c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
27339c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*ExitCriticalSection) (
27349c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLThreadSyncItf self
27359c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
27369c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten};
27379c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
27389c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
27399c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/*****************************************************************************/
27409c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/* SL engine constructor                                                     */
27419c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/*****************************************************************************/
27429c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
27439c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_ENGINEOPTION_THREADSAFE	((SLuint32) 0x00000001)
27449c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_ENGINEOPTION_LOSSOFCONTROL	((SLuint32) 0x00000002)
27459c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
27469c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastentypedef struct SLEngineOption_ {
27479c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLuint32 feature;
27489c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLuint32 data;
27499c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten} SLEngineOption;
27509c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
27519c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
2752ebc8fd365b402e498d499fa8737a7591c290347cGlenn KastenSL_API SLresult SLAPIENTRY slCreateEngine(
27539c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLObjectItf             *pEngine,
27549c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLuint32                numOptions,
27559c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	const SLEngineOption    *pEngineOptions,
27569c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLuint32                numInterfaces,
27579c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	const SLInterfaceID     *pInterfaceIds,
27589c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	const SLboolean         * pInterfaceRequired
27599c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten);
27609c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
2761ebc8fd365b402e498d499fa8737a7591c290347cGlenn KastenSL_API SLresult SLAPIENTRY slQueryNumSupportedEngineInterfaces(
27629c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLuint32 * pNumSupportedInterfaces
27639c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten);
27649c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
2765ebc8fd365b402e498d499fa8737a7591c290347cGlenn KastenSL_API SLresult SLAPIENTRY slQuerySupportedEngineInterfaces(
27669c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLuint32 index,
27679c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLInterfaceID * pInterfaceId
27689c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten);
27699c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
27709c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#ifdef __cplusplus
27719c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten} /* extern "C" */
27729c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#endif
27739c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
27749c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#endif /* OPENSL_ES_H_ */
2775