OpenSLES.h revision e3105d7d252fe0d1018c3578a675a8d63714d823
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
24000d2d554e04ac369367c903dbf53b975355d1bcdGlenn Kastenextern SLAPIENTRY 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
38600d2d554e04ac369367c903dbf53b975355d1bcdGlenn Kastenextern SLAPIENTRY const SLInterfaceID SL_IID_OBJECT;
3879c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
3889c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/** Object callback */
3899c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
3909c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
39100d2d554e04ac369367c903dbf53b975355d1bcdGlenn 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
51100d2d554e04ac369367c903dbf53b975355d1bcdGlenn Kastenextern SLAPIENTRY const SLInterfaceID SL_IID_AUDIOIODEVICECAPABILITIES;
5129c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
5139c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastenstruct SLAudioIODeviceCapabilitiesItf_;
5149c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastentypedef const struct SLAudioIODeviceCapabilitiesItf_ * const * SLAudioIODeviceCapabilitiesItf;
5159c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
5169c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
51700d2d554e04ac369367c903dbf53b975355d1bcdGlenn 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
52600d2d554e04ac369367c903dbf53b975355d1bcdGlenn 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
53400d2d554e04ac369367c903dbf53b975355d1bcdGlenn 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
62900d2d554e04ac369367c903dbf53b975355d1bcdGlenn Kastenextern SLAPIENTRY 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
67300d2d554e04ac369367c903dbf53b975355d1bcdGlenn Kastenextern SLAPIENTRY 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
75900d2d554e04ac369367c903dbf53b975355d1bcdGlenn Kastenextern SLAPIENTRY 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
82200d2d554e04ac369367c903dbf53b975355d1bcdGlenn Kastenextern SLAPIENTRY 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
85900d2d554e04ac369367c903dbf53b975355d1bcdGlenn Kastenextern SLAPIENTRY 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
87500d2d554e04ac369367c903dbf53b975355d1bcdGlenn Kastenextern SLAPIENTRY const SLInterfaceID SL_IID_OUTPUTMIX;
8769c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
8779c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastenstruct SLOutputMixItf_;
8789c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastentypedef const struct SLOutputMixItf_ * const * SLOutputMixItf;
8799c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
88000d2d554e04ac369367c903dbf53b975355d1bcdGlenn 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
92400d2d554e04ac369367c903dbf53b975355d1bcdGlenn Kastenextern SLAPIENTRY 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
93100d2d554e04ac369367c903dbf53b975355d1bcdGlenn 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)
994e3105d7d252fe0d1018c3578a675a8d63714d823Jean-Michel Trivi#define SL_PREFETCHEVENT_ERROR			((SLuint32) 0x00000003)
995e3105d7d252fe0d1018c3578a675a8d63714d823Jean-Michel Trivi#define SL_PREFETCHEVENT_ERROR_UNRECOVERABLE	((SLuint32) 0x00000004)
9969c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
9979c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_PREFETCHSTATUS_UNDERFLOW		((SLuint32) 0x00000001)
9989c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_PREFETCHSTATUS_SUFFICIENTDATA	((SLuint32) 0x00000002)
9999c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_PREFETCHSTATUS_OVERFLOW		((SLuint32) 0x00000003)
10009c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
10019c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
100200d2d554e04ac369367c903dbf53b975355d1bcdGlenn Kastenextern SLAPIENTRY const SLInterfaceID SL_IID_PREFETCHSTATUS;
10039c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
10049c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
10059c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/** Prefetch status interface methods */
10069c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
10079c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastenstruct SLPrefetchStatusItf_;
10089c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastentypedef const struct SLPrefetchStatusItf_ * const * SLPrefetchStatusItf;
10099c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
101000d2d554e04ac369367c903dbf53b975355d1bcdGlenn Kastentypedef void (/*SLAPIENTRY*/ *slPrefetchCallback) (
10119c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLPrefetchStatusItf caller,
10129c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	void *pContext,
10139c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLuint32 event
10149c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten);
10159c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
10169c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastenstruct SLPrefetchStatusItf_ {
10179c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*GetPrefetchStatus) (
10189c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLPrefetchStatusItf self,
10199c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint32 *pStatus
10209c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
10219c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*GetFillLevel) (
10229c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLPrefetchStatusItf self,
10239c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLpermille *pLevel
10249c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
10259c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*RegisterCallback) (
10269c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLPrefetchStatusItf self,
10279c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		slPrefetchCallback callback,
10289c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		void *pContext
10299c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
10309c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*SetCallbackEventsMask) (
10319c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLPrefetchStatusItf self,
10329c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint32 eventFlags
10339c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
10349c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*GetCallbackEventsMask) (
10359c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLPrefetchStatusItf self,
10369c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint32 *pEventFlags
10379c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
10389c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*SetFillUpdatePeriod) (
10399c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLPrefetchStatusItf self,
10409c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLpermille period
10419c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
10429c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*GetFillUpdatePeriod) (
10439c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLPrefetchStatusItf self,
10449c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLpermille *pPeriod
10459c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
10469c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten};
10479c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
10489c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/*---------------------------------------------------------------------------*/
10499c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/* Playback Rate interface                                                   */
10509c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/*---------------------------------------------------------------------------*/
10519c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
10529c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_RATEPROP_RESERVED1		  		((SLuint32) 0x00000001)
10539c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_RATEPROP_RESERVED2		  		((SLuint32) 0x00000002)
10549c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_RATEPROP_SILENTAUDIO				((SLuint32) 0x00000100)
10559c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_RATEPROP_STAGGEREDAUDIO	((SLuint32) 0x00000200)
10569c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_RATEPROP_NOPITCHCORAUDIO	((SLuint32) 0x00000400)
10579c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_RATEPROP_PITCHCORAUDIO	((SLuint32) 0x00000800)
10589c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
10599c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
106000d2d554e04ac369367c903dbf53b975355d1bcdGlenn Kastenextern SLAPIENTRY const SLInterfaceID SL_IID_PLAYBACKRATE;
10619c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
10629c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastenstruct SLPlaybackRateItf_;
10639c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastentypedef const struct SLPlaybackRateItf_ * const * SLPlaybackRateItf;
10649c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
10659c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastenstruct SLPlaybackRateItf_ {
10669c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*SetRate)(
10679c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLPlaybackRateItf self,
10689c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLpermille rate
10699c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
10709c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*GetRate)(
10719c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLPlaybackRateItf self,
10729c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLpermille *pRate
10739c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
10749c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*SetPropertyConstraints)(
10759c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLPlaybackRateItf self,
10769c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint32 constraints
10779c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
10789c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*GetProperties)(
10799c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLPlaybackRateItf self,
10809c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint32 *pProperties
10819c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
10829c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*GetCapabilitiesOfRate)(
10839c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLPlaybackRateItf self,
10849c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLpermille rate,
10859c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint32 *pCapabilities
10869c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
10879c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*GetRateRange) (
10889c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLPlaybackRateItf self,
10899c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint8 index,
10909c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLpermille *pMinRate,
10919c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLpermille *pMaxRate,
10929c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLpermille *pStepSize,
10939c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint32 *pCapabilities
10949c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
10959c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten};
10969c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
10979c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/*---------------------------------------------------------------------------*/
10989c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/* Seek Interface                                                            */
10999c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/*---------------------------------------------------------------------------*/
11009c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
110129ecc091f988ce8e6d95296a5f47377007ad77feGlenn Kasten#define SL_SEEKMODE_FAST		((SLuint32) 0x0001)
110229ecc091f988ce8e6d95296a5f47377007ad77feGlenn Kasten#define SL_SEEKMODE_ACCURATE	((SLuint32) 0x0002)
11039c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
110400d2d554e04ac369367c903dbf53b975355d1bcdGlenn Kastenextern SLAPIENTRY const SLInterfaceID SL_IID_SEEK;
11059c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
11069c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastenstruct SLSeekItf_;
11079c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastentypedef const struct SLSeekItf_ * const * SLSeekItf;
11089c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
11099c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastenstruct SLSeekItf_ {
11109c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*SetPosition)(
11119c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLSeekItf self,
11129c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLmillisecond pos,
11139c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint32 seekMode
11149c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
11159c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*SetLoop)(
11169c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLSeekItf self,
11179c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLboolean loopEnable,
11189c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLmillisecond startPos,
11199c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLmillisecond endPos
11209c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
11219c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*GetLoop)(
11229c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLSeekItf self,
11239c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLboolean *pLoopEnabled,
11249c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLmillisecond *pStartPos,
11259c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLmillisecond *pEndPos
11269c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
11279c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten};
11289c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
11299c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/*---------------------------------------------------------------------------*/
11309c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/* Standard Recording Interface                                              */
11319c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/*---------------------------------------------------------------------------*/
11329c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
11339c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/** Recording states */
11349c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_RECORDSTATE_STOPPED 	((SLuint32) 0x00000001)
11359c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_RECORDSTATE_PAUSED	((SLuint32) 0x00000002)
11369c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_RECORDSTATE_RECORDING	((SLuint32) 0x00000003)
11379c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
11389c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
11399c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/** Record event **/
11409c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_RECORDEVENT_HEADATLIMIT	((SLuint32) 0x00000001)
11419c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_RECORDEVENT_HEADATMARKER	((SLuint32) 0x00000002)
11429c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_RECORDEVENT_HEADATNEWPOS	((SLuint32) 0x00000004)
11439c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_RECORDEVENT_HEADMOVING	((SLuint32) 0x00000008)
11449c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_RECORDEVENT_HEADSTALLED 	((SLuint32) 0x00000010)
114529ecc091f988ce8e6d95296a5f47377007ad77feGlenn Kasten/* Note: SL_RECORDEVENT_BUFFER_INSUFFICIENT is deprecated, use SL_RECORDEVENT_BUFFER_FULL instead. */
114629ecc091f988ce8e6d95296a5f47377007ad77feGlenn Kasten#define SL_RECORDEVENT_BUFFER_INSUFFICIENT      ((SLuint32) 0x00000020)
114729ecc091f988ce8e6d95296a5f47377007ad77feGlenn Kasten#define SL_RECORDEVENT_BUFFER_FULL	((SLuint32) 0x00000020)
11489c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
11499c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
115000d2d554e04ac369367c903dbf53b975355d1bcdGlenn Kastenextern SLAPIENTRY const SLInterfaceID SL_IID_RECORD;
11519c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
11529c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastenstruct SLRecordItf_;
11539c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastentypedef const struct SLRecordItf_ * const * SLRecordItf;
11549c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
115500d2d554e04ac369367c903dbf53b975355d1bcdGlenn Kastentypedef void (/*SLAPIENTRY*/ *slRecordCallback) (
11569c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLRecordItf caller,
11579c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	void *pContext,
11589c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLuint32 event
11599c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten);
11609c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
11619c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/** Recording interface methods */
11629c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastenstruct SLRecordItf_ {
11639c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*SetRecordState) (
11649c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLRecordItf self,
11659c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint32 state
11669c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
11679c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*GetRecordState) (
11689c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLRecordItf self,
11699c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint32 *pState
11709c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
11719c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*SetDurationLimit) (
11729c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLRecordItf self,
11739c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLmillisecond msec
11749c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
11759c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*GetPosition) (
11769c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLRecordItf self,
11779c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLmillisecond *pMsec
11789c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
11799c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*RegisterCallback) (
11809c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLRecordItf self,
11819c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		slRecordCallback callback,
11829c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		void *pContext
11839c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
11849c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*SetCallbackEventsMask) (
11859c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLRecordItf self,
11869c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint32 eventFlags
11879c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
11889c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*GetCallbackEventsMask) (
11899c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLRecordItf self,
11909c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint32 *pEventFlags
11919c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
11929c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*SetMarkerPosition) (
11939c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLRecordItf self,
11949c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLmillisecond mSec
11959c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
11969c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*ClearMarkerPosition) (
11979c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLRecordItf self
11989c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
11999c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*GetMarkerPosition) (
12009c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLRecordItf self,
12019c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLmillisecond *pMsec
12029c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
12039c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*SetPositionUpdatePeriod) (
12049c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLRecordItf self,
12059c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLmillisecond mSec
12069c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
12079c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*GetPositionUpdatePeriod) (
12089c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLRecordItf self,
12099c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLmillisecond *pMsec
12109c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
12119c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten};
12129c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
12139c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/*---------------------------------------------------------------------------*/
12149c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/* Equalizer interface                                                       */
12159c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/*---------------------------------------------------------------------------*/
12169c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
12179c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_EQUALIZER_UNDEFINED				((SLuint16) 0xFFFF)
12189c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
121900d2d554e04ac369367c903dbf53b975355d1bcdGlenn Kastenextern SLAPIENTRY const SLInterfaceID SL_IID_EQUALIZER;
12209c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
12219c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastenstruct SLEqualizerItf_;
12229c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastentypedef const struct SLEqualizerItf_ * const * SLEqualizerItf;
12239c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
12249c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastenstruct SLEqualizerItf_ {
12259c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*SetEnabled)(
12269c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLEqualizerItf self,
12279c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLboolean enabled
12289c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
12299c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*IsEnabled)(
12309c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLEqualizerItf self,
12319c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLboolean *pEnabled
12329c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
12339c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*GetNumberOfBands)(
12349c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLEqualizerItf self,
12359c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint16 *pAmount
12369c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
12379c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*GetBandLevelRange)(
12389c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLEqualizerItf self,
12399c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLmillibel *pMin,
12409c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLmillibel *pMax
12419c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
12429c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*SetBandLevel)(
12439c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLEqualizerItf self,
12449c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint16 band,
12459c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLmillibel level
12469c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
12479c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*GetBandLevel)(
12489c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLEqualizerItf self,
12499c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint16 band,
12509c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLmillibel *pLevel
12519c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
12529c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*GetCenterFreq)(
12539c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLEqualizerItf self,
12549c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint16 band,
12559c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLmilliHertz *pCenter
12569c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
12579c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*GetBandFreqRange)(
12589c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLEqualizerItf self,
12599c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint16 band,
12609c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLmilliHertz *pMin,
12619c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLmilliHertz *pMax
12629c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
12639c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*GetBand)(
12649c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLEqualizerItf self,
12659c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLmilliHertz frequency,
12669c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint16 *pBand
12679c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
12689c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*GetCurrentPreset)(
12699c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLEqualizerItf self,
12709c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint16 *pPreset
12719c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
12729c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*UsePreset)(
12739c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLEqualizerItf self,
12749c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint16 index
12759c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
12769c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*GetNumberOfPresets)(
12779c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLEqualizerItf self,
12789c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint16 *pNumPresets
12799c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
12809c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*GetPresetName)(
12819c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLEqualizerItf self,
12829c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint16 index,
12839c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		const SLchar ** ppName
12849c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
12859c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten};
12869c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
12879c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/*---------------------------------------------------------------------------*/
12889c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/* Volume Interface                                                           */
12899c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/* --------------------------------------------------------------------------*/
12909c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
129100d2d554e04ac369367c903dbf53b975355d1bcdGlenn Kastenextern SLAPIENTRY const SLInterfaceID SL_IID_VOLUME;
12929c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
12939c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastenstruct SLVolumeItf_;
12949c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastentypedef const struct SLVolumeItf_ * const * SLVolumeItf;
12959c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
12969c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastenstruct SLVolumeItf_ {
12979c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*SetVolumeLevel) (
12989c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLVolumeItf self,
12999c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLmillibel level
13009c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
13019c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*GetVolumeLevel) (
13029c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLVolumeItf self,
13039c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLmillibel *pLevel
13049c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
13059c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*GetMaxVolumeLevel) (
13069c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLVolumeItf  self,
13079c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLmillibel *pMaxLevel
13089c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
13099c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*SetMute) (
13109c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLVolumeItf self,
13119c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLboolean mute
13129c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
13139c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*GetMute) (
13149c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLVolumeItf self,
13159c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLboolean *pMute
13169c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
13179c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*EnableStereoPosition) (
13189c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLVolumeItf self,
13199c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLboolean enable
13209c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
13219c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*IsEnabledStereoPosition) (
13229c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLVolumeItf self,
13239c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLboolean *pEnable
13249c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
13259c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*SetStereoPosition) (
13269c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLVolumeItf self,
13279c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLpermille stereoPosition
13289c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
13299c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*GetStereoPosition) (
13309c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLVolumeItf self,
13319c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLpermille *pStereoPosition
13329c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
13339c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten};
13349c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
13359c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
13369c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/*---------------------------------------------------------------------------*/
13379c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/* Device Volume Interface                                                   */
13389c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/* --------------------------------------------------------------------------*/
13399c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
134000d2d554e04ac369367c903dbf53b975355d1bcdGlenn Kastenextern SLAPIENTRY const SLInterfaceID SL_IID_DEVICEVOLUME;
13419c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
13429c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastenstruct SLDeviceVolumeItf_;
13439c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastentypedef const struct SLDeviceVolumeItf_ * const * SLDeviceVolumeItf;
13449c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
13459c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastenstruct SLDeviceVolumeItf_ {
13469c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*GetVolumeScale) (
13479c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLDeviceVolumeItf self,
13489c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint32 deviceID,
13499c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLint32 *pMinValue,
13509c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLint32 *pMaxValue,
13519c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLboolean *pIsMillibelScale
13529c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
13539c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*SetVolume) (
13549c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLDeviceVolumeItf self,
13559c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint32 deviceID,
13569c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLint32 volume
13579c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
13589c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*GetVolume) (
13599c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLDeviceVolumeItf self,
13609c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint32 deviceID,
13619c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLint32 *pVolume
13629c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
13639c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten};
13649c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
13659c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
13669c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/*---------------------------------------------------------------------------*/
13679c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/* Buffer Queue Interface                                                    */
13689c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/*---------------------------------------------------------------------------*/
13699c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
137000d2d554e04ac369367c903dbf53b975355d1bcdGlenn Kastenextern SLAPIENTRY const SLInterfaceID SL_IID_BUFFERQUEUE;
13719c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
13729c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastenstruct SLBufferQueueItf_;
13739c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastentypedef const struct SLBufferQueueItf_ * const * SLBufferQueueItf;
13749c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
137500d2d554e04ac369367c903dbf53b975355d1bcdGlenn Kastentypedef void (/*SLAPIENTRY*/ *slBufferQueueCallback)(
13769c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLBufferQueueItf caller,
13779c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	void *pContext
13789c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten);
13799c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
13809c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/** Buffer queue state **/
13819c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
13829c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastentypedef struct SLBufferQueueState_ {
13839c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLuint32	count;
13849c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLuint32	playIndex;
13859c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten} SLBufferQueueState;
13869c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
13879c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
13889c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastenstruct SLBufferQueueItf_ {
13899c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*Enqueue) (
13909c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLBufferQueueItf self,
13919c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		const void *pBuffer,
13929c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint32 size
13939c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
13949c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*Clear) (
13959c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLBufferQueueItf self
13969c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
13979c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*GetState) (
13989c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLBufferQueueItf self,
13999c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLBufferQueueState *pState
14009c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
14019c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*RegisterCallback) (
14029c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLBufferQueueItf self,
14039c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		slBufferQueueCallback callback,
14049c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		void* pContext
14059c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
14069c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten};
14079c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
14089c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
14099c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/*---------------------------------------------------------------------------*/
14109c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/* PresetReverb                                                              */
14119c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/*---------------------------------------------------------------------------*/
14129c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
14139c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_REVERBPRESET_NONE		((SLuint16) 0x0000)
14149c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_REVERBPRESET_SMALLROOM	((SLuint16) 0x0001)
14159c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_REVERBPRESET_MEDIUMROOM	((SLuint16) 0x0002)
14169c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_REVERBPRESET_LARGEROOM	((SLuint16) 0x0003)
14179c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_REVERBPRESET_MEDIUMHALL	((SLuint16) 0x0004)
14189c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_REVERBPRESET_LARGEHALL	((SLuint16) 0x0005)
14199c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_REVERBPRESET_PLATE 		((SLuint16) 0x0006)
14209c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
14219c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
142200d2d554e04ac369367c903dbf53b975355d1bcdGlenn Kastenextern SLAPIENTRY const SLInterfaceID SL_IID_PRESETREVERB;
14239c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
14249c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastenstruct SLPresetReverbItf_;
14259c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastentypedef const struct SLPresetReverbItf_ * const * SLPresetReverbItf;
14269c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
14279c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastenstruct SLPresetReverbItf_ {
14289c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*SetPreset) (
14299c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLPresetReverbItf self,
14309c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint16 preset
14319c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
14329c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*GetPreset) (
14339c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLPresetReverbItf self,
14349c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint16 *pPreset
14359c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
14369c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten};
14379c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
14389c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
14399c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/*---------------------------------------------------------------------------*/
14409c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/* EnvironmentalReverb                                                       */
14419c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/*---------------------------------------------------------------------------*/
14429c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
14439c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_I3DL2_ENVIRONMENT_PRESET_DEFAULT \
14449c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	{ SL_MILLIBEL_MIN,    0,  1000,   500, SL_MILLIBEL_MIN,  20, SL_MILLIBEL_MIN,  40, 1000,1000 }
14459c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_I3DL2_ENVIRONMENT_PRESET_GENERIC \
14469c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	{ -1000, -100, 1490,  830, -2602,   7,   200,  11, 1000,1000 }
14479c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_I3DL2_ENVIRONMENT_PRESET_PADDEDCELL \
14489c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	{ -1000,-6000,  170,  100, -1204,   1,   207,   2, 1000,1000 }
14499c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_I3DL2_ENVIRONMENT_PRESET_ROOM \
14509c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	{ -1000, -454,  400,  830, -1646,   2,    53,   3, 1000,1000 }
14519c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_I3DL2_ENVIRONMENT_PRESET_BATHROOM \
14529c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	{ -1000,-1200, 1490,  540,  -370,   7,  1030,  11, 1000, 600 }
14539c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_I3DL2_ENVIRONMENT_PRESET_LIVINGROOM \
14549c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	{ -1000,-6000,  500,  100, -1376,   3, -1104,   4, 1000,1000 }
14559c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_I3DL2_ENVIRONMENT_PRESET_STONEROOM \
14569c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	{ -1000, -300, 2310,  640,  -711,  12,    83,  17, 1000,1000 }
14579c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_I3DL2_ENVIRONMENT_PRESET_AUDITORIUM \
14589c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	{ -1000, -476, 4320,  590,  -789,  20,  -289,  30, 1000,1000 }
14599c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_I3DL2_ENVIRONMENT_PRESET_CONCERTHALL \
14609c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	{ -1000, -500, 3920,  700, -1230,  20,    -2,  29, 1000,1000 }
14619c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_I3DL2_ENVIRONMENT_PRESET_CAVE \
14629c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	{ -1000,    0, 2910, 1300,  -602,  15,  -302,  22, 1000,1000 }
14639c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_I3DL2_ENVIRONMENT_PRESET_ARENA \
14649c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	{ -1000, -698, 7240,  330, -1166,  20,    16,  30, 1000,1000 }
14659c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_I3DL2_ENVIRONMENT_PRESET_HANGAR \
14669c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	{ -1000,-1000, 10050,  230,  -602,  20,   198,  30, 1000,1000 }
14679c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_I3DL2_ENVIRONMENT_PRESET_CARPETEDHALLWAY \
14689c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	{ -1000,-4000,  300,  100, -1831,   2, -1630,  30, 1000,1000 }
14699c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_I3DL2_ENVIRONMENT_PRESET_HALLWAY \
14709c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	{ -1000, -300, 1490,  590, -1219,   7,   441,  11, 1000,1000 }
14719c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_I3DL2_ENVIRONMENT_PRESET_STONECORRIDOR \
14729c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	{ -1000, -237, 2700,  790, -1214,  13,   395,  20, 1000,1000 }
14739c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_I3DL2_ENVIRONMENT_PRESET_ALLEY \
14749c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	{ -1000, -270, 1490,  860, -1204,   7,    -4,  11, 1000,1000 }
14759c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_I3DL2_ENVIRONMENT_PRESET_FOREST \
14769c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	{ -1000,-3300, 1490,  540, -2560, 162,  -613,  88,  790,1000 }
14779c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_I3DL2_ENVIRONMENT_PRESET_CITY \
14789c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	{ -1000, -800, 1490,  670, -2273,   7, -2217,  11,  500,1000 }
14799c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_I3DL2_ENVIRONMENT_PRESET_MOUNTAINS \
14809c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	{ -1000,-2500, 1490,  210, -2780, 300, -2014, 100,  270,1000 }
14819c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_I3DL2_ENVIRONMENT_PRESET_QUARRY \
14829c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	{ -1000,-1000, 1490,  830, SL_MILLIBEL_MIN,  61,   500,  25, 1000,1000 }
14839c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_I3DL2_ENVIRONMENT_PRESET_PLAIN \
14849c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	{ -1000,-2000, 1490,  500, -2466, 179, -2514, 100,  210,1000 }
14859c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_I3DL2_ENVIRONMENT_PRESET_PARKINGLOT \
14869c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	{ -1000,    0, 1650, 1500, -1363,   8, -1153,  12, 1000,1000 }
14879c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_I3DL2_ENVIRONMENT_PRESET_SEWERPIPE \
14889c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	{ -1000,-1000, 2810,  140,   429,  14,   648,  21,  800, 600 }
14899c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_I3DL2_ENVIRONMENT_PRESET_UNDERWATER \
14909c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	{ -1000,-4000, 1490,  100,  -449,   7,  1700,  11, 1000,1000 }
14919c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_I3DL2_ENVIRONMENT_PRESET_SMALLROOM \
14929c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	{ -1000,-600, 1100, 830, -400, 5, 500, 10, 1000, 1000 }
14939c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_I3DL2_ENVIRONMENT_PRESET_MEDIUMROOM \
14949c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	{ -1000,-600, 1300, 830, -1000, 20, -200, 20, 1000, 1000 }
14959c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_I3DL2_ENVIRONMENT_PRESET_LARGEROOM \
14969c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	{ -1000,-600, 1500, 830, -1600, 5, -1000, 40, 1000, 1000 }
14979c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_I3DL2_ENVIRONMENT_PRESET_MEDIUMHALL \
14989c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	{ -1000,-600, 1800, 700, -1300, 15, -800, 30, 1000, 1000 }
14999c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_I3DL2_ENVIRONMENT_PRESET_LARGEHALL \
15009c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	{ -1000,-600, 1800, 700, -2000, 30, -1400, 60, 1000, 1000 }
15019c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_I3DL2_ENVIRONMENT_PRESET_PLATE \
15029c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	{ -1000,-200, 1300, 900, 0, 2, 0, 10, 1000, 750 }
15039c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
15049c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
15059c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastentypedef struct SLEnvironmentalReverbSettings_ {
15069c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLmillibel    roomLevel;
15079c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLmillibel    roomHFLevel;
15089c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLmillisecond decayTime;
15099c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLpermille    decayHFRatio;
15109c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLmillibel    reflectionsLevel;
15119c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLmillisecond reflectionsDelay;
15129c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLmillibel    reverbLevel;
15139c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLmillisecond reverbDelay;
15149c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLpermille    diffusion;
15159c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLpermille    density;
15169c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten} SLEnvironmentalReverbSettings;
15179c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
15189c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
15199c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
15209c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
152100d2d554e04ac369367c903dbf53b975355d1bcdGlenn Kastenextern SLAPIENTRY const SLInterfaceID SL_IID_ENVIRONMENTALREVERB;
15229c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
15239c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
15249c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastenstruct SLEnvironmentalReverbItf_;
15259c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastentypedef const struct SLEnvironmentalReverbItf_ * const * SLEnvironmentalReverbItf;
15269c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
15279c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastenstruct SLEnvironmentalReverbItf_ {
15289c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*SetRoomLevel) (
15299c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLEnvironmentalReverbItf self,
15309c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLmillibel room
15319c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
15329c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*GetRoomLevel) (
15339c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLEnvironmentalReverbItf self,
15349c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLmillibel *pRoom
15359c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
15369c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*SetRoomHFLevel) (
15379c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLEnvironmentalReverbItf self,
15389c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLmillibel roomHF
15399c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
15409c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*GetRoomHFLevel) (
15419c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLEnvironmentalReverbItf self,
15429c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLmillibel *pRoomHF
15439c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
15449c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*SetDecayTime) (
15459c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLEnvironmentalReverbItf self,
15469c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLmillisecond decayTime
15479c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
15489c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*GetDecayTime) (
15499c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLEnvironmentalReverbItf self,
15509c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLmillisecond *pDecayTime
15519c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
15529c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*SetDecayHFRatio) (
15539c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLEnvironmentalReverbItf self,
15549c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLpermille decayHFRatio
15559c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
15569c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*GetDecayHFRatio) (
15579c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLEnvironmentalReverbItf self,
15589c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLpermille *pDecayHFRatio
15599c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
15609c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*SetReflectionsLevel) (
15619c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLEnvironmentalReverbItf self,
15629c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLmillibel reflectionsLevel
15639c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
15649c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*GetReflectionsLevel) (
15659c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLEnvironmentalReverbItf self,
15669c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLmillibel *pReflectionsLevel
15679c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
15689c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*SetReflectionsDelay) (
15699c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLEnvironmentalReverbItf self,
15709c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLmillisecond reflectionsDelay
15719c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
15729c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*GetReflectionsDelay) (
15739c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLEnvironmentalReverbItf self,
15749c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLmillisecond *pReflectionsDelay
15759c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
15769c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*SetReverbLevel) (
15779c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLEnvironmentalReverbItf self,
15789c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLmillibel reverbLevel
15799c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
15809c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*GetReverbLevel) (
15819c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLEnvironmentalReverbItf self,
15829c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLmillibel *pReverbLevel
15839c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
15849c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*SetReverbDelay) (
15859c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLEnvironmentalReverbItf self,
15869c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLmillisecond reverbDelay
15879c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
15889c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*GetReverbDelay) (
15899c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLEnvironmentalReverbItf self,
15909c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLmillisecond *pReverbDelay
15919c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
15929c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*SetDiffusion) (
15939c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLEnvironmentalReverbItf self,
15949c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLpermille diffusion
15959c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
15969c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*GetDiffusion) (
15979c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLEnvironmentalReverbItf self,
15989c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLpermille *pDiffusion
15999c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
16009c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*SetDensity) (
16019c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLEnvironmentalReverbItf self,
16029c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLpermille density
16039c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
16049c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*GetDensity) (
16059c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLEnvironmentalReverbItf self,
16069c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLpermille *pDensity
16079c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
16089c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*SetEnvironmentalReverbProperties) (
16099c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLEnvironmentalReverbItf self,
16109c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		const SLEnvironmentalReverbSettings *pProperties
16119c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
16129c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*GetEnvironmentalReverbProperties) (
16139c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLEnvironmentalReverbItf self,
16149c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLEnvironmentalReverbSettings *pProperties
16159c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
16169c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten};
16179c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
16189c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/*---------------------------------------------------------------------------*/
16199c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/* Effects Send Interface                                                    */
16209c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/*---------------------------------------------------------------------------*/
16219c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
16229c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
162300d2d554e04ac369367c903dbf53b975355d1bcdGlenn Kastenextern SLAPIENTRY const SLInterfaceID SL_IID_EFFECTSEND;
16249c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
16259c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastenstruct SLEffectSendItf_;
16269c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastentypedef const struct SLEffectSendItf_ * const * SLEffectSendItf;
16279c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
16289c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastenstruct SLEffectSendItf_ {
16299c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*EnableEffectSend) (
16309c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLEffectSendItf self,
16319c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		const void *pAuxEffect,
16329c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLboolean enable,
16339c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLmillibel initialLevel
16349c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
16359c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*IsEnabled) (
16369c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLEffectSendItf self,
16379c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		const void * pAuxEffect,
16389c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLboolean *pEnable
16399c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
16409c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*SetDirectLevel) (
16419c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLEffectSendItf self,
16429c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLmillibel directLevel
16439c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
16449c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*GetDirectLevel) (
16459c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLEffectSendItf self,
16469c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLmillibel *pDirectLevel
16479c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
16489c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*SetSendLevel) (
16499c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLEffectSendItf self,
16509c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		const void *pAuxEffect,
16519c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLmillibel sendLevel
16529c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
16539c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*GetSendLevel)(
16549c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLEffectSendItf self,
16559c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		const void *pAuxEffect,
16569c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLmillibel *pSendLevel
16579c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
16589c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten};
16599c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
16609c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
16619c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/*---------------------------------------------------------------------------*/
16629c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/* 3D Grouping Interface                                                     */
16639c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/*---------------------------------------------------------------------------*/
16649c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
16659c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
166600d2d554e04ac369367c903dbf53b975355d1bcdGlenn Kastenextern SLAPIENTRY const SLInterfaceID SL_IID_3DGROUPING;
16679c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
16689c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
16699c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastenstruct SL3DGroupingItf_ ;
16709c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastentypedef const struct SL3DGroupingItf_ * const * SL3DGroupingItf;
16719c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
16729c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastenstruct SL3DGroupingItf_ {
16739c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*Set3DGroup) (
16749c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SL3DGroupingItf self,
16759c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLObjectItf group
16769c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
16779c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*Get3DGroup) (
16789c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SL3DGroupingItf self,
16799c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLObjectItf *pGroup
16809c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
16819c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten};
16829c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
16839c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
16849c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/*---------------------------------------------------------------------------*/
16859c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/* 3D Commit Interface                                                       */
16869c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/*---------------------------------------------------------------------------*/
16879c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
16889c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
168900d2d554e04ac369367c903dbf53b975355d1bcdGlenn Kastenextern SLAPIENTRY const SLInterfaceID SL_IID_3DCOMMIT;
16909c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
16919c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastenstruct SL3DCommitItf_;
16929c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastentypedef const struct SL3DCommitItf_* const * SL3DCommitItf;
16939c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
16949c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastenstruct SL3DCommitItf_ {
16959c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*Commit) (
16969c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SL3DCommitItf self
16979c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
16989c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*SetDeferred) (
16999c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SL3DCommitItf self,
17009c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLboolean deferred
17019c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
17029c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten};
17039c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
17049c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
17059c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/*---------------------------------------------------------------------------*/
17069c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/* 3D Location Interface                                                     */
17079c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/*---------------------------------------------------------------------------*/
17089c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
17099c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastentypedef struct SLVec3D_ {
17109c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLint32	x;
17119c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLint32	y;
17129c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLint32	z;
17139c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten} SLVec3D;
17149c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
171500d2d554e04ac369367c903dbf53b975355d1bcdGlenn Kastenextern SLAPIENTRY const SLInterfaceID SL_IID_3DLOCATION;
17169c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
17179c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastenstruct SL3DLocationItf_;
17189c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastentypedef const struct SL3DLocationItf_ * const * SL3DLocationItf;
17199c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
17209c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastenstruct SL3DLocationItf_ {
17219c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*SetLocationCartesian) (
17229c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SL3DLocationItf self,
17239c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		const SLVec3D *pLocation
17249c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
17259c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*SetLocationSpherical) (
17269c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SL3DLocationItf self,
17279c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLmillidegree azimuth,
17289c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLmillidegree elevation,
17299c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLmillimeter distance
17309c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
17319c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*Move) (
17329c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SL3DLocationItf self,
17339c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		const SLVec3D *pMovement
17349c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
17359c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*GetLocationCartesian) (
17369c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SL3DLocationItf self,
17379c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLVec3D *pLocation
17389c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
17399c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*SetOrientationVectors) (
17409c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SL3DLocationItf self,
17419c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		const SLVec3D *pFront,
17429c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		const SLVec3D *pAbove
17439c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
17449c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*SetOrientationAngles) (
17459c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SL3DLocationItf self,
17469c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLmillidegree heading,
17479c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLmillidegree pitch,
17489c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLmillidegree roll
17499c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
17509c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*Rotate) (
17519c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SL3DLocationItf self,
17529c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLmillidegree theta,
17539c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		const SLVec3D *pAxis
17549c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
17559c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*GetOrientationVectors) (
17569c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SL3DLocationItf self,
17579c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLVec3D *pFront,
17589c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLVec3D *pUp
17599c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
17609c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten};
17619c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
17629c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
17639c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/*---------------------------------------------------------------------------*/
17649c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/* 3D Doppler Interface                                                      */
17659c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/*---------------------------------------------------------------------------*/
17669c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
17679c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
176800d2d554e04ac369367c903dbf53b975355d1bcdGlenn Kastenextern SLAPIENTRY const SLInterfaceID SL_IID_3DDOPPLER;
17699c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
17709c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastenstruct SL3DDopplerItf_;
17719c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastentypedef const struct SL3DDopplerItf_ * const * SL3DDopplerItf;
17729c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
17739c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastenstruct SL3DDopplerItf_ {
17749c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*SetVelocityCartesian) (
17759c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SL3DDopplerItf self,
17769c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		const SLVec3D *pVelocity
17779c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
17789c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*SetVelocitySpherical) (
17799c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SL3DDopplerItf self,
17809c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLmillidegree azimuth,
17819c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLmillidegree elevation,
17829c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLmillimeter speed
17839c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
17849c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*GetVelocityCartesian) (
17859c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SL3DDopplerItf self,
17869c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLVec3D *pVelocity
17879c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
17889c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*SetDopplerFactor) (
17899c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SL3DDopplerItf self,
17909c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLpermille dopplerFactor
17919c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
17929c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*GetDopplerFactor) (
17939c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SL3DDopplerItf self,
17949c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLpermille *pDopplerFactor
17959c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
17969c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten};
17979c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
17989c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/*---------------------------------------------------------------------------*/
17999c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/* 3D Source Interface and associated defines                                */
18009c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/* --------------------------------------------------------------------------*/
18019c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
18029c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_ROLLOFFMODEL_EXPONENTIAL	((SLuint32) 0x00000000)
18039c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_ROLLOFFMODEL_LINEAR		((SLuint32) 0x00000001)
18049c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
18059c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
180600d2d554e04ac369367c903dbf53b975355d1bcdGlenn Kastenextern SLAPIENTRY const SLInterfaceID SL_IID_3DSOURCE;
18079c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
18089c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastenstruct SL3DSourceItf_;
18099c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastentypedef const struct SL3DSourceItf_ * const * SL3DSourceItf;
18109c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
18119c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastenstruct SL3DSourceItf_ {
18129c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*SetHeadRelative) (
18139c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SL3DSourceItf self,
18149c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLboolean headRelative
18159c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
18169c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*GetHeadRelative) (
18179c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SL3DSourceItf self,
18189c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLboolean *pHeadRelative
18199c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
18209c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*SetRolloffDistances) (
18219c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SL3DSourceItf self,
18229c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLmillimeter minDistance,
18239c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLmillimeter maxDistance
18249c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
18259c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*GetRolloffDistances) (
18269c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SL3DSourceItf self,
18279c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLmillimeter *pMinDistance,
18289c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLmillimeter *pMaxDistance
18299c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
18309c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*SetRolloffMaxDistanceMute) (
18319c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SL3DSourceItf self,
18329c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLboolean mute
18339c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
18349c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*GetRolloffMaxDistanceMute) (
18359c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SL3DSourceItf self,
18369c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLboolean *pMute
18379c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
18389c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*SetRolloffFactor) (
18399c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SL3DSourceItf self,
18409c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLpermille rolloffFactor
18419c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
18429c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*GetRolloffFactor) (
18439c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SL3DSourceItf self,
18449c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLpermille *pRolloffFactor
18459c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
18469c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*SetRoomRolloffFactor) (
18479c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SL3DSourceItf self,
18489c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLpermille roomRolloffFactor
18499c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
18509c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*GetRoomRolloffFactor) (
18519c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SL3DSourceItf self,
18529c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLpermille *pRoomRolloffFactor
18539c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
18549c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*SetRolloffModel) (
18559c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SL3DSourceItf self,
18569c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint8 model
18579c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
18589c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*GetRolloffModel) (
18599c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SL3DSourceItf self,
18609c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint8 *pModel
18619c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
18629c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*SetCone) (
18639c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SL3DSourceItf self,
18649c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLmillidegree innerAngle,
18659c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLmillidegree outerAngle,
18669c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLmillibel outerLevel
18679c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
18689c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*GetCone) (
18699c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SL3DSourceItf self,
18709c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLmillidegree *pInnerAngle,
18719c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLmillidegree *pOuterAngle,
18729c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLmillibel *pOuterLevel
18739c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
18749c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten};
18759c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
18769c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/*---------------------------------------------------------------------------*/
18779c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/* 3D Macroscopic Interface                                                  */
18789c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/* --------------------------------------------------------------------------*/
18799c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
188000d2d554e04ac369367c903dbf53b975355d1bcdGlenn Kastenextern SLAPIENTRY const SLInterfaceID SL_IID_3DMACROSCOPIC;
18819c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
18829c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastenstruct SL3DMacroscopicItf_;
18839c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastentypedef const struct SL3DMacroscopicItf_ * const * SL3DMacroscopicItf;
18849c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
18859c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastenstruct SL3DMacroscopicItf_ {
18869c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*SetSize) (
18879c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SL3DMacroscopicItf self,
18889c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLmillimeter width,
18899c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLmillimeter height,
18909c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLmillimeter depth
18919c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
18929c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*GetSize) (
18939c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SL3DMacroscopicItf self,
18949c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLmillimeter *pWidth,
18959c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLmillimeter *pHeight,
18969c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLmillimeter *pDepth
18979c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
18989c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*SetOrientationAngles) (
18999c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SL3DMacroscopicItf self,
19009c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLmillidegree heading,
19019c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLmillidegree pitch,
19029c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLmillidegree roll
19039c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
19049c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*SetOrientationVectors) (
19059c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SL3DMacroscopicItf self,
19069c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		const SLVec3D *pFront,
19079c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		const SLVec3D *pAbove
19089c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
19099c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*Rotate) (
19109c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SL3DMacroscopicItf self,
19119c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLmillidegree theta,
19129c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		const SLVec3D *pAxis
19139c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
19149c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*GetOrientationVectors) (
19159c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SL3DMacroscopicItf self,
19169c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLVec3D *pFront,
19179c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLVec3D *pUp
19189c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
19199c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten};
19209c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
19219c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/*---------------------------------------------------------------------------*/
19229c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/* Mute Solo Interface                                                       */
19239c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/* --------------------------------------------------------------------------*/
19249c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
19259c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
192600d2d554e04ac369367c903dbf53b975355d1bcdGlenn Kastenextern SLAPIENTRY const SLInterfaceID SL_IID_MUTESOLO;
19279c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
19289c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastenstruct SLMuteSoloItf_;
19299c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastentypedef const struct SLMuteSoloItf_ * const * SLMuteSoloItf;
19309c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
19319c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastenstruct SLMuteSoloItf_ {
19329c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*SetChannelMute) (
19339c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLMuteSoloItf self,
19349c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint8 chan,
19359c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLboolean mute
19369c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
19379c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*GetChannelMute) (
19389c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLMuteSoloItf self,
19399c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint8 chan,
19409c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLboolean *pMute
19419c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
19429c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*SetChannelSolo) (
19439c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLMuteSoloItf self,
19449c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint8 chan,
19459c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLboolean solo
19469c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
19479c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*GetChannelSolo) (
19489c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLMuteSoloItf self,
19499c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint8 chan,
19509c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLboolean *pSolo
19519c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
19529c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*GetNumChannels) (
19539c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLMuteSoloItf self,
19549c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint8 *pNumChannels
19559c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
19569c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten};
19579c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
19589c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
19599c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/*---------------------------------------------------------------------------*/
19609c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/* Dynamic Interface Management Interface and associated types and macros    */
19619c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/* --------------------------------------------------------------------------*/
19629c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
19639c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_DYNAMIC_ITF_EVENT_RUNTIME_ERROR			((SLuint32) 0x00000001)
19649c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_DYNAMIC_ITF_EVENT_ASYNC_TERMINATION		((SLuint32) 0x00000002)
19659c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_DYNAMIC_ITF_EVENT_RESOURCES_LOST			((SLuint32) 0x00000003)
19669c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_DYNAMIC_ITF_EVENT_RESOURCES_LOST_PERMANENTLY	((SLuint32) 0x00000004)
19679c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_DYNAMIC_ITF_EVENT_RESOURCES_AVAILABLE		((SLuint32) 0x00000005)
19689c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
19699c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
19709c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
19719c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
197200d2d554e04ac369367c903dbf53b975355d1bcdGlenn Kastenextern SLAPIENTRY const SLInterfaceID SL_IID_DYNAMICINTERFACEMANAGEMENT;
19739c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
19749c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastenstruct SLDynamicInterfaceManagementItf_;
19759c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastentypedef const struct SLDynamicInterfaceManagementItf_ * const * SLDynamicInterfaceManagementItf;
19769c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
197700d2d554e04ac369367c903dbf53b975355d1bcdGlenn Kastentypedef void (/*SLAPIENTRY*/ *slDynamicInterfaceManagementCallback) (
19789c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLDynamicInterfaceManagementItf caller,
19799c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	void * pContext,
19809c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLuint32 event,
19819c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult result,
19829c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten    const SLInterfaceID iid
19839c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten);
19849c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
19859c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
19869c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastenstruct SLDynamicInterfaceManagementItf_ {
19879c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*AddInterface) (
19889c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLDynamicInterfaceManagementItf self,
19899c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		const SLInterfaceID iid,
19909c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLboolean async
19919c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
19929c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*RemoveInterface) (
19939c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLDynamicInterfaceManagementItf self,
19949c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		const SLInterfaceID iid
19959c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
19969c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*ResumeInterface) (
19979c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLDynamicInterfaceManagementItf self,
19989c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		const SLInterfaceID iid,
19999c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLboolean async
20009c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
20019c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*RegisterCallback) (
20029c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLDynamicInterfaceManagementItf self,
20039c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		slDynamicInterfaceManagementCallback callback,
20049c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		void * pContext
20059c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
20069c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten};
20079c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
20089c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/*---------------------------------------------------------------------------*/
20099c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/* Midi Message Interface and associated types                               */
20109c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/* --------------------------------------------------------------------------*/
20119c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
20129c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_MIDIMESSAGETYPE_NOTE_ON_OFF		((SLuint32) 0x00000001)
20139c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_MIDIMESSAGETYPE_POLY_PRESSURE	((SLuint32) 0x00000002)
20149c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_MIDIMESSAGETYPE_CONTROL_CHANGE	((SLuint32) 0x00000003)
20159c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_MIDIMESSAGETYPE_PROGRAM_CHANGE	((SLuint32) 0x00000004)
20169c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_MIDIMESSAGETYPE_CHANNEL_PRESSURE	((SLuint32) 0x00000005)
20179c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_MIDIMESSAGETYPE_PITCH_BEND		((SLuint32) 0x00000006)
20189c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_MIDIMESSAGETYPE_SYSTEM_MESSAGE	((SLuint32) 0x00000007)
20199c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
20209c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
202100d2d554e04ac369367c903dbf53b975355d1bcdGlenn Kastenextern SLAPIENTRY const SLInterfaceID SL_IID_MIDIMESSAGE;
20229c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
20239c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastenstruct SLMIDIMessageItf_;
20249c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastentypedef const struct SLMIDIMessageItf_ * const * SLMIDIMessageItf;
20259c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
202600d2d554e04ac369367c903dbf53b975355d1bcdGlenn Kastentypedef void (/*SLAPIENTRY*/ *slMetaEventCallback) (
20279c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLMIDIMessageItf caller,
20289c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	void *pContext,
20299c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLuint8 type,
20309c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten    SLuint32 length,
20319c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	const SLuint8 *pData,
20329c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLuint32 tick,
20339c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLuint16 track
20349c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten);
20359c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
203600d2d554e04ac369367c903dbf53b975355d1bcdGlenn Kastentypedef void (/*SLAPIENTRY*/ *slMIDIMessageCallback) (
20379c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLMIDIMessageItf caller,
20389c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	void *pContext,
20399c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLuint8 statusByte,
20409c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLuint32 length,
20419c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	const SLuint8 *pData,
20429c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLuint32 tick,
20439c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLuint16 track
20449c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten);
20459c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
20469c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastenstruct SLMIDIMessageItf_ {
20479c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*SendMessage) (
20489c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLMIDIMessageItf self,
20499c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		const SLuint8 *data,
20509c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint32 length
20519c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
20529c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*RegisterMetaEventCallback) (
20539c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLMIDIMessageItf self,
20549c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		slMetaEventCallback callback,
20559c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		void *pContext
20569c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
20579c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*RegisterMIDIMessageCallback) (
20589c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLMIDIMessageItf self,
20599c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		slMIDIMessageCallback callback,
20609c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		void *pContext
20619c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
20629c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*AddMIDIMessageCallbackFilter) (
20639c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLMIDIMessageItf self,
20649c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint32 messageType
20659c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
20669c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*ClearMIDIMessageCallbackFilter) (
20679c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLMIDIMessageItf self
20689c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
20699c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten};
20709c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
20719c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
20729c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/*---------------------------------------------------------------------------*/
20739c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/* Midi Mute Solo interface                                                  */
20749c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/* --------------------------------------------------------------------------*/
20759c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
20769c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
207700d2d554e04ac369367c903dbf53b975355d1bcdGlenn Kastenextern SLAPIENTRY const SLInterfaceID SL_IID_MIDIMUTESOLO;
20789c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
20799c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastenstruct SLMIDIMuteSoloItf_;
20809c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastentypedef const struct SLMIDIMuteSoloItf_ * const * SLMIDIMuteSoloItf;
20819c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
20829c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastenstruct SLMIDIMuteSoloItf_ {
20839c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*SetChannelMute) (
20849c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLMIDIMuteSoloItf self,
20859c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint8 channel,
20869c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLboolean mute
20879c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
20889c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*GetChannelMute) (
20899c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLMIDIMuteSoloItf self,
20909c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint8 channel,
20919c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLboolean *pMute
20929c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
20939c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*SetChannelSolo) (
20949c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLMIDIMuteSoloItf self,
20959c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint8 channel,
20969c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLboolean solo
20979c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
20989c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*GetChannelSolo) (
20999c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLMIDIMuteSoloItf self,
21009c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint8 channel,
21019c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLboolean *pSolo
21029c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
21039c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*GetTrackCount) (
21049c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLMIDIMuteSoloItf self,
21059c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint16 *pCount
21069c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
21079c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*SetTrackMute) (
21089c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLMIDIMuteSoloItf self,
21099c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint16 track,
21109c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLboolean mute
21119c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
21129c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*GetTrackMute) (
21139c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLMIDIMuteSoloItf self,
21149c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint16 track,
21159c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLboolean *pMute
21169c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
21179c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*SetTrackSolo) (
21189c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLMIDIMuteSoloItf self,
21199c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint16 track,
21209c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLboolean solo
21219c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
21229c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*GetTrackSolo) (
21239c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLMIDIMuteSoloItf self,
21249c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint16 track,
21259c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLboolean *pSolo
21269c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
21279c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten};
21289c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
21299c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
21309c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/*---------------------------------------------------------------------------*/
21319c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/* Midi Tempo interface                                                      */
21329c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/* --------------------------------------------------------------------------*/
21339c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
21349c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
213500d2d554e04ac369367c903dbf53b975355d1bcdGlenn Kastenextern SLAPIENTRY const SLInterfaceID SL_IID_MIDITEMPO;
21369c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
21379c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastenstruct SLMIDITempoItf_;
21389c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastentypedef const struct SLMIDITempoItf_ * const * SLMIDITempoItf;
21399c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
21409c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastenstruct SLMIDITempoItf_ {
21419c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*SetTicksPerQuarterNote) (
21429c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLMIDITempoItf self,
21439c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint32 tpqn
21449c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
21459c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*GetTicksPerQuarterNote) (
21469c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLMIDITempoItf self,
21479c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint32 *pTpqn
21489c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
21499c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*SetMicrosecondsPerQuarterNote) (
21509c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLMIDITempoItf self,
21519c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLmicrosecond uspqn
21529c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
21539c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*GetMicrosecondsPerQuarterNote) (
21549c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLMIDITempoItf self,
21559c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLmicrosecond *uspqn
21569c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
21579c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten};
21589c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
21599c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
21609c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/*---------------------------------------------------------------------------*/
21619c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/* Midi Time interface                                                       */
21629c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/* --------------------------------------------------------------------------*/
21639c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
21649c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
216500d2d554e04ac369367c903dbf53b975355d1bcdGlenn Kastenextern SLAPIENTRY const SLInterfaceID SL_IID_MIDITIME;
21669c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
21679c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastenstruct SLMIDITimeItf_;
21689c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastentypedef const struct SLMIDITimeItf_ * const * SLMIDITimeItf;
21699c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
21709c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastenstruct SLMIDITimeItf_ {
21719c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*GetDuration) (
21729c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLMIDITimeItf self,
21739c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint32 *pDuration
21749c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
21759c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*SetPosition) (
21769c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLMIDITimeItf self,
21779c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint32 position
21789c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
21799c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*GetPosition) (
21809c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLMIDITimeItf self,
21819c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint32 *pPosition
21829c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
21839c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*SetLoopPoints) (
21849c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLMIDITimeItf self,
21859c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint32 startTick,
21869c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint32 numTicks
21879c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
21889c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*GetLoopPoints) (
21899c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLMIDITimeItf self,
21909c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint32 *pStartTick,
21919c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint32 *pNumTicks
21929c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
21939c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten};
21949c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
21959c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
21969c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/*---------------------------------------------------------------------------*/
21979c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/* Audio Decoder Capabilities Interface                                      */
21989c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/* --------------------------------------------------------------------------*/
21999c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
22009c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/*Audio Codec related defines*/
22019c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
22029c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_RATECONTROLMODE_CONSTANTBITRATE	((SLuint32) 0x00000001)
22039c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_RATECONTROLMODE_VARIABLEBITRATE	((SLuint32) 0x00000002)
22049c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
22059c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_AUDIOCODEC_PCM         ((SLuint32) 0x00000001)
22069c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_AUDIOCODEC_MP3         ((SLuint32) 0x00000002)
22079c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_AUDIOCODEC_AMR         ((SLuint32) 0x00000003)
22089c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_AUDIOCODEC_AMRWB       ((SLuint32) 0x00000004)
22099c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_AUDIOCODEC_AMRWBPLUS   ((SLuint32) 0x00000005)
22109c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_AUDIOCODEC_AAC         ((SLuint32) 0x00000006)
22119c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_AUDIOCODEC_WMA         ((SLuint32) 0x00000007)
22129c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_AUDIOCODEC_REAL        ((SLuint32) 0x00000008)
22139c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
22149c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_AUDIOPROFILE_PCM                   ((SLuint32) 0x00000001)
22159c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
22169c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_AUDIOPROFILE_MPEG1_L3              ((SLuint32) 0x00000001)
22179c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_AUDIOPROFILE_MPEG2_L3              ((SLuint32) 0x00000002)
22189c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_AUDIOPROFILE_MPEG25_L3             ((SLuint32) 0x00000003)
22199c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
22209c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_AUDIOCHANMODE_MP3_MONO             ((SLuint32) 0x00000001)
22219c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_AUDIOCHANMODE_MP3_STEREO           ((SLuint32) 0x00000002)
22229c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_AUDIOCHANMODE_MP3_JOINTSTEREO      ((SLuint32) 0x00000003)
22239c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_AUDIOCHANMODE_MP3_DUAL             ((SLuint32) 0x00000004)
22249c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
22259c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_AUDIOPROFILE_AMR			((SLuint32) 0x00000001)
22269c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
22279c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_AUDIOSTREAMFORMAT_CONFORMANCE	((SLuint32) 0x00000001)
22289c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_AUDIOSTREAMFORMAT_IF1			((SLuint32) 0x00000002)
22299c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_AUDIOSTREAMFORMAT_IF2			((SLuint32) 0x00000003)
22309c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_AUDIOSTREAMFORMAT_FSF			((SLuint32) 0x00000004)
22319c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_AUDIOSTREAMFORMAT_RTPPAYLOAD	((SLuint32) 0x00000005)
22329c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_AUDIOSTREAMFORMAT_ITU			((SLuint32) 0x00000006)
22339c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
22349c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_AUDIOPROFILE_AMRWB			((SLuint32) 0x00000001)
22359c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
22369c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_AUDIOPROFILE_AMRWBPLUS		((SLuint32) 0x00000001)
22379c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
22389c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_AUDIOPROFILE_AAC_AAC			((SLuint32) 0x00000001)
22399c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
22409c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_AUDIOMODE_AAC_MAIN			((SLuint32) 0x00000001)
22419c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_AUDIOMODE_AAC_LC			((SLuint32) 0x00000002)
22429c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_AUDIOMODE_AAC_SSR			((SLuint32) 0x00000003)
22439c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_AUDIOMODE_AAC_LTP			((SLuint32) 0x00000004)
22449c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_AUDIOMODE_AAC_HE			((SLuint32) 0x00000005)
22459c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_AUDIOMODE_AAC_SCALABLE		((SLuint32) 0x00000006)
22469c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_AUDIOMODE_AAC_ERLC			((SLuint32) 0x00000007)
22479c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_AUDIOMODE_AAC_LD			((SLuint32) 0x00000008)
22489c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_AUDIOMODE_AAC_HE_PS			((SLuint32) 0x00000009)
22499c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_AUDIOMODE_AAC_HE_MPS			((SLuint32) 0x0000000A)
22509c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
22519c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_AUDIOSTREAMFORMAT_MP2ADTS		((SLuint32) 0x00000001)
22529c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_AUDIOSTREAMFORMAT_MP4ADTS		((SLuint32) 0x00000002)
22539c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_AUDIOSTREAMFORMAT_MP4LOAS		((SLuint32) 0x00000003)
22549c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_AUDIOSTREAMFORMAT_MP4LATM		((SLuint32) 0x00000004)
22559c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_AUDIOSTREAMFORMAT_ADIF		((SLuint32) 0x00000005)
22569c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_AUDIOSTREAMFORMAT_MP4FF		((SLuint32) 0x00000006)
22579c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_AUDIOSTREAMFORMAT_RAW			((SLuint32) 0x00000007)
22589c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
22599c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_AUDIOPROFILE_WMA7		((SLuint32) 0x00000001)
22609c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_AUDIOPROFILE_WMA8		((SLuint32) 0x00000002)
22619c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_AUDIOPROFILE_WMA9		((SLuint32) 0x00000003)
22629c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_AUDIOPROFILE_WMA10		((SLuint32) 0x00000004)
22639c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
22649c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_AUDIOMODE_WMA_LEVEL1		((SLuint32) 0x00000001)
22659c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_AUDIOMODE_WMA_LEVEL2		((SLuint32) 0x00000002)
22669c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_AUDIOMODE_WMA_LEVEL3		((SLuint32) 0x00000003)
22679c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_AUDIOMODE_WMA_LEVEL4		((SLuint32) 0x00000004)
22689c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_AUDIOMODE_WMAPRO_LEVELM0	((SLuint32) 0x00000005)
22699c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_AUDIOMODE_WMAPRO_LEVELM1	((SLuint32) 0x00000006)
22709c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_AUDIOMODE_WMAPRO_LEVELM2	((SLuint32) 0x00000007)
22719c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_AUDIOMODE_WMAPRO_LEVELM3	((SLuint32) 0x00000008)
22729c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
22739c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_AUDIOPROFILE_REALAUDIO		((SLuint32) 0x00000001)
22749c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
22759c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_AUDIOMODE_REALAUDIO_G2		((SLuint32) 0x00000001)
22769c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_AUDIOMODE_REALAUDIO_8			((SLuint32) 0x00000002)
22779c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_AUDIOMODE_REALAUDIO_10		((SLuint32) 0x00000003)
22789c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_AUDIOMODE_REALAUDIO_SURROUND	((SLuint32) 0x00000004)
22799c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
22809c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastentypedef struct SLAudioCodecDescriptor_ {
22819c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten    SLuint32      maxChannels;
22829c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten    SLuint32      minBitsPerSample;
22839c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten    SLuint32      maxBitsPerSample;
22849c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten    SLmilliHertz  minSampleRate;
22859c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten    SLmilliHertz  maxSampleRate;
22869c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten    SLboolean     isFreqRangeContinuous;
22879c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten    SLmilliHertz *pSampleRatesSupported;
22889c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten    SLuint32      numSampleRatesSupported;
22899c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten    SLuint32      minBitRate;
22909c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten    SLuint32      maxBitRate;
22919c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten    SLboolean     isBitrateRangeContinuous;
22929c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten    SLuint32     *pBitratesSupported;
22939c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten    SLuint32      numBitratesSupported;
22949c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten    SLuint32	  profileSetting;
22959c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten    SLuint32      modeSetting;
22969c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten} SLAudioCodecDescriptor;
22979c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
22989c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/*Structure used to retrieve the profile and level settings supported by an audio encoder */
22999c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
23009c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastentypedef struct SLAudioCodecProfileMode_ {
23019c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten    SLuint32 profileSetting;
23029c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten    SLuint32 modeSetting;
23039c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten} SLAudioCodecProfileMode;
23049c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
230500d2d554e04ac369367c903dbf53b975355d1bcdGlenn Kastenextern SLAPIENTRY const SLInterfaceID SL_IID_AUDIODECODERCAPABILITIES;
23069c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
23079c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastenstruct SLAudioDecoderCapabilitiesItf_;
23089c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastentypedef const struct SLAudioDecoderCapabilitiesItf_ * const * SLAudioDecoderCapabilitiesItf;
23099c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
23109c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastenstruct SLAudioDecoderCapabilitiesItf_ {
23119c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten    SLresult (*GetAudioDecoders) (
23129c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten        SLAudioDecoderCapabilitiesItf self,
23139c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten        SLuint32 * pNumDecoders ,
23149c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten        SLuint32 *pDecoderIds
23159c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten    );
23169c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten    SLresult (*GetAudioDecoderCapabilities) (
23179c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten        SLAudioDecoderCapabilitiesItf self,
23189c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten        SLuint32 decoderId,
23199c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten        SLuint32 *pIndex,
23209c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten        SLAudioCodecDescriptor *pDescriptor
23219c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten    );
23229c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten};
23239c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
23249c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
23259c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
23269c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
23279c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/*---------------------------------------------------------------------------*/
23289c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/* Audio Encoder Capabilities Interface                                      */
23299c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/* --------------------------------------------------------------------------*/
23309c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
23319c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/* Structure used when setting audio encoding parameters */
23329c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
23339c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastentypedef struct SLAudioEncoderSettings_ {
23349c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten    SLuint32 encoderId;
23359c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten    SLuint32 channelsIn;
23369c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten    SLuint32 channelsOut;
23379c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten    SLmilliHertz sampleRate;
23389c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten    SLuint32 bitRate;
23399c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten    SLuint32 bitsPerSample;
23409c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten    SLuint32 rateControl;
23419c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten    SLuint32 profileSetting;
23429c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten    SLuint32 levelSetting;
23439c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten    SLuint32 channelMode;
23449c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten    SLuint32 streamFormat;
23459c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten    SLuint32 encodeOptions;
23469c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten    SLuint32 blockAlignment;
23479c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten} SLAudioEncoderSettings;
23489c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
234900d2d554e04ac369367c903dbf53b975355d1bcdGlenn Kastenextern SLAPIENTRY const SLInterfaceID SL_IID_AUDIOENCODERCAPABILITIES;
23509c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
23519c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastenstruct SLAudioEncoderCapabilitiesItf_;
23529c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastentypedef const struct SLAudioEncoderCapabilitiesItf_ * const * SLAudioEncoderCapabilitiesItf;
23539c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
23549c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastenstruct SLAudioEncoderCapabilitiesItf_ {
23559c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten    SLresult (*GetAudioEncoders) (
23569c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten        SLAudioEncoderCapabilitiesItf self,
23579c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten        SLuint32 *pNumEncoders ,
23589c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten        SLuint32 *pEncoderIds
23599c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten    );
23609c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten    SLresult (*GetAudioEncoderCapabilities) (
23619c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten        SLAudioEncoderCapabilitiesItf self,
23629c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten        SLuint32 encoderId,
23639c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten        SLuint32 *pIndex,
23649c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten        SLAudioCodecDescriptor * pDescriptor
23659c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten    );
23669c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten};
23679c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
23689c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
23699c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/*---------------------------------------------------------------------------*/
23709c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/* Audio Encoder Interface                                                   */
23719c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/* --------------------------------------------------------------------------*/
23729c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
23739c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
237400d2d554e04ac369367c903dbf53b975355d1bcdGlenn Kastenextern SLAPIENTRY const SLInterfaceID SL_IID_AUDIOENCODER;
23759c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
23769c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastenstruct SLAudioEncoderItf_;
23779c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastentypedef const struct SLAudioEncoderItf_ * const * SLAudioEncoderItf;
23789c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
23799c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastenstruct SLAudioEncoderItf_ {
23809c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten    SLresult (*SetEncoderSettings) (
23819c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten        SLAudioEncoderItf		self,
23829c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten        SLAudioEncoderSettings 	*pSettings
23839c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten    );
23849c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten    SLresult (*GetEncoderSettings) (
23859c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten        SLAudioEncoderItf		self,
23869c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten        SLAudioEncoderSettings	*pSettings
23879c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten    );
23889c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten};
23899c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
23909c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
23919c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/*---------------------------------------------------------------------------*/
23929c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/* Bass Boost Interface                                                      */
23939c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/* --------------------------------------------------------------------------*/
23949c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
23959c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
239600d2d554e04ac369367c903dbf53b975355d1bcdGlenn Kastenextern SLAPIENTRY const SLInterfaceID SL_IID_BASSBOOST;
23979c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
23989c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastenstruct SLBassBoostItf_;
23999c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastentypedef const struct SLBassBoostItf_ * const * SLBassBoostItf;
24009c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
24019c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastenstruct SLBassBoostItf_ {
24029c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*SetEnabled)(
24039c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLBassBoostItf self,
24049c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLboolean enabled
24059c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
24069c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*IsEnabled)(
24079c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLBassBoostItf self,
24089c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLboolean *pEnabled
24099c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
24109c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*SetStrength)(
24119c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLBassBoostItf self,
24129c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLpermille strength
24139c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
24149c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*GetRoundedStrength)(
24159c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLBassBoostItf self,
24169c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLpermille *pStrength
24179c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
24189c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*IsStrengthSupported)(
24199c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLBassBoostItf self,
24209c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLboolean *pSupported
24219c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
24229c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten};
24239c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
24249c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/*---------------------------------------------------------------------------*/
24259c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/* Pitch Interface                                                           */
24269c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/* --------------------------------------------------------------------------*/
24279c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
24289c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
242900d2d554e04ac369367c903dbf53b975355d1bcdGlenn Kastenextern SLAPIENTRY const SLInterfaceID SL_IID_PITCH;
24309c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
24319c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastenstruct SLPitchItf_;
24329c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastentypedef const struct SLPitchItf_ * const * SLPitchItf;
24339c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
24349c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastenstruct SLPitchItf_ {
24359c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*SetPitch) (
24369c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLPitchItf self,
24379c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLpermille pitch
24389c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
24399c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*GetPitch) (
24409c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLPitchItf self,
24419c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLpermille *pPitch
24429c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
24439c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*GetPitchCapabilities) (
24449c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLPitchItf self,
24459c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLpermille *pMinPitch,
24469c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLpermille *pMaxPitch
24479c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
24489c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten};
24499c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
24509c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
24519c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/*---------------------------------------------------------------------------*/
24529c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/* Rate Pitch Interface                                                      */
24539c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/* RatePitchItf is an interface for controlling the rate a sound is played   */
24549c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/* back. A change in rate will cause a change in pitch.                      */
24559c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/* --------------------------------------------------------------------------*/
24569c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
24579c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
245800d2d554e04ac369367c903dbf53b975355d1bcdGlenn Kastenextern SLAPIENTRY const SLInterfaceID SL_IID_RATEPITCH;
24599c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
24609c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastenstruct SLRatePitchItf_;
24619c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastentypedef const struct SLRatePitchItf_ * const * SLRatePitchItf;
24629c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
24639c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastenstruct SLRatePitchItf_ {
24649c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*SetRate) (
24659c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLRatePitchItf self,
24669c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLpermille rate
24679c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
24689c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*GetRate) (
24699c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLRatePitchItf self,
24709c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLpermille *pRate
24719c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
24729c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*GetRatePitchCapabilities) (
24739c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLRatePitchItf self,
24749c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLpermille *pMinRate,
24759c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLpermille *pMaxRate
24769c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
24779c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten};
24789c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
24799c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
24809c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/*---------------------------------------------------------------------------*/
24819c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/* Virtualizer Interface                                                      */
24829c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/* --------------------------------------------------------------------------*/
24839c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
24849c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
248500d2d554e04ac369367c903dbf53b975355d1bcdGlenn Kastenextern SLAPIENTRY const SLInterfaceID SL_IID_VIRTUALIZER;
24869c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
24879c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastenstruct SLVirtualizerItf_;
24889c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastentypedef const struct SLVirtualizerItf_ * const * SLVirtualizerItf;
24899c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
24909c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastenstruct SLVirtualizerItf_ {
24919c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*SetEnabled)(
24929c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLVirtualizerItf self,
24939c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLboolean enabled
24949c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
24959c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*IsEnabled)(
24969c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLVirtualizerItf self,
24979c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLboolean *pEnabled
24989c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
24999c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*SetStrength)(
25009c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLVirtualizerItf self,
25019c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLpermille strength
25029c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
25039c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*GetRoundedStrength)(
25049c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLVirtualizerItf self,
25059c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLpermille *pStrength
25069c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
25079c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*IsStrengthSupported)(
25089c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLVirtualizerItf self,
25099c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLboolean *pSupported
25109c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
25119c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten};
25129c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
25139c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/*---------------------------------------------------------------------------*/
25149c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/* Visualization Interface                                                   */
25159c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/* --------------------------------------------------------------------------*/
25169c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
25179c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
251800d2d554e04ac369367c903dbf53b975355d1bcdGlenn Kastenextern SLAPIENTRY const SLInterfaceID SL_IID_VISUALIZATION;
25199c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
25209c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastenstruct SLVisualizationItf_;
25219c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastentypedef const struct SLVisualizationItf_ * const * SLVisualizationItf;
25229c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
252300d2d554e04ac369367c903dbf53b975355d1bcdGlenn Kastentypedef void (/*SLAPIENTRY*/ *slVisualizationCallback) (
25249c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	void *pContext,
25259c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	const SLuint8 waveform[],
25269c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	const SLuint8 fft[],
25279c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLmilliHertz samplerate
25289c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten);
25299c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
25309c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastenstruct SLVisualizationItf_{
25319c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*RegisterVisualizationCallback)(
25329c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLVisualizationItf self,
25339c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		slVisualizationCallback callback,
25349c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		void *pContext,
25359c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLmilliHertz rate
25369c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
25379c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*GetMaxRate)(
25389c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLVisualizationItf self,
25399c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLmilliHertz* pRate
25409c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
25419c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten};
25429c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
25439c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
25449c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/*---------------------------------------------------------------------------*/
25459c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/* Engine Interface                                                          */
25469c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/* --------------------------------------------------------------------------*/
25479c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
25489c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
254900d2d554e04ac369367c903dbf53b975355d1bcdGlenn Kastenextern SLAPIENTRY const SLInterfaceID SL_IID_ENGINE;
25509c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
25519c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastenstruct SLEngineItf_;
25529c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastentypedef const struct SLEngineItf_ * const * SLEngineItf;
25539c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
25549c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
25559c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastenstruct SLEngineItf_ {
25569c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
25579c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*CreateLEDDevice) (
25589c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLEngineItf self,
25599c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLObjectItf * pDevice,
25609c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint32 deviceID,
25619c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint32 numInterfaces,
25629c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		const SLInterfaceID * pInterfaceIds,
25639c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		const SLboolean * pInterfaceRequired
25649c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
25659c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*CreateVibraDevice) (
25669c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLEngineItf self,
25679c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLObjectItf * pDevice,
25689c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint32 deviceID,
25699c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint32 numInterfaces,
25709c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		const SLInterfaceID * pInterfaceIds,
25719c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		const SLboolean * pInterfaceRequired
25729c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
25739c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*CreateAudioPlayer) (
25749c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLEngineItf self,
25759c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLObjectItf * pPlayer,
25769c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLDataSource *pAudioSrc,
25779c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLDataSink *pAudioSnk,
25789c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint32 numInterfaces,
25799c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		const SLInterfaceID * pInterfaceIds,
25809c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		const SLboolean * pInterfaceRequired
25819c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
25829c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*CreateAudioRecorder) (
25839c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLEngineItf self,
25849c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLObjectItf * pRecorder,
25859c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLDataSource *pAudioSrc,
25869c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLDataSink *pAudioSnk,
25879c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint32 numInterfaces,
25889c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		const SLInterfaceID * pInterfaceIds,
25899c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		const SLboolean * pInterfaceRequired
25909c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
25919c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*CreateMidiPlayer) (
25929c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLEngineItf self,
25939c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLObjectItf * pPlayer,
25949c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLDataSource *pMIDISrc,
25959c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLDataSource *pBankSrc,
25969c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLDataSink *pAudioOutput,
25979c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLDataSink *pVibra,
25989c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLDataSink *pLEDArray,
25999c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint32 numInterfaces,
26009c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		const SLInterfaceID * pInterfaceIds,
26019c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		const SLboolean * pInterfaceRequired
26029c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
26039c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*CreateListener) (
26049c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLEngineItf self,
26059c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLObjectItf * pListener,
26069c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint32 numInterfaces,
26079c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		const SLInterfaceID * pInterfaceIds,
26089c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		const SLboolean * pInterfaceRequired
26099c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
26109c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*Create3DGroup) (
26119c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLEngineItf self,
26129c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLObjectItf * pGroup,
26139c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint32 numInterfaces,
26149c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		const SLInterfaceID * pInterfaceIds,
26159c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		const SLboolean * pInterfaceRequired
26169c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
26179c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*CreateOutputMix) (
26189c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLEngineItf self,
26199c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLObjectItf * pMix,
26209c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint32 numInterfaces,
26219c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		const SLInterfaceID * pInterfaceIds,
26229c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		const SLboolean * pInterfaceRequired
26239c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
26249c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*CreateMetadataExtractor) (
26259c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLEngineItf self,
26269c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLObjectItf * pMetadataExtractor,
26279c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLDataSource * pDataSource,
26289c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint32 numInterfaces,
26299c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		const SLInterfaceID * pInterfaceIds,
26309c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		const SLboolean * pInterfaceRequired
26319c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
26329c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten    SLresult (*CreateExtensionObject) (
26339c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten        SLEngineItf self,
26349c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten        SLObjectItf * pObject,
26359c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten        void * pParameters,
26369c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten        SLuint32 objectID,
26379c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten        SLuint32 numInterfaces,
26389c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten        const SLInterfaceID * pInterfaceIds,
26399c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten        const SLboolean * pInterfaceRequired
26409c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten    );
26419c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*QueryNumSupportedInterfaces) (
26429c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLEngineItf self,
26439c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint32 objectID,
26449c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint32 * pNumSupportedInterfaces
26459c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
26469c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*QuerySupportedInterfaces) (
26479c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLEngineItf self,
26489c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint32 objectID,
26499c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint32 index,
26509c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLInterfaceID * pInterfaceId
26519c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
26529c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten    SLresult (*QueryNumSupportedExtensions) (
26539c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten        SLEngineItf self,
26549c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten        SLuint32 * pNumExtensions
26559c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten    );
26569c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten    SLresult (*QuerySupportedExtension) (
2657e3105d7d252fe0d1018c3578a675a8d63714d823Jean-Michel Trivi        SLEngineItf self,
26589c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten        SLuint32 index,
26599c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten        SLchar * pExtensionName,
26609c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten        SLint16 * pNameLength
26619c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten    );
26629c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten    SLresult (*IsExtensionSupported) (
2663e3105d7d252fe0d1018c3578a675a8d63714d823Jean-Michel Trivi        SLEngineItf self,
26649c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten        const SLchar * pExtensionName,
26659c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten        SLboolean * pSupported
26669c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten    );
26679c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten};
26689c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
26699c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
26709c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/*---------------------------------------------------------------------------*/
26719c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/* Engine Capabilities Interface                                             */
26729c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/* --------------------------------------------------------------------------*/
26739c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
26749c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
267500d2d554e04ac369367c903dbf53b975355d1bcdGlenn Kastenextern SLAPIENTRY const SLInterfaceID SL_IID_ENGINECAPABILITIES;
26769c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
26779c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastenstruct SLEngineCapabilitiesItf_;
26789c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastentypedef const struct SLEngineCapabilitiesItf_ * const * SLEngineCapabilitiesItf;
26799c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
26809c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastenstruct SLEngineCapabilitiesItf_ {
26819c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*QuerySupportedProfiles) (
26829c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLEngineCapabilitiesItf self,
26839c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint16 *pProfilesSupported
26849c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
26859c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*QueryAvailableVoices) (
26869c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLEngineCapabilitiesItf self,
26879c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint16 voiceType,
26889c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLint16 *pNumMaxVoices,
26899c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLboolean *pIsAbsoluteMax,
26909c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLint16 *pNumFreeVoices
26919c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
26929c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*QueryNumberOfMIDISynthesizers) (
26939c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLEngineCapabilitiesItf self,
26949c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLint16 *pNumMIDIsynthesizers
26959c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
26969c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*QueryAPIVersion) (
26979c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLEngineCapabilitiesItf self,
26989c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLint16 *pMajor,
26999c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLint16 *pMinor,
27009c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLint16 *pStep
27019c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
27029c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*QueryLEDCapabilities) (
27039c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLEngineCapabilitiesItf self,
27049c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten        SLuint32 *pIndex,
27059c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint32 *pLEDDeviceID,
27069c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLLEDDescriptor *pDescriptor
27079c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
27089c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*QueryVibraCapabilities) (
27099c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLEngineCapabilitiesItf self,
27109c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten        SLuint32 *pIndex,
27119c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLuint32 *pVibraDeviceID,
27129c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLVibraDescriptor *pDescriptor
27139c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
27149c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*IsThreadSafe) (
27159c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLEngineCapabilitiesItf self,
27169c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLboolean *pIsThreadSafe
27179c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
27189c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten};
27199c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
27209c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/*---------------------------------------------------------------------------*/
27219c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/* Thread Sync Interface                                                     */
27229c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/* --------------------------------------------------------------------------*/
27239c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
27249c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
272500d2d554e04ac369367c903dbf53b975355d1bcdGlenn Kastenextern SLAPIENTRY const SLInterfaceID SL_IID_THREADSYNC;
27269c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
27279c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastenstruct SLThreadSyncItf_;
27289c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastentypedef const struct SLThreadSyncItf_ * const * SLThreadSyncItf;
27299c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
27309c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
27319c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastenstruct SLThreadSyncItf_ {
27329c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*EnterCriticalSection) (
27339c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLThreadSyncItf self
27349c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
27359c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLresult (*ExitCriticalSection) (
27369c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten		SLThreadSyncItf self
27379c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	);
27389c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten};
27399c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
27409c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
27419c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/*****************************************************************************/
27429c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/* SL engine constructor                                                     */
27439c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten/*****************************************************************************/
27449c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
27459c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_ENGINEOPTION_THREADSAFE	((SLuint32) 0x00000001)
27469c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#define SL_ENGINEOPTION_LOSSOFCONTROL	((SLuint32) 0x00000002)
27479c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
27489c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kastentypedef struct SLEngineOption_ {
27499c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLuint32 feature;
27509c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLuint32 data;
27519c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten} SLEngineOption;
27529c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
27539c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
27549c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn KastenSLresult SLAPIENTRY slCreateEngine(
27559c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLObjectItf             *pEngine,
27569c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLuint32                numOptions,
27579c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	const SLEngineOption    *pEngineOptions,
27589c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLuint32                numInterfaces,
27599c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	const SLInterfaceID     *pInterfaceIds,
27609c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	const SLboolean         * pInterfaceRequired
27619c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten);
27629c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
27639c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn KastenSLresult SLAPIENTRY slQueryNumSupportedEngineInterfaces(
27649c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLuint32 * pNumSupportedInterfaces
27659c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten);
27669c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
27679c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn KastenSLresult SLAPIENTRY slQuerySupportedEngineInterfaces(
27689c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLuint32 index,
27699c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten	SLInterfaceID * pInterfaceId
27709c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten);
27719c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
27729c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#ifdef __cplusplus
27739c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten} /* extern "C" */
27749c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#endif
27759c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten
27769c3a1c1711ec228a236b59b461aeaa3e925ce3b8Glenn Kasten#endif /* OPENSL_ES_H_ */
2777