17777dab0Sopenharmony_ci/*
27777dab0Sopenharmony_ci * Copyright (c) 2007-2009 The Khronos Group Inc.
37777dab0Sopenharmony_ci *
47777dab0Sopenharmony_ci * Permission is hereby granted, free of charge, to any person obtaining a copy of
57777dab0Sopenharmony_ci * this software and /or associated documentation files (the "Materials "), to
67777dab0Sopenharmony_ci * deal in the Materials without restriction, including without limitation the
77777dab0Sopenharmony_ci * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
87777dab0Sopenharmony_ci * sell copies of the Materials, and to permit persons to whom the Materials are
97777dab0Sopenharmony_ci * furnished to do so, subject to
107777dab0Sopenharmony_ci * the following conditions:
117777dab0Sopenharmony_ci *
127777dab0Sopenharmony_ci * The above copyright notice and this permission notice shall be included
137777dab0Sopenharmony_ci * in all copies or substantial portions of the Materials.
147777dab0Sopenharmony_ci *
157777dab0Sopenharmony_ci * THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
167777dab0Sopenharmony_ci * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
177777dab0Sopenharmony_ci * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
187777dab0Sopenharmony_ci * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
197777dab0Sopenharmony_ci * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
207777dab0Sopenharmony_ci * OUT OF OR IN CONNECTION WITH THE MATERIALS OR THE USE OR OTHER DEALINGS IN THE
217777dab0Sopenharmony_ci * MATERIALS.
227777dab0Sopenharmony_ci *
237777dab0Sopenharmony_ci * OpenSLES.h - OpenSL ES version 1.0.1
247777dab0Sopenharmony_ci *
257777dab0Sopenharmony_ci */
267777dab0Sopenharmony_ci
277777dab0Sopenharmony_ci/****************************************************************************/
287777dab0Sopenharmony_ci/* NOTE: This file is a standard OpenSL ES header file and should not be    */
297777dab0Sopenharmony_ci/* modified in any way.                                                     */
307777dab0Sopenharmony_ci/****************************************************************************/
317777dab0Sopenharmony_ci
327777dab0Sopenharmony_ci#ifndef OPENSL_ES_H_
337777dab0Sopenharmony_ci#define OPENSL_ES_H_
347777dab0Sopenharmony_ci
357777dab0Sopenharmony_ci#ifdef __cplusplus
367777dab0Sopenharmony_ciextern "C" {
377777dab0Sopenharmony_ci#endif
387777dab0Sopenharmony_ci
397777dab0Sopenharmony_ci#include "OpenSLES_Platform.h"
407777dab0Sopenharmony_ci
417777dab0Sopenharmony_ci
427777dab0Sopenharmony_ci/*****************************************************************************/
437777dab0Sopenharmony_ci/* Common types, structures, and defines                                */
447777dab0Sopenharmony_ci/*****************************************************************************/
457777dab0Sopenharmony_ci
467777dab0Sopenharmony_ci#ifndef _KHRONOS_KEYS_
477777dab0Sopenharmony_ci#define _KHRONOS_KEYS_
487777dab0Sopenharmony_ci
497777dab0Sopenharmony_ci#define KHRONOS_TITLE "KhronosTitle"
507777dab0Sopenharmony_ci#define KHRONOS_ALBUM "KhronosAlbum"
517777dab0Sopenharmony_ci#define KHRONOS_TRACK_NUMBER "KhronosTrackNumber"
527777dab0Sopenharmony_ci#define KHRONOS_ARTIST "KhronosArtist"
537777dab0Sopenharmony_ci#define KHRONOS_GENRE "KhronosGenre"
547777dab0Sopenharmony_ci#define KHRONOS_YEAR "KhronosYear"
557777dab0Sopenharmony_ci#define KHRONOS_COMMENT "KhronosComment"
567777dab0Sopenharmony_ci#define KHRONOS_ARTIST_URL "KhronosArtistURL"
577777dab0Sopenharmony_ci#define KHRONOS_CONTENT_URL "KhronosContentURL"
587777dab0Sopenharmony_ci#define KHRONOS_RATING "KhronosRating"
597777dab0Sopenharmony_ci#define KHRONOS_ALBUM_ART "KhronosAlbumArt"
607777dab0Sopenharmony_ci#define KHRONOS_COPYRIGHT "KhronosCopyright"
617777dab0Sopenharmony_ci
627777dab0Sopenharmony_ci#endif
637777dab0Sopenharmony_ci
647777dab0Sopenharmony_ci
657777dab0Sopenharmony_ci/* remap common types to SL types for clarity */
667777dab0Sopenharmony_citypedef sl_int8_t              SLint8;          /* 8 bit signed integer  */
677777dab0Sopenharmony_citypedef sl_uint8_t             SLuint8;         /* 8 bit unsigned integer */
687777dab0Sopenharmony_citypedef sl_int16_t             SLint16;         /* 16 bit signed integer */
697777dab0Sopenharmony_citypedef sl_uint16_t            SLuint16;        /* 16 bit unsigned integer */
707777dab0Sopenharmony_citypedef sl_int32_t             SLint32;           /* 32 bit signed integer */
717777dab0Sopenharmony_citypedef sl_uint32_t            SLuint32;          /* 32 bit unsigned integer */
727777dab0Sopenharmony_ci
737777dab0Sopenharmony_citypedef SLuint32                    SLboolean;
747777dab0Sopenharmony_ci#define SL_BOOLEAN_FALSE            ((SLboolean) 0x00000000)
757777dab0Sopenharmony_ci#define SL_BOOLEAN_TRUE             ((SLboolean) 0x00000001)
767777dab0Sopenharmony_ci
777777dab0Sopenharmony_citypedef SLuint8						SLchar;			/* UTF-8 is to be used */
787777dab0Sopenharmony_citypedef SLint16						SLmillibel;
797777dab0Sopenharmony_citypedef SLuint32					SLmillisecond;
807777dab0Sopenharmony_citypedef SLuint32					SLmilliHertz;
817777dab0Sopenharmony_citypedef SLint32						SLmillimeter;
827777dab0Sopenharmony_citypedef SLint32						SLmillidegree;
837777dab0Sopenharmony_citypedef SLint16						SLpermille;
847777dab0Sopenharmony_citypedef SLuint32					SLmicrosecond;
857777dab0Sopenharmony_citypedef SLuint32					SLresult;
867777dab0Sopenharmony_ci
877777dab0Sopenharmony_ci#define SL_MILLIBEL_MAX 	((SLmillibel) 0x7FFF)
887777dab0Sopenharmony_ci#define SL_MILLIBEL_MIN 	((SLmillibel) (-SL_MILLIBEL_MAX-1))
897777dab0Sopenharmony_ci
907777dab0Sopenharmony_ci#define SL_MILLIHERTZ_MAX	((SLmilliHertz) 0xFFFFFFFF)
917777dab0Sopenharmony_ci#define SL_MILLIMETER_MAX	((SLmillimeter) 0x7FFFFFFF)
927777dab0Sopenharmony_ci
937777dab0Sopenharmony_ci/** Interface ID defined as a UUID */
947777dab0Sopenharmony_citypedef const struct SLInterfaceID_ {
957777dab0Sopenharmony_ci    SLuint32 time_low;
967777dab0Sopenharmony_ci    SLuint16 time_mid;
977777dab0Sopenharmony_ci    SLuint16 time_hi_and_version;
987777dab0Sopenharmony_ci    SLuint16 clock_seq;
997777dab0Sopenharmony_ci    SLuint8  node[6];
1007777dab0Sopenharmony_ci} * SLInterfaceID;
1017777dab0Sopenharmony_ci
1027777dab0Sopenharmony_ci/* Forward declaration for the object interface */
1037777dab0Sopenharmony_cistruct SLObjectItf_;
1047777dab0Sopenharmony_ci
1057777dab0Sopenharmony_citypedef const struct SLObjectItf_ * const * SLObjectItf;
1067777dab0Sopenharmony_ci
1077777dab0Sopenharmony_ci/* Objects ID's */
1087777dab0Sopenharmony_ci
1097777dab0Sopenharmony_ci#define SL_OBJECTID_ENGINE			((SLuint32) 0x00001001)
1107777dab0Sopenharmony_ci#define SL_OBJECTID_LEDDEVICE		((SLuint32) 0x00001002)
1117777dab0Sopenharmony_ci#define SL_OBJECTID_VIBRADEVICE		((SLuint32) 0x00001003)
1127777dab0Sopenharmony_ci#define SL_OBJECTID_AUDIOPLAYER		((SLuint32) 0x00001004)
1137777dab0Sopenharmony_ci#define SL_OBJECTID_AUDIORECORDER	((SLuint32) 0x00001005)
1147777dab0Sopenharmony_ci#define SL_OBJECTID_MIDIPLAYER		((SLuint32) 0x00001006)
1157777dab0Sopenharmony_ci#define SL_OBJECTID_LISTENER		((SLuint32) 0x00001007)
1167777dab0Sopenharmony_ci#define SL_OBJECTID_3DGROUP			((SLuint32) 0x00001008)
1177777dab0Sopenharmony_ci#define SL_OBJECTID_OUTPUTMIX		((SLuint32) 0x00001009)
1187777dab0Sopenharmony_ci#define SL_OBJECTID_METADATAEXTRACTOR	((SLuint32) 0x0000100A)
1197777dab0Sopenharmony_ci
1207777dab0Sopenharmony_ci
1217777dab0Sopenharmony_ci/* SL Profiles */
1227777dab0Sopenharmony_ci
1237777dab0Sopenharmony_ci#define SL_PROFILES_PHONE	((SLuint16) 0x0001)
1247777dab0Sopenharmony_ci#define SL_PROFILES_MUSIC	((SLuint16) 0x0002)
1257777dab0Sopenharmony_ci#define SL_PROFILES_GAME	((SLuint16) 0x0004)
1267777dab0Sopenharmony_ci
1277777dab0Sopenharmony_ci/* Types of voices supported by the system */
1287777dab0Sopenharmony_ci
1297777dab0Sopenharmony_ci#define SL_VOICETYPE_2D_AUDIO		((SLuint16) 0x0001)
1307777dab0Sopenharmony_ci#define SL_VOICETYPE_MIDI			((SLuint16) 0x0002)
1317777dab0Sopenharmony_ci#define SL_VOICETYPE_3D_AUDIO 		((SLuint16) 0x0004)
1327777dab0Sopenharmony_ci#define SL_VOICETYPE_3D_MIDIOUTPUT 	((SLuint16) 0x0008)
1337777dab0Sopenharmony_ci
1347777dab0Sopenharmony_ci/* Convenient macros representing various different priority levels, for use with the SetPriority method */
1357777dab0Sopenharmony_ci
1367777dab0Sopenharmony_ci#define SL_PRIORITY_LOWEST		((SLint32) (-0x7FFFFFFF-1))
1377777dab0Sopenharmony_ci#define SL_PRIORITY_VERYLOW		((SLint32) -0x60000000)
1387777dab0Sopenharmony_ci#define SL_PRIORITY_LOW			((SLint32) -0x40000000)
1397777dab0Sopenharmony_ci#define SL_PRIORITY_BELOWNORMAL	((SLint32) -0x20000000)
1407777dab0Sopenharmony_ci#define SL_PRIORITY_NORMAL		((SLint32) 0x00000000)
1417777dab0Sopenharmony_ci#define SL_PRIORITY_ABOVENORMAL	((SLint32) 0x20000000)
1427777dab0Sopenharmony_ci#define SL_PRIORITY_HIGH		((SLint32) 0x40000000)
1437777dab0Sopenharmony_ci#define SL_PRIORITY_VERYHIGH	((SLint32) 0x60000000)
1447777dab0Sopenharmony_ci#define SL_PRIORITY_HIGHEST	((SLint32) 0x7FFFFFFF)
1457777dab0Sopenharmony_ci
1467777dab0Sopenharmony_ci
1477777dab0Sopenharmony_ci/** These macros list the various sample formats that are possible on audio input and output devices. */
1487777dab0Sopenharmony_ci
1497777dab0Sopenharmony_ci#define SL_PCMSAMPLEFORMAT_FIXED_8	((SLuint16) 0x0008)
1507777dab0Sopenharmony_ci#define SL_PCMSAMPLEFORMAT_FIXED_16	((SLuint16) 0x0010)
1517777dab0Sopenharmony_ci#define SL_PCMSAMPLEFORMAT_FIXED_20 	((SLuint16) 0x0014)
1527777dab0Sopenharmony_ci#define SL_PCMSAMPLEFORMAT_FIXED_24	((SLuint16) 0x0018)
1537777dab0Sopenharmony_ci#define SL_PCMSAMPLEFORMAT_FIXED_28 	((SLuint16) 0x001C)
1547777dab0Sopenharmony_ci#define SL_PCMSAMPLEFORMAT_FIXED_32	((SLuint16) 0x0020)
1557777dab0Sopenharmony_ci
1567777dab0Sopenharmony_ci
1577777dab0Sopenharmony_ci/** These macros specify the commonly used sampling rates (in milliHertz) supported by most audio I/O devices. */
1587777dab0Sopenharmony_ci
1597777dab0Sopenharmony_ci#define SL_SAMPLINGRATE_8		((SLuint32) 8000000)
1607777dab0Sopenharmony_ci#define SL_SAMPLINGRATE_11_025	((SLuint32) 11025000)
1617777dab0Sopenharmony_ci#define SL_SAMPLINGRATE_12		((SLuint32) 12000000)
1627777dab0Sopenharmony_ci#define SL_SAMPLINGRATE_16		((SLuint32) 16000000)
1637777dab0Sopenharmony_ci#define SL_SAMPLINGRATE_22_05	((SLuint32) 22050000)
1647777dab0Sopenharmony_ci#define SL_SAMPLINGRATE_24		((SLuint32) 24000000)
1657777dab0Sopenharmony_ci#define SL_SAMPLINGRATE_32		((SLuint32) 32000000)
1667777dab0Sopenharmony_ci#define SL_SAMPLINGRATE_44_1	((SLuint32) 44100000)
1677777dab0Sopenharmony_ci#define SL_SAMPLINGRATE_48		((SLuint32) 48000000)
1687777dab0Sopenharmony_ci#define SL_SAMPLINGRATE_64		((SLuint32) 64000000)
1697777dab0Sopenharmony_ci#define SL_SAMPLINGRATE_88_2	((SLuint32) 88200000)
1707777dab0Sopenharmony_ci#define SL_SAMPLINGRATE_96		((SLuint32) 96000000)
1717777dab0Sopenharmony_ci#define SL_SAMPLINGRATE_192	((SLuint32) 192000000)
1727777dab0Sopenharmony_ci
1737777dab0Sopenharmony_ci#define SL_SPEAKER_FRONT_LEFT			((SLuint32) 0x00000001)
1747777dab0Sopenharmony_ci#define SL_SPEAKER_FRONT_RIGHT			((SLuint32) 0x00000002)
1757777dab0Sopenharmony_ci#define SL_SPEAKER_FRONT_CENTER			((SLuint32) 0x00000004)
1767777dab0Sopenharmony_ci#define SL_SPEAKER_LOW_FREQUENCY			((SLuint32) 0x00000008)
1777777dab0Sopenharmony_ci#define SL_SPEAKER_BACK_LEFT			((SLuint32) 0x00000010)
1787777dab0Sopenharmony_ci#define SL_SPEAKER_BACK_RIGHT			((SLuint32) 0x00000020)
1797777dab0Sopenharmony_ci#define SL_SPEAKER_FRONT_LEFT_OF_CENTER	((SLuint32) 0x00000040)
1807777dab0Sopenharmony_ci#define SL_SPEAKER_FRONT_RIGHT_OF_CENTER	((SLuint32) 0x00000080)
1817777dab0Sopenharmony_ci#define SL_SPEAKER_BACK_CENTER			((SLuint32) 0x00000100)
1827777dab0Sopenharmony_ci#define SL_SPEAKER_SIDE_LEFT			((SLuint32) 0x00000200)
1837777dab0Sopenharmony_ci#define SL_SPEAKER_SIDE_RIGHT			((SLuint32) 0x00000400)
1847777dab0Sopenharmony_ci#define SL_SPEAKER_TOP_CENTER			((SLuint32) 0x00000800)
1857777dab0Sopenharmony_ci#define SL_SPEAKER_TOP_FRONT_LEFT		((SLuint32) 0x00001000)
1867777dab0Sopenharmony_ci#define SL_SPEAKER_TOP_FRONT_CENTER		((SLuint32) 0x00002000)
1877777dab0Sopenharmony_ci#define SL_SPEAKER_TOP_FRONT_RIGHT		((SLuint32) 0x00004000)
1887777dab0Sopenharmony_ci#define SL_SPEAKER_TOP_BACK_LEFT			((SLuint32) 0x00008000)
1897777dab0Sopenharmony_ci#define SL_SPEAKER_TOP_BACK_CENTER		((SLuint32) 0x00010000)
1907777dab0Sopenharmony_ci#define SL_SPEAKER_TOP_BACK_RIGHT		((SLuint32) 0x00020000)
1917777dab0Sopenharmony_ci
1927777dab0Sopenharmony_ci
1937777dab0Sopenharmony_ci/*****************************************************************************/
1947777dab0Sopenharmony_ci/* Errors                                                                    */
1957777dab0Sopenharmony_ci/*                                                                           */
1967777dab0Sopenharmony_ci/*****************************************************************************/
1977777dab0Sopenharmony_ci
1987777dab0Sopenharmony_ci#define SL_RESULT_SUCCESS				((SLuint32) 0x00000000)
1997777dab0Sopenharmony_ci#define SL_RESULT_PRECONDITIONS_VIOLATED	((SLuint32) 0x00000001)
2007777dab0Sopenharmony_ci#define SL_RESULT_PARAMETER_INVALID		((SLuint32) 0x00000002)
2017777dab0Sopenharmony_ci#define SL_RESULT_MEMORY_FAILURE			((SLuint32) 0x00000003)
2027777dab0Sopenharmony_ci#define SL_RESULT_RESOURCE_ERROR			((SLuint32) 0x00000004)
2037777dab0Sopenharmony_ci#define SL_RESULT_RESOURCE_LOST			((SLuint32) 0x00000005)
2047777dab0Sopenharmony_ci#define SL_RESULT_IO_ERROR				((SLuint32) 0x00000006)
2057777dab0Sopenharmony_ci#define SL_RESULT_BUFFER_INSUFFICIENT		((SLuint32) 0x00000007)
2067777dab0Sopenharmony_ci#define SL_RESULT_CONTENT_CORRUPTED		((SLuint32) 0x00000008)
2077777dab0Sopenharmony_ci#define SL_RESULT_CONTENT_UNSUPPORTED		((SLuint32) 0x00000009)
2087777dab0Sopenharmony_ci#define SL_RESULT_CONTENT_NOT_FOUND		((SLuint32) 0x0000000A)
2097777dab0Sopenharmony_ci#define SL_RESULT_PERMISSION_DENIED		((SLuint32) 0x0000000B)
2107777dab0Sopenharmony_ci#define SL_RESULT_FEATURE_UNSUPPORTED		((SLuint32) 0x0000000C)
2117777dab0Sopenharmony_ci#define SL_RESULT_INTERNAL_ERROR			((SLuint32) 0x0000000D)
2127777dab0Sopenharmony_ci#define SL_RESULT_UNKNOWN_ERROR			((SLuint32) 0x0000000E)
2137777dab0Sopenharmony_ci#define SL_RESULT_OPERATION_ABORTED		((SLuint32) 0x0000000F)
2147777dab0Sopenharmony_ci#define SL_RESULT_CONTROL_LOST			((SLuint32) 0x00000010)
2157777dab0Sopenharmony_ci
2167777dab0Sopenharmony_ci
2177777dab0Sopenharmony_ci/* Object state definitions */
2187777dab0Sopenharmony_ci
2197777dab0Sopenharmony_ci#define SL_OBJECT_STATE_UNREALIZED	((SLuint32) 0x00000001)
2207777dab0Sopenharmony_ci#define SL_OBJECT_STATE_REALIZED		((SLuint32) 0x00000002)
2217777dab0Sopenharmony_ci#define SL_OBJECT_STATE_SUSPENDED	((SLuint32) 0x00000003)
2227777dab0Sopenharmony_ci
2237777dab0Sopenharmony_ci/* Object event definitions */
2247777dab0Sopenharmony_ci
2257777dab0Sopenharmony_ci#define SL_OBJECT_EVENT_RUNTIME_ERROR			((SLuint32) 0x00000001)
2267777dab0Sopenharmony_ci#define SL_OBJECT_EVENT_ASYNC_TERMINATION		((SLuint32) 0x00000002)
2277777dab0Sopenharmony_ci#define SL_OBJECT_EVENT_RESOURCES_LOST			((SLuint32) 0x00000003)
2287777dab0Sopenharmony_ci#define SL_OBJECT_EVENT_RESOURCES_AVAILABLE		((SLuint32) 0x00000004)
2297777dab0Sopenharmony_ci#define SL_OBJECT_EVENT_ITF_CONTROL_TAKEN		((SLuint32) 0x00000005)
2307777dab0Sopenharmony_ci#define SL_OBJECT_EVENT_ITF_CONTROL_RETURNED		((SLuint32) 0x00000006)
2317777dab0Sopenharmony_ci#define SL_OBJECT_EVENT_ITF_PARAMETERS_CHANGED	((SLuint32) 0x00000007)
2327777dab0Sopenharmony_ci
2337777dab0Sopenharmony_ci
2347777dab0Sopenharmony_ci/*****************************************************************************/
2357777dab0Sopenharmony_ci/* Interface definitions                                                     */
2367777dab0Sopenharmony_ci/*****************************************************************************/
2377777dab0Sopenharmony_ci
2387777dab0Sopenharmony_ci/** NULL Interface */
2397777dab0Sopenharmony_ci
2407777dab0Sopenharmony_ciextern const SLInterfaceID SL_IID_NULL;
2417777dab0Sopenharmony_ci
2427777dab0Sopenharmony_ci/*---------------------------------------------------------------------------*/
2437777dab0Sopenharmony_ci/* Data Source and Data Sink Structures                                      */
2447777dab0Sopenharmony_ci/*---------------------------------------------------------------------------*/
2457777dab0Sopenharmony_ci
2467777dab0Sopenharmony_ci/** Data locator macros  */
2477777dab0Sopenharmony_ci#define SL_DATALOCATOR_URI			((SLuint32) 0x00000001)
2487777dab0Sopenharmony_ci#define SL_DATALOCATOR_ADDRESS		((SLuint32) 0x00000002)
2497777dab0Sopenharmony_ci#define SL_DATALOCATOR_IODEVICE		((SLuint32) 0x00000003)
2507777dab0Sopenharmony_ci#define SL_DATALOCATOR_OUTPUTMIX		((SLuint32) 0x00000004)
2517777dab0Sopenharmony_ci#define SL_DATALOCATOR_RESERVED5		((SLuint32) 0x00000005)
2527777dab0Sopenharmony_ci#define SL_DATALOCATOR_BUFFERQUEUE	((SLuint32) 0x00000006)
2537777dab0Sopenharmony_ci#define SL_DATALOCATOR_MIDIBUFFERQUEUE	((SLuint32) 0x00000007)
2547777dab0Sopenharmony_ci#define SL_DATALOCATOR_RESERVED8		((SLuint32) 0x00000008)
2557777dab0Sopenharmony_ci
2567777dab0Sopenharmony_ci
2577777dab0Sopenharmony_ci
2587777dab0Sopenharmony_ci/** URI-based data locator definition where locatorType must be SL_DATALOCATOR_URI*/
2597777dab0Sopenharmony_citypedef struct SLDataLocator_URI_ {
2607777dab0Sopenharmony_ci	SLuint32 		locatorType;
2617777dab0Sopenharmony_ci	SLchar *		URI;
2627777dab0Sopenharmony_ci} SLDataLocator_URI;
2637777dab0Sopenharmony_ci
2647777dab0Sopenharmony_ci/** Address-based data locator definition where locatorType must be SL_DATALOCATOR_ADDRESS*/
2657777dab0Sopenharmony_citypedef struct SLDataLocator_Address_ {
2667777dab0Sopenharmony_ci	SLuint32 	locatorType;
2677777dab0Sopenharmony_ci	void 		*pAddress;
2687777dab0Sopenharmony_ci	SLuint32	length;
2697777dab0Sopenharmony_ci} SLDataLocator_Address;
2707777dab0Sopenharmony_ci
2717777dab0Sopenharmony_ci/** IODevice-types */
2727777dab0Sopenharmony_ci#define SL_IODEVICE_AUDIOINPUT	((SLuint32) 0x00000001)
2737777dab0Sopenharmony_ci#define SL_IODEVICE_LEDARRAY	((SLuint32) 0x00000002)
2747777dab0Sopenharmony_ci#define SL_IODEVICE_VIBRA		((SLuint32) 0x00000003)
2757777dab0Sopenharmony_ci#define SL_IODEVICE_RESERVED4	((SLuint32) 0x00000004)
2767777dab0Sopenharmony_ci#define SL_IODEVICE_RESERVED5	((SLuint32) 0x00000005)
2777777dab0Sopenharmony_ci
2787777dab0Sopenharmony_ci/** IODevice-based data locator definition where locatorType must be SL_DATALOCATOR_IODEVICE*/
2797777dab0Sopenharmony_citypedef struct SLDataLocator_IODevice_ {
2807777dab0Sopenharmony_ci	SLuint32	locatorType;
2817777dab0Sopenharmony_ci	SLuint32	deviceType;
2827777dab0Sopenharmony_ci	SLuint32	deviceID;
2837777dab0Sopenharmony_ci	SLObjectItf	device;
2847777dab0Sopenharmony_ci} SLDataLocator_IODevice;
2857777dab0Sopenharmony_ci
2867777dab0Sopenharmony_ci/** OutputMix-based data locator definition where locatorType must be SL_DATALOCATOR_OUTPUTMIX*/
2877777dab0Sopenharmony_citypedef struct SLDataLocator_OutputMix {
2887777dab0Sopenharmony_ci	SLuint32 		locatorType;
2897777dab0Sopenharmony_ci	SLObjectItf		outputMix;
2907777dab0Sopenharmony_ci} SLDataLocator_OutputMix;
2917777dab0Sopenharmony_ci
2927777dab0Sopenharmony_ci
2937777dab0Sopenharmony_ci/** BufferQueue-based data locator definition where locatorType must be SL_DATALOCATOR_BUFFERQUEUE*/
2947777dab0Sopenharmony_citypedef struct SLDataLocator_BufferQueue {
2957777dab0Sopenharmony_ci	SLuint32	locatorType;
2967777dab0Sopenharmony_ci	SLuint32	numBuffers;
2977777dab0Sopenharmony_ci} SLDataLocator_BufferQueue;
2987777dab0Sopenharmony_ci
2997777dab0Sopenharmony_ci/** MidiBufferQueue-based data locator definition where locatorType must be SL_DATALOCATOR_MIDIBUFFERQUEUE*/
3007777dab0Sopenharmony_citypedef struct SLDataLocator_MIDIBufferQueue {
3017777dab0Sopenharmony_ci	SLuint32	locatorType;
3027777dab0Sopenharmony_ci	SLuint32	tpqn;
3037777dab0Sopenharmony_ci	SLuint32	numBuffers;
3047777dab0Sopenharmony_ci} SLDataLocator_MIDIBufferQueue;
3057777dab0Sopenharmony_ci
3067777dab0Sopenharmony_ci/** Data format defines */
3077777dab0Sopenharmony_ci#define SL_DATAFORMAT_MIME		((SLuint32) 0x00000001)
3087777dab0Sopenharmony_ci#define SL_DATAFORMAT_PCM		((SLuint32) 0x00000002)
3097777dab0Sopenharmony_ci#define SL_DATAFORMAT_RESERVED3	((SLuint32) 0x00000003)
3107777dab0Sopenharmony_ci
3117777dab0Sopenharmony_ci
3127777dab0Sopenharmony_ci/** MIME-type-based data format definition where formatType must be SL_DATAFORMAT_MIME*/
3137777dab0Sopenharmony_citypedef struct SLDataFormat_MIME_ {
3147777dab0Sopenharmony_ci	SLuint32 		formatType;
3157777dab0Sopenharmony_ci	SLchar * 		mimeType;
3167777dab0Sopenharmony_ci	SLuint32		containerType;
3177777dab0Sopenharmony_ci} SLDataFormat_MIME;
3187777dab0Sopenharmony_ci
3197777dab0Sopenharmony_ci/* Byte order of a block of 16- or 32-bit data */
3207777dab0Sopenharmony_ci#define SL_BYTEORDER_BIGENDIAN				((SLuint32) 0x00000001)
3217777dab0Sopenharmony_ci#define SL_BYTEORDER_LITTLEENDIAN			((SLuint32) 0x00000002)
3227777dab0Sopenharmony_ci
3237777dab0Sopenharmony_ci/* Container type */
3247777dab0Sopenharmony_ci#define SL_CONTAINERTYPE_UNSPECIFIED	((SLuint32) 0x00000001)
3257777dab0Sopenharmony_ci#define SL_CONTAINERTYPE_RAW		((SLuint32) 0x00000002)
3267777dab0Sopenharmony_ci#define SL_CONTAINERTYPE_ASF		((SLuint32) 0x00000003)
3277777dab0Sopenharmony_ci#define SL_CONTAINERTYPE_AVI		((SLuint32) 0x00000004)
3287777dab0Sopenharmony_ci#define SL_CONTAINERTYPE_BMP		((SLuint32) 0x00000005)
3297777dab0Sopenharmony_ci#define SL_CONTAINERTYPE_JPG		((SLuint32) 0x00000006)
3307777dab0Sopenharmony_ci#define SL_CONTAINERTYPE_JPG2000		((SLuint32) 0x00000007)
3317777dab0Sopenharmony_ci#define SL_CONTAINERTYPE_M4A		((SLuint32) 0x00000008)
3327777dab0Sopenharmony_ci#define SL_CONTAINERTYPE_MP3		((SLuint32) 0x00000009)
3337777dab0Sopenharmony_ci#define SL_CONTAINERTYPE_MP4		((SLuint32) 0x0000000A)
3347777dab0Sopenharmony_ci#define SL_CONTAINERTYPE_MPEG_ES		((SLuint32) 0x0000000B)
3357777dab0Sopenharmony_ci#define SL_CONTAINERTYPE_MPEG_PS		((SLuint32) 0x0000000C)
3367777dab0Sopenharmony_ci#define SL_CONTAINERTYPE_MPEG_TS		((SLuint32) 0x0000000D)
3377777dab0Sopenharmony_ci#define SL_CONTAINERTYPE_QT		((SLuint32) 0x0000000E)
3387777dab0Sopenharmony_ci#define SL_CONTAINERTYPE_WAV		((SLuint32) 0x0000000F)
3397777dab0Sopenharmony_ci#define SL_CONTAINERTYPE_XMF_0		((SLuint32) 0x00000010)
3407777dab0Sopenharmony_ci#define SL_CONTAINERTYPE_XMF_1		((SLuint32) 0x00000011)
3417777dab0Sopenharmony_ci#define SL_CONTAINERTYPE_XMF_2		((SLuint32) 0x00000012)
3427777dab0Sopenharmony_ci#define SL_CONTAINERTYPE_XMF_3		((SLuint32) 0x00000013)
3437777dab0Sopenharmony_ci#define SL_CONTAINERTYPE_XMF_GENERIC	((SLuint32) 0x00000014)
3447777dab0Sopenharmony_ci#define SL_CONTAINERTYPE_AMR  		((SLuint32) 0x00000015)
3457777dab0Sopenharmony_ci#define SL_CONTAINERTYPE_AAC		((SLuint32) 0x00000016)
3467777dab0Sopenharmony_ci#define SL_CONTAINERTYPE_3GPP		((SLuint32) 0x00000017)
3477777dab0Sopenharmony_ci#define SL_CONTAINERTYPE_3GA		((SLuint32) 0x00000018)
3487777dab0Sopenharmony_ci#define SL_CONTAINERTYPE_RM		((SLuint32) 0x00000019)
3497777dab0Sopenharmony_ci#define SL_CONTAINERTYPE_DMF		((SLuint32) 0x0000001A)
3507777dab0Sopenharmony_ci#define SL_CONTAINERTYPE_SMF		((SLuint32) 0x0000001B)
3517777dab0Sopenharmony_ci#define SL_CONTAINERTYPE_MOBILE_DLS	((SLuint32) 0x0000001C)
3527777dab0Sopenharmony_ci#define SL_CONTAINERTYPE_OGG	((SLuint32) 0x0000001D)
3537777dab0Sopenharmony_ci
3547777dab0Sopenharmony_ci
3557777dab0Sopenharmony_ci/** PCM-type-based data format definition where formatType must be SL_DATAFORMAT_PCM*/
3567777dab0Sopenharmony_citypedef struct SLDataFormat_PCM_ {
3577777dab0Sopenharmony_ci	SLuint32 		formatType;
3587777dab0Sopenharmony_ci	SLuint32 		numChannels;
3597777dab0Sopenharmony_ci	SLuint32 		samplesPerSec;
3607777dab0Sopenharmony_ci	SLuint32 		bitsPerSample;
3617777dab0Sopenharmony_ci	SLuint32 		containerSize;
3627777dab0Sopenharmony_ci	SLuint32 		channelMask;
3637777dab0Sopenharmony_ci	SLuint32		endianness;
3647777dab0Sopenharmony_ci} SLDataFormat_PCM;
3657777dab0Sopenharmony_ci
3667777dab0Sopenharmony_citypedef struct SLDataSource_ {
3677777dab0Sopenharmony_ci	void *pLocator;
3687777dab0Sopenharmony_ci	void *pFormat;
3697777dab0Sopenharmony_ci} SLDataSource;
3707777dab0Sopenharmony_ci
3717777dab0Sopenharmony_ci
3727777dab0Sopenharmony_citypedef struct SLDataSink_ {
3737777dab0Sopenharmony_ci	void *pLocator;
3747777dab0Sopenharmony_ci	void *pFormat;
3757777dab0Sopenharmony_ci} SLDataSink;
3767777dab0Sopenharmony_ci
3777777dab0Sopenharmony_ci
3787777dab0Sopenharmony_ci
3797777dab0Sopenharmony_ci
3807777dab0Sopenharmony_ci
3817777dab0Sopenharmony_ci
3827777dab0Sopenharmony_ci/*---------------------------------------------------------------------------*/
3837777dab0Sopenharmony_ci/* Standard Object Interface                                                 */
3847777dab0Sopenharmony_ci/*---------------------------------------------------------------------------*/
3857777dab0Sopenharmony_ci
3867777dab0Sopenharmony_ciextern const SLInterfaceID SL_IID_OBJECT;
3877777dab0Sopenharmony_ci
3887777dab0Sopenharmony_ci/** Object callback */
3897777dab0Sopenharmony_ci
3907777dab0Sopenharmony_ci
3917777dab0Sopenharmony_citypedef void (SLAPIENTRY *slObjectCallback) (
3927777dab0Sopenharmony_ci	SLObjectItf caller,
3937777dab0Sopenharmony_ci	const void * pContext,
3947777dab0Sopenharmony_ci	SLuint32 event,
3957777dab0Sopenharmony_ci	SLresult result,
3967777dab0Sopenharmony_ci    SLuint32 param,
3977777dab0Sopenharmony_ci    void *pInterface
3987777dab0Sopenharmony_ci);
3997777dab0Sopenharmony_ci
4007777dab0Sopenharmony_ci
4017777dab0Sopenharmony_cistruct SLObjectItf_ {
4027777dab0Sopenharmony_ci	SLresult (*Realize) (
4037777dab0Sopenharmony_ci		SLObjectItf self,
4047777dab0Sopenharmony_ci		SLboolean async
4057777dab0Sopenharmony_ci	);
4067777dab0Sopenharmony_ci	SLresult (*Resume) (
4077777dab0Sopenharmony_ci		SLObjectItf self,
4087777dab0Sopenharmony_ci		SLboolean async
4097777dab0Sopenharmony_ci	);
4107777dab0Sopenharmony_ci	SLresult (*GetState) (
4117777dab0Sopenharmony_ci		SLObjectItf self,
4127777dab0Sopenharmony_ci		SLuint32 * pState
4137777dab0Sopenharmony_ci	);
4147777dab0Sopenharmony_ci	SLresult (*GetInterface) (
4157777dab0Sopenharmony_ci		SLObjectItf self,
4167777dab0Sopenharmony_ci		const SLInterfaceID iid,
4177777dab0Sopenharmony_ci		void * pInterface
4187777dab0Sopenharmony_ci	);
4197777dab0Sopenharmony_ci	SLresult (*RegisterCallback) (
4207777dab0Sopenharmony_ci		SLObjectItf self,
4217777dab0Sopenharmony_ci		slObjectCallback callback,
4227777dab0Sopenharmony_ci		void * pContext
4237777dab0Sopenharmony_ci	);
4247777dab0Sopenharmony_ci	void (*AbortAsyncOperation) (
4257777dab0Sopenharmony_ci		SLObjectItf self
4267777dab0Sopenharmony_ci	);
4277777dab0Sopenharmony_ci	void (*Destroy) (
4287777dab0Sopenharmony_ci		SLObjectItf self
4297777dab0Sopenharmony_ci	);
4307777dab0Sopenharmony_ci	SLresult (*SetPriority) (
4317777dab0Sopenharmony_ci		SLObjectItf self,
4327777dab0Sopenharmony_ci		SLint32 priority,
4337777dab0Sopenharmony_ci		SLboolean preemptable
4347777dab0Sopenharmony_ci	);
4357777dab0Sopenharmony_ci	SLresult (*GetPriority) (
4367777dab0Sopenharmony_ci		SLObjectItf self,
4377777dab0Sopenharmony_ci		SLint32 *pPriority,
4387777dab0Sopenharmony_ci		SLboolean *pPreemptable
4397777dab0Sopenharmony_ci	);
4407777dab0Sopenharmony_ci	SLresult (*SetLossOfControlInterfaces) (
4417777dab0Sopenharmony_ci		SLObjectItf self,
4427777dab0Sopenharmony_ci		SLint16 numInterfaces,
4437777dab0Sopenharmony_ci		SLInterfaceID * pInterfaceIDs,
4447777dab0Sopenharmony_ci		SLboolean enabled
4457777dab0Sopenharmony_ci	);
4467777dab0Sopenharmony_ci};
4477777dab0Sopenharmony_ci
4487777dab0Sopenharmony_ci
4497777dab0Sopenharmony_ci/*---------------------------------------------------------------------------*/
4507777dab0Sopenharmony_ci/* Audio IO Device capabilities interface                                    */
4517777dab0Sopenharmony_ci/*---------------------------------------------------------------------------*/
4527777dab0Sopenharmony_ci
4537777dab0Sopenharmony_ci#define SL_DEFAULTDEVICEID_AUDIOINPUT 	((SLuint32) 0xFFFFFFFF)
4547777dab0Sopenharmony_ci#define SL_DEFAULTDEVICEID_AUDIOOUTPUT 	((SLuint32) 0xFFFFFFFE)
4557777dab0Sopenharmony_ci#define SL_DEFAULTDEVICEID_LED          ((SLuint32) 0xFFFFFFFD)
4567777dab0Sopenharmony_ci#define SL_DEFAULTDEVICEID_VIBRA        ((SLuint32) 0xFFFFFFFC)
4577777dab0Sopenharmony_ci#define SL_DEFAULTDEVICEID_RESERVED1    ((SLuint32) 0xFFFFFFFB)
4587777dab0Sopenharmony_ci
4597777dab0Sopenharmony_ci
4607777dab0Sopenharmony_ci#define SL_DEVCONNECTION_INTEGRATED         ((SLint16) 0x0001)
4617777dab0Sopenharmony_ci#define SL_DEVCONNECTION_ATTACHED_WIRED     ((SLint16) 0x0100)
4627777dab0Sopenharmony_ci#define SL_DEVCONNECTION_ATTACHED_WIRELESS  ((SLint16) 0x0200)
4637777dab0Sopenharmony_ci#define SL_DEVCONNECTION_NETWORK 		    ((SLint16) 0x0400)
4647777dab0Sopenharmony_ci
4657777dab0Sopenharmony_ci
4667777dab0Sopenharmony_ci#define SL_DEVLOCATION_HANDSET 	((SLuint16) 0x0001)
4677777dab0Sopenharmony_ci#define SL_DEVLOCATION_HEADSET 	((SLuint16) 0x0002)
4687777dab0Sopenharmony_ci#define SL_DEVLOCATION_CARKIT 	((SLuint16) 0x0003)
4697777dab0Sopenharmony_ci#define SL_DEVLOCATION_DOCK 	((SLuint16) 0x0004)
4707777dab0Sopenharmony_ci#define SL_DEVLOCATION_REMOTE 	((SLuint16) 0x0005)
4717777dab0Sopenharmony_ci/* Note: SL_DEVLOCATION_RESLTE is deprecated, use SL_DEVLOCATION_REMOTE instead. */
4727777dab0Sopenharmony_ci#define SL_DEVLOCATION_RESLTE 	((SLuint16) 0x0005)
4737777dab0Sopenharmony_ci
4747777dab0Sopenharmony_ci
4757777dab0Sopenharmony_ci#define SL_DEVSCOPE_UNKNOWN     ((SLuint16) 0x0001)
4767777dab0Sopenharmony_ci#define SL_DEVSCOPE_ENVIRONMENT ((SLuint16) 0x0002)
4777777dab0Sopenharmony_ci#define SL_DEVSCOPE_USER        ((SLuint16) 0x0003)
4787777dab0Sopenharmony_ci
4797777dab0Sopenharmony_ci
4807777dab0Sopenharmony_citypedef struct SLAudioInputDescriptor_ {
4817777dab0Sopenharmony_ci	SLchar *deviceName;
4827777dab0Sopenharmony_ci	SLint16 deviceConnection;
4837777dab0Sopenharmony_ci	SLint16 deviceScope;
4847777dab0Sopenharmony_ci	SLint16 deviceLocation;
4857777dab0Sopenharmony_ci	SLboolean isForTelephony;
4867777dab0Sopenharmony_ci	SLmilliHertz minSampleRate;
4877777dab0Sopenharmony_ci	SLmilliHertz maxSampleRate;
4887777dab0Sopenharmony_ci	SLboolean isFreqRangeContinuous;
4897777dab0Sopenharmony_ci	SLmilliHertz *samplingRatesSupported;
4907777dab0Sopenharmony_ci	SLint16 numOfSamplingRatesSupported;
4917777dab0Sopenharmony_ci	SLint16 maxChannels;
4927777dab0Sopenharmony_ci} SLAudioInputDescriptor;
4937777dab0Sopenharmony_ci
4947777dab0Sopenharmony_ci
4957777dab0Sopenharmony_citypedef struct SLAudioOutputDescriptor_ {
4967777dab0Sopenharmony_ci	SLchar *pDeviceName;
4977777dab0Sopenharmony_ci	SLint16 deviceConnection;
4987777dab0Sopenharmony_ci	SLint16 deviceScope;
4997777dab0Sopenharmony_ci	SLint16 deviceLocation;
5007777dab0Sopenharmony_ci	SLboolean isForTelephony;
5017777dab0Sopenharmony_ci	SLmilliHertz minSampleRate;
5027777dab0Sopenharmony_ci	SLmilliHertz maxSampleRate;
5037777dab0Sopenharmony_ci	SLboolean isFreqRangeContinuous;
5047777dab0Sopenharmony_ci	SLmilliHertz *samplingRatesSupported;
5057777dab0Sopenharmony_ci	SLint16 numOfSamplingRatesSupported;
5067777dab0Sopenharmony_ci	SLint16 maxChannels;
5077777dab0Sopenharmony_ci} SLAudioOutputDescriptor;
5087777dab0Sopenharmony_ci
5097777dab0Sopenharmony_ci
5107777dab0Sopenharmony_ci
5117777dab0Sopenharmony_ciextern const SLInterfaceID SL_IID_AUDIOIODEVICECAPABILITIES;
5127777dab0Sopenharmony_ci
5137777dab0Sopenharmony_cistruct SLAudioIODeviceCapabilitiesItf_;
5147777dab0Sopenharmony_citypedef const struct SLAudioIODeviceCapabilitiesItf_ * const * SLAudioIODeviceCapabilitiesItf;
5157777dab0Sopenharmony_ci
5167777dab0Sopenharmony_ci
5177777dab0Sopenharmony_citypedef void (SLAPIENTRY *slAvailableAudioInputsChangedCallback) (
5187777dab0Sopenharmony_ci	SLAudioIODeviceCapabilitiesItf caller,
5197777dab0Sopenharmony_ci	void *pContext,
5207777dab0Sopenharmony_ci	SLuint32 deviceID,
5217777dab0Sopenharmony_ci	SLint32 numInputs,
5227777dab0Sopenharmony_ci	SLboolean isNew
5237777dab0Sopenharmony_ci);
5247777dab0Sopenharmony_ci
5257777dab0Sopenharmony_ci
5267777dab0Sopenharmony_citypedef void (SLAPIENTRY *slAvailableAudioOutputsChangedCallback) (
5277777dab0Sopenharmony_ci	SLAudioIODeviceCapabilitiesItf caller,
5287777dab0Sopenharmony_ci	void *pContext,
5297777dab0Sopenharmony_ci	SLuint32 deviceID,
5307777dab0Sopenharmony_ci	SLint32 numOutputs,
5317777dab0Sopenharmony_ci	SLboolean isNew
5327777dab0Sopenharmony_ci);
5337777dab0Sopenharmony_ci
5347777dab0Sopenharmony_citypedef void (SLAPIENTRY *slDefaultDeviceIDMapChangedCallback) (
5357777dab0Sopenharmony_ci	SLAudioIODeviceCapabilitiesItf caller,
5367777dab0Sopenharmony_ci	void *pContext,
5377777dab0Sopenharmony_ci	SLboolean isOutput,
5387777dab0Sopenharmony_ci	SLint32 numDevices
5397777dab0Sopenharmony_ci);
5407777dab0Sopenharmony_ci
5417777dab0Sopenharmony_ci
5427777dab0Sopenharmony_cistruct SLAudioIODeviceCapabilitiesItf_ {
5437777dab0Sopenharmony_ci	SLresult (*GetAvailableAudioInputs)(
5447777dab0Sopenharmony_ci		SLAudioIODeviceCapabilitiesItf self,
5457777dab0Sopenharmony_ci		SLint32  *pNumInputs,
5467777dab0Sopenharmony_ci		SLuint32 *pInputDeviceIDs
5477777dab0Sopenharmony_ci	);
5487777dab0Sopenharmony_ci	SLresult (*QueryAudioInputCapabilities)(
5497777dab0Sopenharmony_ci		SLAudioIODeviceCapabilitiesItf self,
5507777dab0Sopenharmony_ci		SLuint32 deviceId,
5517777dab0Sopenharmony_ci		SLAudioInputDescriptor *pDescriptor
5527777dab0Sopenharmony_ci	);
5537777dab0Sopenharmony_ci	SLresult (*RegisterAvailableAudioInputsChangedCallback) (
5547777dab0Sopenharmony_ci		SLAudioIODeviceCapabilitiesItf self,
5557777dab0Sopenharmony_ci		slAvailableAudioInputsChangedCallback callback,
5567777dab0Sopenharmony_ci		void *pContext
5577777dab0Sopenharmony_ci	);
5587777dab0Sopenharmony_ci	SLresult (*GetAvailableAudioOutputs)(
5597777dab0Sopenharmony_ci		SLAudioIODeviceCapabilitiesItf self,
5607777dab0Sopenharmony_ci		SLint32 *pNumOutputs,
5617777dab0Sopenharmony_ci		SLuint32 *pOutputDeviceIDs
5627777dab0Sopenharmony_ci	);
5637777dab0Sopenharmony_ci	SLresult (*QueryAudioOutputCapabilities)(
5647777dab0Sopenharmony_ci		SLAudioIODeviceCapabilitiesItf self,
5657777dab0Sopenharmony_ci		SLuint32 deviceId,
5667777dab0Sopenharmony_ci		SLAudioOutputDescriptor *pDescriptor
5677777dab0Sopenharmony_ci	);
5687777dab0Sopenharmony_ci	SLresult (*RegisterAvailableAudioOutputsChangedCallback) (
5697777dab0Sopenharmony_ci		SLAudioIODeviceCapabilitiesItf self,
5707777dab0Sopenharmony_ci		slAvailableAudioOutputsChangedCallback callback,
5717777dab0Sopenharmony_ci		void *pContext
5727777dab0Sopenharmony_ci	);
5737777dab0Sopenharmony_ci	SLresult (*RegisterDefaultDeviceIDMapChangedCallback) (
5747777dab0Sopenharmony_ci		SLAudioIODeviceCapabilitiesItf self,
5757777dab0Sopenharmony_ci		slDefaultDeviceIDMapChangedCallback callback,
5767777dab0Sopenharmony_ci		void *pContext
5777777dab0Sopenharmony_ci	);
5787777dab0Sopenharmony_ci	SLresult (*GetAssociatedAudioInputs) (
5797777dab0Sopenharmony_ci		SLAudioIODeviceCapabilitiesItf self,
5807777dab0Sopenharmony_ci		SLuint32 deviceId,
5817777dab0Sopenharmony_ci		SLint32 *pNumAudioInputs,
5827777dab0Sopenharmony_ci		SLuint32 *pAudioInputDeviceIDs
5837777dab0Sopenharmony_ci	);
5847777dab0Sopenharmony_ci	SLresult (*GetAssociatedAudioOutputs) (
5857777dab0Sopenharmony_ci		SLAudioIODeviceCapabilitiesItf self,
5867777dab0Sopenharmony_ci		SLuint32 deviceId,
5877777dab0Sopenharmony_ci		SLint32 *pNumAudioOutputs,
5887777dab0Sopenharmony_ci		SLuint32 *pAudioOutputDeviceIDs
5897777dab0Sopenharmony_ci	);
5907777dab0Sopenharmony_ci	SLresult (*GetDefaultAudioDevices) (
5917777dab0Sopenharmony_ci		SLAudioIODeviceCapabilitiesItf self,
5927777dab0Sopenharmony_ci		SLuint32 defaultDeviceID,
5937777dab0Sopenharmony_ci		SLint32 *pNumAudioDevices,
5947777dab0Sopenharmony_ci		SLuint32 *pAudioDeviceIDs
5957777dab0Sopenharmony_ci	);
5967777dab0Sopenharmony_ci	SLresult (*QuerySampleFormatsSupported)(
5977777dab0Sopenharmony_ci		SLAudioIODeviceCapabilitiesItf self,
5987777dab0Sopenharmony_ci		SLuint32 deviceId,
5997777dab0Sopenharmony_ci		SLmilliHertz samplingRate,
6007777dab0Sopenharmony_ci		SLint32 *pSampleFormats,
6017777dab0Sopenharmony_ci		SLint32 *pNumOfSampleFormats
6027777dab0Sopenharmony_ci	);
6037777dab0Sopenharmony_ci};
6047777dab0Sopenharmony_ci
6057777dab0Sopenharmony_ci
6067777dab0Sopenharmony_ci
6077777dab0Sopenharmony_ci/*---------------------------------------------------------------------------*/
6087777dab0Sopenharmony_ci/* Capabilities of the LED array IODevice                                    */
6097777dab0Sopenharmony_ci/*---------------------------------------------------------------------------*/
6107777dab0Sopenharmony_ci
6117777dab0Sopenharmony_citypedef struct SLLEDDescriptor_ {
6127777dab0Sopenharmony_ci	SLuint8   ledCount;
6137777dab0Sopenharmony_ci	SLuint8   primaryLED;
6147777dab0Sopenharmony_ci	SLuint32  colorMask;
6157777dab0Sopenharmony_ci} SLLEDDescriptor;
6167777dab0Sopenharmony_ci
6177777dab0Sopenharmony_ci
6187777dab0Sopenharmony_ci/*---------------------------------------------------------------------------*/
6197777dab0Sopenharmony_ci/* LED Array interface                                                       */
6207777dab0Sopenharmony_ci/*---------------------------------------------------------------------------*/
6217777dab0Sopenharmony_ci
6227777dab0Sopenharmony_citypedef struct SLHSL_ {
6237777dab0Sopenharmony_ci    SLmillidegree  hue;
6247777dab0Sopenharmony_ci    SLpermille     saturation;
6257777dab0Sopenharmony_ci    SLpermille     lightness;
6267777dab0Sopenharmony_ci} SLHSL;
6277777dab0Sopenharmony_ci
6287777dab0Sopenharmony_ci
6297777dab0Sopenharmony_ciextern const SLInterfaceID SL_IID_LED;
6307777dab0Sopenharmony_ci
6317777dab0Sopenharmony_cistruct SLLEDArrayItf_;
6327777dab0Sopenharmony_citypedef const struct SLLEDArrayItf_ * const * SLLEDArrayItf;
6337777dab0Sopenharmony_ci
6347777dab0Sopenharmony_cistruct SLLEDArrayItf_ {
6357777dab0Sopenharmony_ci	SLresult (*ActivateLEDArray) (
6367777dab0Sopenharmony_ci		SLLEDArrayItf self,
6377777dab0Sopenharmony_ci		SLuint32 lightMask
6387777dab0Sopenharmony_ci	);
6397777dab0Sopenharmony_ci	SLresult (*IsLEDArrayActivated) (
6407777dab0Sopenharmony_ci		SLLEDArrayItf self,
6417777dab0Sopenharmony_ci		SLuint32 *lightMask
6427777dab0Sopenharmony_ci	);
6437777dab0Sopenharmony_ci	SLresult (*SetColor) (
6447777dab0Sopenharmony_ci		SLLEDArrayItf self,
6457777dab0Sopenharmony_ci		SLuint8 index,
6467777dab0Sopenharmony_ci		const SLHSL *color
6477777dab0Sopenharmony_ci	);
6487777dab0Sopenharmony_ci	SLresult (*GetColor) (
6497777dab0Sopenharmony_ci		SLLEDArrayItf self,
6507777dab0Sopenharmony_ci		SLuint8 index,
6517777dab0Sopenharmony_ci		SLHSL *color
6527777dab0Sopenharmony_ci	);
6537777dab0Sopenharmony_ci};
6547777dab0Sopenharmony_ci
6557777dab0Sopenharmony_ci/*---------------------------------------------------------------------------*/
6567777dab0Sopenharmony_ci/* Capabilities of the Vibra IODevice                                        */
6577777dab0Sopenharmony_ci/*---------------------------------------------------------------------------*/
6587777dab0Sopenharmony_ci
6597777dab0Sopenharmony_citypedef struct SLVibraDescriptor_ {
6607777dab0Sopenharmony_ci	SLboolean supportsFrequency;
6617777dab0Sopenharmony_ci	SLboolean supportsIntensity;
6627777dab0Sopenharmony_ci	SLmilliHertz  minFrequency;
6637777dab0Sopenharmony_ci	SLmilliHertz  maxFrequency;
6647777dab0Sopenharmony_ci} SLVibraDescriptor;
6657777dab0Sopenharmony_ci
6667777dab0Sopenharmony_ci
6677777dab0Sopenharmony_ci
6687777dab0Sopenharmony_ci/*---------------------------------------------------------------------------*/
6697777dab0Sopenharmony_ci/* Vibra interface                                                           */
6707777dab0Sopenharmony_ci/*---------------------------------------------------------------------------*/
6717777dab0Sopenharmony_ci
6727777dab0Sopenharmony_ci
6737777dab0Sopenharmony_ciextern const SLInterfaceID SL_IID_VIBRA;
6747777dab0Sopenharmony_ci
6757777dab0Sopenharmony_ci
6767777dab0Sopenharmony_cistruct SLVibraItf_;
6777777dab0Sopenharmony_citypedef const struct SLVibraItf_ * const * SLVibraItf;
6787777dab0Sopenharmony_ci
6797777dab0Sopenharmony_cistruct SLVibraItf_ {
6807777dab0Sopenharmony_ci	SLresult (*Vibrate) (
6817777dab0Sopenharmony_ci		SLVibraItf self,
6827777dab0Sopenharmony_ci		SLboolean vibrate
6837777dab0Sopenharmony_ci	);
6847777dab0Sopenharmony_ci	SLresult (*IsVibrating) (
6857777dab0Sopenharmony_ci		SLVibraItf self,
6867777dab0Sopenharmony_ci		SLboolean *pVibrating
6877777dab0Sopenharmony_ci	);
6887777dab0Sopenharmony_ci	SLresult (*SetFrequency) (
6897777dab0Sopenharmony_ci		SLVibraItf self,
6907777dab0Sopenharmony_ci		SLmilliHertz frequency
6917777dab0Sopenharmony_ci	);
6927777dab0Sopenharmony_ci	SLresult (*GetFrequency) (
6937777dab0Sopenharmony_ci		SLVibraItf self,
6947777dab0Sopenharmony_ci		SLmilliHertz *pFrequency
6957777dab0Sopenharmony_ci	);
6967777dab0Sopenharmony_ci	SLresult (*SetIntensity) (
6977777dab0Sopenharmony_ci		SLVibraItf self,
6987777dab0Sopenharmony_ci		SLpermille intensity
6997777dab0Sopenharmony_ci	);
7007777dab0Sopenharmony_ci	SLresult (*GetIntensity) (
7017777dab0Sopenharmony_ci		SLVibraItf self,
7027777dab0Sopenharmony_ci		SLpermille *pIntensity
7037777dab0Sopenharmony_ci	);
7047777dab0Sopenharmony_ci};
7057777dab0Sopenharmony_ci
7067777dab0Sopenharmony_ci
7077777dab0Sopenharmony_ci/*---------------------------------------------------------------------------*/
7087777dab0Sopenharmony_ci/* Meta data extraction related types and interface                          */
7097777dab0Sopenharmony_ci/*---------------------------------------------------------------------------*/
7107777dab0Sopenharmony_ci
7117777dab0Sopenharmony_ci#define SL_CHARACTERENCODING_UNKNOWN			((SLuint32) 0x00000000)
7127777dab0Sopenharmony_ci#define SL_CHARACTERENCODING_BINARY       ((SLuint32) 0x00000001)
7137777dab0Sopenharmony_ci#define SL_CHARACTERENCODING_ASCII        ((SLuint32) 0x00000002)
7147777dab0Sopenharmony_ci#define SL_CHARACTERENCODING_BIG5         ((SLuint32) 0x00000003)
7157777dab0Sopenharmony_ci#define SL_CHARACTERENCODING_CODEPAGE1252		((SLuint32) 0x00000004)
7167777dab0Sopenharmony_ci#define SL_CHARACTERENCODING_GB2312			((SLuint32) 0x00000005)
7177777dab0Sopenharmony_ci#define SL_CHARACTERENCODING_HZGB2312			((SLuint32) 0x00000006)
7187777dab0Sopenharmony_ci#define SL_CHARACTERENCODING_GB12345			((SLuint32) 0x00000007)
7197777dab0Sopenharmony_ci#define SL_CHARACTERENCODING_GB18030			((SLuint32) 0x00000008)
7207777dab0Sopenharmony_ci#define SL_CHARACTERENCODING_GBK				((SLuint32) 0x00000009)
7217777dab0Sopenharmony_ci#define SL_CHARACTERENCODING_IMAPUTF7			((SLuint32) 0x0000000A)
7227777dab0Sopenharmony_ci#define SL_CHARACTERENCODING_ISO2022JP			((SLuint32) 0x0000000B)
7237777dab0Sopenharmony_ci#define SL_CHARACTERENCODING_ISO2022JP1		((SLuint32) 0x0000000B)
7247777dab0Sopenharmony_ci#define SL_CHARACTERENCODING_ISO88591			((SLuint32) 0x0000000C)
7257777dab0Sopenharmony_ci#define SL_CHARACTERENCODING_ISO885910			((SLuint32) 0x0000000D)
7267777dab0Sopenharmony_ci#define SL_CHARACTERENCODING_ISO885913			((SLuint32) 0x0000000E)
7277777dab0Sopenharmony_ci#define SL_CHARACTERENCODING_ISO885914			((SLuint32) 0x0000000F)
7287777dab0Sopenharmony_ci#define SL_CHARACTERENCODING_ISO885915			((SLuint32) 0x00000010)
7297777dab0Sopenharmony_ci#define SL_CHARACTERENCODING_ISO88592			((SLuint32) 0x00000011)
7307777dab0Sopenharmony_ci#define SL_CHARACTERENCODING_ISO88593			((SLuint32) 0x00000012)
7317777dab0Sopenharmony_ci#define SL_CHARACTERENCODING_ISO88594			((SLuint32) 0x00000013)
7327777dab0Sopenharmony_ci#define SL_CHARACTERENCODING_ISO88595			((SLuint32) 0x00000014)
7337777dab0Sopenharmony_ci#define SL_CHARACTERENCODING_ISO88596			((SLuint32) 0x00000015)
7347777dab0Sopenharmony_ci#define SL_CHARACTERENCODING_ISO88597			((SLuint32) 0x00000016)
7357777dab0Sopenharmony_ci#define SL_CHARACTERENCODING_ISO88598			((SLuint32) 0x00000017)
7367777dab0Sopenharmony_ci#define SL_CHARACTERENCODING_ISO88599			((SLuint32) 0x00000018)
7377777dab0Sopenharmony_ci#define SL_CHARACTERENCODING_ISOEUCJP			((SLuint32) 0x00000019)
7387777dab0Sopenharmony_ci#define SL_CHARACTERENCODING_SHIFTJIS			((SLuint32) 0x0000001A)
7397777dab0Sopenharmony_ci#define SL_CHARACTERENCODING_SMS7BIT			((SLuint32) 0x0000001B)
7407777dab0Sopenharmony_ci#define SL_CHARACTERENCODING_UTF7			((SLuint32) 0x0000001C)
7417777dab0Sopenharmony_ci#define SL_CHARACTERENCODING_UTF8			((SLuint32) 0x0000001D)
7427777dab0Sopenharmony_ci#define SL_CHARACTERENCODING_JAVACONFORMANTUTF8	((SLuint32) 0x0000001E)
7437777dab0Sopenharmony_ci#define SL_CHARACTERENCODING_UTF16BE			((SLuint32) 0x0000001F)
7447777dab0Sopenharmony_ci#define SL_CHARACTERENCODING_UTF16LE			((SLuint32) 0x00000020)
7457777dab0Sopenharmony_ci
7467777dab0Sopenharmony_ci
7477777dab0Sopenharmony_ci#define SL_METADATA_FILTER_KEY		((SLuint8) 0x01)
7487777dab0Sopenharmony_ci#define SL_METADATA_FILTER_LANG		((SLuint8) 0x02)
7497777dab0Sopenharmony_ci#define SL_METADATA_FILTER_ENCODING	((SLuint8) 0x04)
7507777dab0Sopenharmony_ci
7517777dab0Sopenharmony_ci
7527777dab0Sopenharmony_citypedef struct SLMetadataInfo_ {
7537777dab0Sopenharmony_ci    SLuint32     size;
7547777dab0Sopenharmony_ci    SLuint32     encoding;
7557777dab0Sopenharmony_ci    SLchar       langCountry[16];
7567777dab0Sopenharmony_ci    SLuint8      data[1];
7577777dab0Sopenharmony_ci} SLMetadataInfo;
7587777dab0Sopenharmony_ci
7597777dab0Sopenharmony_ciextern const SLInterfaceID SL_IID_METADATAEXTRACTION;
7607777dab0Sopenharmony_ci
7617777dab0Sopenharmony_cistruct SLMetadataExtractionItf_;
7627777dab0Sopenharmony_citypedef const struct SLMetadataExtractionItf_ * const * SLMetadataExtractionItf;
7637777dab0Sopenharmony_ci
7647777dab0Sopenharmony_ci
7657777dab0Sopenharmony_cistruct SLMetadataExtractionItf_ {
7667777dab0Sopenharmony_ci	SLresult (*GetItemCount) (
7677777dab0Sopenharmony_ci		SLMetadataExtractionItf self,
7687777dab0Sopenharmony_ci		SLuint32 *pItemCount
7697777dab0Sopenharmony_ci	);
7707777dab0Sopenharmony_ci	SLresult (*GetKeySize) (
7717777dab0Sopenharmony_ci		SLMetadataExtractionItf self,
7727777dab0Sopenharmony_ci		SLuint32 index,
7737777dab0Sopenharmony_ci		SLuint32 *pKeySize
7747777dab0Sopenharmony_ci	);
7757777dab0Sopenharmony_ci	SLresult (*GetKey) (
7767777dab0Sopenharmony_ci		SLMetadataExtractionItf self,
7777777dab0Sopenharmony_ci		SLuint32 index,
7787777dab0Sopenharmony_ci		SLuint32 keySize,
7797777dab0Sopenharmony_ci		SLMetadataInfo *pKey
7807777dab0Sopenharmony_ci	);
7817777dab0Sopenharmony_ci	SLresult (*GetValueSize) (
7827777dab0Sopenharmony_ci		SLMetadataExtractionItf self,
7837777dab0Sopenharmony_ci		SLuint32 index,
7847777dab0Sopenharmony_ci		SLuint32 *pValueSize
7857777dab0Sopenharmony_ci	);
7867777dab0Sopenharmony_ci	SLresult (*GetValue) (
7877777dab0Sopenharmony_ci		SLMetadataExtractionItf self,
7887777dab0Sopenharmony_ci		SLuint32 index,
7897777dab0Sopenharmony_ci		SLuint32 valueSize,
7907777dab0Sopenharmony_ci		SLMetadataInfo *pValue
7917777dab0Sopenharmony_ci	);
7927777dab0Sopenharmony_ci	SLresult (*AddKeyFilter) (
7937777dab0Sopenharmony_ci		SLMetadataExtractionItf self,
7947777dab0Sopenharmony_ci		SLuint32 keySize,
7957777dab0Sopenharmony_ci		const void *pKey,
7967777dab0Sopenharmony_ci		SLuint32 keyEncoding,
7977777dab0Sopenharmony_ci		const SLchar *pValueLangCountry,
7987777dab0Sopenharmony_ci		SLuint32 valueEncoding,
7997777dab0Sopenharmony_ci		SLuint8 filterMask
8007777dab0Sopenharmony_ci	);
8017777dab0Sopenharmony_ci	SLresult (*ClearKeyFilter) (
8027777dab0Sopenharmony_ci		SLMetadataExtractionItf self
8037777dab0Sopenharmony_ci	);
8047777dab0Sopenharmony_ci};
8057777dab0Sopenharmony_ci
8067777dab0Sopenharmony_ci
8077777dab0Sopenharmony_ci/*---------------------------------------------------------------------------*/
8087777dab0Sopenharmony_ci/* Meta data traversal related types and interface                          */
8097777dab0Sopenharmony_ci/*---------------------------------------------------------------------------*/
8107777dab0Sopenharmony_ci
8117777dab0Sopenharmony_ci#define SL_METADATATRAVERSALMODE_ALL	((SLuint32) 0x00000001)
8127777dab0Sopenharmony_ci#define SL_METADATATRAVERSALMODE_NODE	((SLuint32) 0x00000002)
8137777dab0Sopenharmony_ci
8147777dab0Sopenharmony_ci
8157777dab0Sopenharmony_ci#define SL_NODETYPE_UNSPECIFIED	((SLuint32) 0x00000001)
8167777dab0Sopenharmony_ci#define SL_NODETYPE_AUDIO		((SLuint32) 0x00000002)
8177777dab0Sopenharmony_ci#define SL_NODETYPE_VIDEO		((SLuint32) 0x00000003)
8187777dab0Sopenharmony_ci#define SL_NODETYPE_IMAGE		((SLuint32) 0x00000004)
8197777dab0Sopenharmony_ci
8207777dab0Sopenharmony_ci#define SL_NODE_PARENT 0xFFFFFFFF
8217777dab0Sopenharmony_ci
8227777dab0Sopenharmony_ciextern const SLInterfaceID SL_IID_METADATATRAVERSAL;
8237777dab0Sopenharmony_ci
8247777dab0Sopenharmony_cistruct SLMetadataTraversalItf_;
8257777dab0Sopenharmony_citypedef const struct SLMetadataTraversalItf_ * const * SLMetadataTraversalItf;
8267777dab0Sopenharmony_ci
8277777dab0Sopenharmony_cistruct SLMetadataTraversalItf_ {
8287777dab0Sopenharmony_ci	SLresult (*SetMode) (
8297777dab0Sopenharmony_ci		SLMetadataTraversalItf self,
8307777dab0Sopenharmony_ci		SLuint32 mode
8317777dab0Sopenharmony_ci	);
8327777dab0Sopenharmony_ci	SLresult (*GetChildCount) (
8337777dab0Sopenharmony_ci		SLMetadataTraversalItf self,
8347777dab0Sopenharmony_ci		SLuint32 *pCount
8357777dab0Sopenharmony_ci	);
8367777dab0Sopenharmony_ci	SLresult (*GetChildMIMETypeSize) (
8377777dab0Sopenharmony_ci		SLMetadataTraversalItf self,
8387777dab0Sopenharmony_ci		SLuint32 index,
8397777dab0Sopenharmony_ci		SLuint32 *pSize
8407777dab0Sopenharmony_ci	);
8417777dab0Sopenharmony_ci	SLresult (*GetChildInfo) (
8427777dab0Sopenharmony_ci		SLMetadataTraversalItf self,
8437777dab0Sopenharmony_ci		SLuint32 index,
8447777dab0Sopenharmony_ci		SLint32 *pNodeID,
8457777dab0Sopenharmony_ci		SLuint32 *pType,
8467777dab0Sopenharmony_ci		SLuint32 size,
8477777dab0Sopenharmony_ci		SLchar *pMimeType
8487777dab0Sopenharmony_ci	);
8497777dab0Sopenharmony_ci	SLresult (*SetActiveNode) (
8507777dab0Sopenharmony_ci		SLMetadataTraversalItf self,
8517777dab0Sopenharmony_ci		SLuint32 index
8527777dab0Sopenharmony_ci	);
8537777dab0Sopenharmony_ci};
8547777dab0Sopenharmony_ci
8557777dab0Sopenharmony_ci/*---------------------------------------------------------------------------*/
8567777dab0Sopenharmony_ci/* Dynamic Source types and interface                                        */
8577777dab0Sopenharmony_ci/*---------------------------------------------------------------------------*/
8587777dab0Sopenharmony_ci
8597777dab0Sopenharmony_ciextern const SLInterfaceID SL_IID_DYNAMICSOURCE;
8607777dab0Sopenharmony_ci
8617777dab0Sopenharmony_cistruct SLDynamicSourceItf_;
8627777dab0Sopenharmony_citypedef const struct SLDynamicSourceItf_ * const * SLDynamicSourceItf;
8637777dab0Sopenharmony_ci
8647777dab0Sopenharmony_cistruct SLDynamicSourceItf_ {
8657777dab0Sopenharmony_ci	SLresult (*SetSource) (
8667777dab0Sopenharmony_ci		SLDynamicSourceItf self,
8677777dab0Sopenharmony_ci		SLDataSource *pDataSource
8687777dab0Sopenharmony_ci	);
8697777dab0Sopenharmony_ci};
8707777dab0Sopenharmony_ci
8717777dab0Sopenharmony_ci/*---------------------------------------------------------------------------*/
8727777dab0Sopenharmony_ci/* Output Mix interface                                                      */
8737777dab0Sopenharmony_ci/*---------------------------------------------------------------------------*/
8747777dab0Sopenharmony_ci
8757777dab0Sopenharmony_ciextern const SLInterfaceID SL_IID_OUTPUTMIX;
8767777dab0Sopenharmony_ci
8777777dab0Sopenharmony_cistruct SLOutputMixItf_;
8787777dab0Sopenharmony_citypedef const struct SLOutputMixItf_ * const * SLOutputMixItf;
8797777dab0Sopenharmony_ci
8807777dab0Sopenharmony_citypedef void (SLAPIENTRY *slMixDeviceChangeCallback) (
8817777dab0Sopenharmony_ci	SLOutputMixItf caller,
8827777dab0Sopenharmony_ci    void *pContext
8837777dab0Sopenharmony_ci);
8847777dab0Sopenharmony_ci
8857777dab0Sopenharmony_ci
8867777dab0Sopenharmony_cistruct SLOutputMixItf_ {
8877777dab0Sopenharmony_ci	SLresult (*GetDestinationOutputDeviceIDs) (
8887777dab0Sopenharmony_ci		SLOutputMixItf self,
8897777dab0Sopenharmony_ci		SLint32 *pNumDevices,
8907777dab0Sopenharmony_ci		SLuint32 *pDeviceIDs
8917777dab0Sopenharmony_ci	);
8927777dab0Sopenharmony_ci	SLresult (*RegisterDeviceChangeCallback) (
8937777dab0Sopenharmony_ci		SLOutputMixItf self,
8947777dab0Sopenharmony_ci		slMixDeviceChangeCallback callback,
8957777dab0Sopenharmony_ci		void *pContext
8967777dab0Sopenharmony_ci    );
8977777dab0Sopenharmony_ci    SLresult (*ReRoute)(
8987777dab0Sopenharmony_ci        SLOutputMixItf self,
8997777dab0Sopenharmony_ci        SLint32 numOutputDevices,
9007777dab0Sopenharmony_ci        SLuint32 *pOutputDeviceIDs
9017777dab0Sopenharmony_ci    );
9027777dab0Sopenharmony_ci};
9037777dab0Sopenharmony_ci
9047777dab0Sopenharmony_ci
9057777dab0Sopenharmony_ci/*---------------------------------------------------------------------------*/
9067777dab0Sopenharmony_ci/* Playback interface                                                        */
9077777dab0Sopenharmony_ci/*---------------------------------------------------------------------------*/
9087777dab0Sopenharmony_ci
9097777dab0Sopenharmony_ci/** Playback states */
9107777dab0Sopenharmony_ci#define SL_PLAYSTATE_STOPPED	((SLuint32) 0x00000001)
9117777dab0Sopenharmony_ci#define SL_PLAYSTATE_PAUSED	((SLuint32) 0x00000002)
9127777dab0Sopenharmony_ci#define SL_PLAYSTATE_PLAYING	((SLuint32) 0x00000003)
9137777dab0Sopenharmony_ci
9147777dab0Sopenharmony_ci/** Play events **/
9157777dab0Sopenharmony_ci#define SL_PLAYEVENT_HEADATEND		((SLuint32) 0x00000001)
9167777dab0Sopenharmony_ci#define SL_PLAYEVENT_HEADATMARKER	((SLuint32) 0x00000002)
9177777dab0Sopenharmony_ci#define SL_PLAYEVENT_HEADATNEWPOS	((SLuint32) 0x00000004)
9187777dab0Sopenharmony_ci#define SL_PLAYEVENT_HEADMOVING		((SLuint32) 0x00000008)
9197777dab0Sopenharmony_ci#define SL_PLAYEVENT_HEADSTALLED	((SLuint32) 0x00000010)
9207777dab0Sopenharmony_ci
9217777dab0Sopenharmony_ci#define SL_TIME_UNKNOWN	((SLuint32) 0xFFFFFFFF)
9227777dab0Sopenharmony_ci
9237777dab0Sopenharmony_ci
9247777dab0Sopenharmony_ciextern const SLInterfaceID SL_IID_PLAY;
9257777dab0Sopenharmony_ci
9267777dab0Sopenharmony_ci/** Playback interface methods */
9277777dab0Sopenharmony_ci
9287777dab0Sopenharmony_cistruct SLPlayItf_;
9297777dab0Sopenharmony_citypedef const struct SLPlayItf_ * const * SLPlayItf;
9307777dab0Sopenharmony_ci
9317777dab0Sopenharmony_citypedef void (SLAPIENTRY *slPlayCallback) (
9327777dab0Sopenharmony_ci	SLPlayItf caller,
9337777dab0Sopenharmony_ci	void *pContext,
9347777dab0Sopenharmony_ci	SLuint32 event
9357777dab0Sopenharmony_ci);
9367777dab0Sopenharmony_ci
9377777dab0Sopenharmony_cistruct SLPlayItf_ {
9387777dab0Sopenharmony_ci	SLresult (*SetPlayState) (
9397777dab0Sopenharmony_ci		SLPlayItf self,
9407777dab0Sopenharmony_ci		SLuint32 state
9417777dab0Sopenharmony_ci	);
9427777dab0Sopenharmony_ci	SLresult (*GetPlayState) (
9437777dab0Sopenharmony_ci		SLPlayItf self,
9447777dab0Sopenharmony_ci		SLuint32 *pState
9457777dab0Sopenharmony_ci	);
9467777dab0Sopenharmony_ci	SLresult (*GetDuration) (
9477777dab0Sopenharmony_ci		SLPlayItf self,
9487777dab0Sopenharmony_ci		SLmillisecond *pMsec
9497777dab0Sopenharmony_ci	);
9507777dab0Sopenharmony_ci	SLresult (*GetPosition) (
9517777dab0Sopenharmony_ci		SLPlayItf self,
9527777dab0Sopenharmony_ci		SLmillisecond *pMsec
9537777dab0Sopenharmony_ci	);
9547777dab0Sopenharmony_ci	SLresult (*RegisterCallback) (
9557777dab0Sopenharmony_ci		SLPlayItf self,
9567777dab0Sopenharmony_ci		slPlayCallback callback,
9577777dab0Sopenharmony_ci		void *pContext
9587777dab0Sopenharmony_ci	);
9597777dab0Sopenharmony_ci	SLresult (*SetCallbackEventsMask) (
9607777dab0Sopenharmony_ci		SLPlayItf self,
9617777dab0Sopenharmony_ci		SLuint32 eventFlags
9627777dab0Sopenharmony_ci	);
9637777dab0Sopenharmony_ci	SLresult (*GetCallbackEventsMask) (
9647777dab0Sopenharmony_ci		SLPlayItf self,
9657777dab0Sopenharmony_ci		SLuint32 *pEventFlags
9667777dab0Sopenharmony_ci	);
9677777dab0Sopenharmony_ci	SLresult (*SetMarkerPosition) (
9687777dab0Sopenharmony_ci		SLPlayItf self,
9697777dab0Sopenharmony_ci		SLmillisecond mSec
9707777dab0Sopenharmony_ci	);
9717777dab0Sopenharmony_ci	SLresult (*ClearMarkerPosition) (
9727777dab0Sopenharmony_ci		SLPlayItf self
9737777dab0Sopenharmony_ci	);
9747777dab0Sopenharmony_ci	SLresult (*GetMarkerPosition) (
9757777dab0Sopenharmony_ci		SLPlayItf self,
9767777dab0Sopenharmony_ci		SLmillisecond *pMsec
9777777dab0Sopenharmony_ci	);
9787777dab0Sopenharmony_ci	SLresult (*SetPositionUpdatePeriod) (
9797777dab0Sopenharmony_ci		SLPlayItf self,
9807777dab0Sopenharmony_ci		SLmillisecond mSec
9817777dab0Sopenharmony_ci	);
9827777dab0Sopenharmony_ci	SLresult (*GetPositionUpdatePeriod) (
9837777dab0Sopenharmony_ci		SLPlayItf self,
9847777dab0Sopenharmony_ci		SLmillisecond *pMsec
9857777dab0Sopenharmony_ci	);
9867777dab0Sopenharmony_ci};
9877777dab0Sopenharmony_ci
9887777dab0Sopenharmony_ci/*---------------------------------------------------------------------------*/
9897777dab0Sopenharmony_ci/* Prefetch status interface                                                 */
9907777dab0Sopenharmony_ci/*---------------------------------------------------------------------------*/
9917777dab0Sopenharmony_ci
9927777dab0Sopenharmony_ci#define SL_PREFETCHEVENT_STATUSCHANGE		((SLuint32) 0x00000001)
9937777dab0Sopenharmony_ci#define SL_PREFETCHEVENT_FILLLEVELCHANGE	((SLuint32) 0x00000002)
9947777dab0Sopenharmony_ci
9957777dab0Sopenharmony_ci#define SL_PREFETCHSTATUS_UNDERFLOW		((SLuint32) 0x00000001)
9967777dab0Sopenharmony_ci#define SL_PREFETCHSTATUS_SUFFICIENTDATA	((SLuint32) 0x00000002)
9977777dab0Sopenharmony_ci#define SL_PREFETCHSTATUS_OVERFLOW		((SLuint32) 0x00000003)
9987777dab0Sopenharmony_ci
9997777dab0Sopenharmony_ci
10007777dab0Sopenharmony_ciextern const SLInterfaceID SL_IID_PREFETCHSTATUS;
10017777dab0Sopenharmony_ci
10027777dab0Sopenharmony_ci
10037777dab0Sopenharmony_ci/** Prefetch status interface methods */
10047777dab0Sopenharmony_ci
10057777dab0Sopenharmony_cistruct SLPrefetchStatusItf_;
10067777dab0Sopenharmony_citypedef const struct SLPrefetchStatusItf_ * const * SLPrefetchStatusItf;
10077777dab0Sopenharmony_ci
10087777dab0Sopenharmony_citypedef void (SLAPIENTRY *slPrefetchCallback) (
10097777dab0Sopenharmony_ci	SLPrefetchStatusItf caller,
10107777dab0Sopenharmony_ci	void *pContext,
10117777dab0Sopenharmony_ci	SLuint32 event
10127777dab0Sopenharmony_ci);
10137777dab0Sopenharmony_ci
10147777dab0Sopenharmony_cistruct SLPrefetchStatusItf_ {
10157777dab0Sopenharmony_ci	SLresult (*GetPrefetchStatus) (
10167777dab0Sopenharmony_ci		SLPrefetchStatusItf self,
10177777dab0Sopenharmony_ci		SLuint32 *pStatus
10187777dab0Sopenharmony_ci	);
10197777dab0Sopenharmony_ci	SLresult (*GetFillLevel) (
10207777dab0Sopenharmony_ci		SLPrefetchStatusItf self,
10217777dab0Sopenharmony_ci		SLpermille *pLevel
10227777dab0Sopenharmony_ci	);
10237777dab0Sopenharmony_ci	SLresult (*RegisterCallback) (
10247777dab0Sopenharmony_ci		SLPrefetchStatusItf self,
10257777dab0Sopenharmony_ci		slPrefetchCallback callback,
10267777dab0Sopenharmony_ci		void *pContext
10277777dab0Sopenharmony_ci	);
10287777dab0Sopenharmony_ci	SLresult (*SetCallbackEventsMask) (
10297777dab0Sopenharmony_ci		SLPrefetchStatusItf self,
10307777dab0Sopenharmony_ci		SLuint32 eventFlags
10317777dab0Sopenharmony_ci	);
10327777dab0Sopenharmony_ci	SLresult (*GetCallbackEventsMask) (
10337777dab0Sopenharmony_ci		SLPrefetchStatusItf self,
10347777dab0Sopenharmony_ci		SLuint32 *pEventFlags
10357777dab0Sopenharmony_ci	);
10367777dab0Sopenharmony_ci	SLresult (*SetFillUpdatePeriod) (
10377777dab0Sopenharmony_ci		SLPrefetchStatusItf self,
10387777dab0Sopenharmony_ci		SLpermille period
10397777dab0Sopenharmony_ci	);
10407777dab0Sopenharmony_ci	SLresult (*GetFillUpdatePeriod) (
10417777dab0Sopenharmony_ci		SLPrefetchStatusItf self,
10427777dab0Sopenharmony_ci		SLpermille *pPeriod
10437777dab0Sopenharmony_ci	);
10447777dab0Sopenharmony_ci};
10457777dab0Sopenharmony_ci
10467777dab0Sopenharmony_ci/*---------------------------------------------------------------------------*/
10477777dab0Sopenharmony_ci/* Playback Rate interface                                                   */
10487777dab0Sopenharmony_ci/*---------------------------------------------------------------------------*/
10497777dab0Sopenharmony_ci
10507777dab0Sopenharmony_ci#define SL_RATEPROP_RESERVED1		  		((SLuint32) 0x00000001)
10517777dab0Sopenharmony_ci#define SL_RATEPROP_RESERVED2		  		((SLuint32) 0x00000002)
10527777dab0Sopenharmony_ci#define SL_RATEPROP_SILENTAUDIO				((SLuint32) 0x00000100)
10537777dab0Sopenharmony_ci#define SL_RATEPROP_STAGGEREDAUDIO	((SLuint32) 0x00000200)
10547777dab0Sopenharmony_ci#define SL_RATEPROP_NOPITCHCORAUDIO	((SLuint32) 0x00000400)
10557777dab0Sopenharmony_ci#define SL_RATEPROP_PITCHCORAUDIO	((SLuint32) 0x00000800)
10567777dab0Sopenharmony_ci
10577777dab0Sopenharmony_ci
10587777dab0Sopenharmony_ciextern const SLInterfaceID SL_IID_PLAYBACKRATE;
10597777dab0Sopenharmony_ci
10607777dab0Sopenharmony_cistruct SLPlaybackRateItf_;
10617777dab0Sopenharmony_citypedef const struct SLPlaybackRateItf_ * const * SLPlaybackRateItf;
10627777dab0Sopenharmony_ci
10637777dab0Sopenharmony_cistruct SLPlaybackRateItf_ {
10647777dab0Sopenharmony_ci	SLresult (*SetRate)(
10657777dab0Sopenharmony_ci		SLPlaybackRateItf self,
10667777dab0Sopenharmony_ci		SLpermille rate
10677777dab0Sopenharmony_ci	);
10687777dab0Sopenharmony_ci	SLresult (*GetRate)(
10697777dab0Sopenharmony_ci		SLPlaybackRateItf self,
10707777dab0Sopenharmony_ci		SLpermille *pRate
10717777dab0Sopenharmony_ci	);
10727777dab0Sopenharmony_ci	SLresult (*SetPropertyConstraints)(
10737777dab0Sopenharmony_ci		SLPlaybackRateItf self,
10747777dab0Sopenharmony_ci		SLuint32 constraints
10757777dab0Sopenharmony_ci	);
10767777dab0Sopenharmony_ci	SLresult (*GetProperties)(
10777777dab0Sopenharmony_ci		SLPlaybackRateItf self,
10787777dab0Sopenharmony_ci		SLuint32 *pProperties
10797777dab0Sopenharmony_ci	);
10807777dab0Sopenharmony_ci	SLresult (*GetCapabilitiesOfRate)(
10817777dab0Sopenharmony_ci		SLPlaybackRateItf self,
10827777dab0Sopenharmony_ci		SLpermille rate,
10837777dab0Sopenharmony_ci		SLuint32 *pCapabilities
10847777dab0Sopenharmony_ci	);
10857777dab0Sopenharmony_ci	SLresult (*GetRateRange) (
10867777dab0Sopenharmony_ci		SLPlaybackRateItf self,
10877777dab0Sopenharmony_ci		SLuint8 index,
10887777dab0Sopenharmony_ci		SLpermille *pMinRate,
10897777dab0Sopenharmony_ci		SLpermille *pMaxRate,
10907777dab0Sopenharmony_ci		SLpermille *pStepSize,
10917777dab0Sopenharmony_ci		SLuint32 *pCapabilities
10927777dab0Sopenharmony_ci	);
10937777dab0Sopenharmony_ci};
10947777dab0Sopenharmony_ci
10957777dab0Sopenharmony_ci/*---------------------------------------------------------------------------*/
10967777dab0Sopenharmony_ci/* Seek Interface                                                            */
10977777dab0Sopenharmony_ci/*---------------------------------------------------------------------------*/
10987777dab0Sopenharmony_ci
10997777dab0Sopenharmony_ci#define SL_SEEKMODE_FAST		((SLuint32) 0x0001)
11007777dab0Sopenharmony_ci#define SL_SEEKMODE_ACCURATE	((SLuint32) 0x0002)
11017777dab0Sopenharmony_ci
11027777dab0Sopenharmony_ciextern const SLInterfaceID SL_IID_SEEK;
11037777dab0Sopenharmony_ci
11047777dab0Sopenharmony_cistruct SLSeekItf_;
11057777dab0Sopenharmony_citypedef const struct SLSeekItf_ * const * SLSeekItf;
11067777dab0Sopenharmony_ci
11077777dab0Sopenharmony_cistruct SLSeekItf_ {
11087777dab0Sopenharmony_ci	SLresult (*SetPosition)(
11097777dab0Sopenharmony_ci		SLSeekItf self,
11107777dab0Sopenharmony_ci		SLmillisecond pos,
11117777dab0Sopenharmony_ci		SLuint32 seekMode
11127777dab0Sopenharmony_ci	);
11137777dab0Sopenharmony_ci	SLresult (*SetLoop)(
11147777dab0Sopenharmony_ci		SLSeekItf self,
11157777dab0Sopenharmony_ci		SLboolean loopEnable,
11167777dab0Sopenharmony_ci		SLmillisecond startPos,
11177777dab0Sopenharmony_ci		SLmillisecond endPos
11187777dab0Sopenharmony_ci	);
11197777dab0Sopenharmony_ci	SLresult (*GetLoop)(
11207777dab0Sopenharmony_ci		SLSeekItf self,
11217777dab0Sopenharmony_ci		SLboolean *pLoopEnabled,
11227777dab0Sopenharmony_ci		SLmillisecond *pStartPos,
11237777dab0Sopenharmony_ci		SLmillisecond *pEndPos
11247777dab0Sopenharmony_ci	);
11257777dab0Sopenharmony_ci};
11267777dab0Sopenharmony_ci
11277777dab0Sopenharmony_ci/*---------------------------------------------------------------------------*/
11287777dab0Sopenharmony_ci/* Standard Recording Interface                                              */
11297777dab0Sopenharmony_ci/*---------------------------------------------------------------------------*/
11307777dab0Sopenharmony_ci
11317777dab0Sopenharmony_ci/** Recording states */
11327777dab0Sopenharmony_ci#define SL_RECORDSTATE_STOPPED 	((SLuint32) 0x00000001)
11337777dab0Sopenharmony_ci#define SL_RECORDSTATE_PAUSED	((SLuint32) 0x00000002)
11347777dab0Sopenharmony_ci#define SL_RECORDSTATE_RECORDING	((SLuint32) 0x00000003)
11357777dab0Sopenharmony_ci
11367777dab0Sopenharmony_ci
11377777dab0Sopenharmony_ci/** Record event **/
11387777dab0Sopenharmony_ci#define SL_RECORDEVENT_HEADATLIMIT	((SLuint32) 0x00000001)
11397777dab0Sopenharmony_ci#define SL_RECORDEVENT_HEADATMARKER	((SLuint32) 0x00000002)
11407777dab0Sopenharmony_ci#define SL_RECORDEVENT_HEADATNEWPOS	((SLuint32) 0x00000004)
11417777dab0Sopenharmony_ci#define SL_RECORDEVENT_HEADMOVING	((SLuint32) 0x00000008)
11427777dab0Sopenharmony_ci#define SL_RECORDEVENT_HEADSTALLED 	((SLuint32) 0x00000010)
11437777dab0Sopenharmony_ci/* Note: SL_RECORDEVENT_BUFFER_INSUFFICIENT is deprecated, use SL_RECORDEVENT_BUFFER_FULL instead. */
11447777dab0Sopenharmony_ci#define SL_RECORDEVENT_BUFFER_INSUFFICIENT      ((SLuint32) 0x00000020)
11457777dab0Sopenharmony_ci#define SL_RECORDEVENT_BUFFER_FULL	((SLuint32) 0x00000020)
11467777dab0Sopenharmony_ci
11477777dab0Sopenharmony_ci
11487777dab0Sopenharmony_ciextern const SLInterfaceID SL_IID_RECORD;
11497777dab0Sopenharmony_ci
11507777dab0Sopenharmony_cistruct SLRecordItf_;
11517777dab0Sopenharmony_citypedef const struct SLRecordItf_ * const * SLRecordItf;
11527777dab0Sopenharmony_ci
11537777dab0Sopenharmony_citypedef void (SLAPIENTRY *slRecordCallback) (
11547777dab0Sopenharmony_ci	SLRecordItf caller,
11557777dab0Sopenharmony_ci	void *pContext,
11567777dab0Sopenharmony_ci	SLuint32 event
11577777dab0Sopenharmony_ci);
11587777dab0Sopenharmony_ci
11597777dab0Sopenharmony_ci/** Recording interface methods */
11607777dab0Sopenharmony_cistruct SLRecordItf_ {
11617777dab0Sopenharmony_ci	SLresult (*SetRecordState) (
11627777dab0Sopenharmony_ci		SLRecordItf self,
11637777dab0Sopenharmony_ci		SLuint32 state
11647777dab0Sopenharmony_ci	);
11657777dab0Sopenharmony_ci	SLresult (*GetRecordState) (
11667777dab0Sopenharmony_ci		SLRecordItf self,
11677777dab0Sopenharmony_ci		SLuint32 *pState
11687777dab0Sopenharmony_ci	);
11697777dab0Sopenharmony_ci	SLresult (*SetDurationLimit) (
11707777dab0Sopenharmony_ci		SLRecordItf self,
11717777dab0Sopenharmony_ci		SLmillisecond msec
11727777dab0Sopenharmony_ci	);
11737777dab0Sopenharmony_ci	SLresult (*GetPosition) (
11747777dab0Sopenharmony_ci		SLRecordItf self,
11757777dab0Sopenharmony_ci		SLmillisecond *pMsec
11767777dab0Sopenharmony_ci	);
11777777dab0Sopenharmony_ci	SLresult (*RegisterCallback) (
11787777dab0Sopenharmony_ci		SLRecordItf self,
11797777dab0Sopenharmony_ci		slRecordCallback callback,
11807777dab0Sopenharmony_ci		void *pContext
11817777dab0Sopenharmony_ci	);
11827777dab0Sopenharmony_ci	SLresult (*SetCallbackEventsMask) (
11837777dab0Sopenharmony_ci		SLRecordItf self,
11847777dab0Sopenharmony_ci		SLuint32 eventFlags
11857777dab0Sopenharmony_ci	);
11867777dab0Sopenharmony_ci	SLresult (*GetCallbackEventsMask) (
11877777dab0Sopenharmony_ci		SLRecordItf self,
11887777dab0Sopenharmony_ci		SLuint32 *pEventFlags
11897777dab0Sopenharmony_ci	);
11907777dab0Sopenharmony_ci	SLresult (*SetMarkerPosition) (
11917777dab0Sopenharmony_ci		SLRecordItf self,
11927777dab0Sopenharmony_ci		SLmillisecond mSec
11937777dab0Sopenharmony_ci	);
11947777dab0Sopenharmony_ci	SLresult (*ClearMarkerPosition) (
11957777dab0Sopenharmony_ci		SLRecordItf self
11967777dab0Sopenharmony_ci	);
11977777dab0Sopenharmony_ci	SLresult (*GetMarkerPosition) (
11987777dab0Sopenharmony_ci		SLRecordItf self,
11997777dab0Sopenharmony_ci		SLmillisecond *pMsec
12007777dab0Sopenharmony_ci	);
12017777dab0Sopenharmony_ci	SLresult (*SetPositionUpdatePeriod) (
12027777dab0Sopenharmony_ci		SLRecordItf self,
12037777dab0Sopenharmony_ci		SLmillisecond mSec
12047777dab0Sopenharmony_ci	);
12057777dab0Sopenharmony_ci	SLresult (*GetPositionUpdatePeriod) (
12067777dab0Sopenharmony_ci		SLRecordItf self,
12077777dab0Sopenharmony_ci		SLmillisecond *pMsec
12087777dab0Sopenharmony_ci	);
12097777dab0Sopenharmony_ci};
12107777dab0Sopenharmony_ci
12117777dab0Sopenharmony_ci/*---------------------------------------------------------------------------*/
12127777dab0Sopenharmony_ci/* Equalizer interface                                                       */
12137777dab0Sopenharmony_ci/*---------------------------------------------------------------------------*/
12147777dab0Sopenharmony_ci
12157777dab0Sopenharmony_ci#define SL_EQUALIZER_UNDEFINED				((SLuint16) 0xFFFF)
12167777dab0Sopenharmony_ci
12177777dab0Sopenharmony_ciextern const SLInterfaceID SL_IID_EQUALIZER;
12187777dab0Sopenharmony_ci
12197777dab0Sopenharmony_cistruct SLEqualizerItf_;
12207777dab0Sopenharmony_citypedef const struct SLEqualizerItf_ * const * SLEqualizerItf;
12217777dab0Sopenharmony_ci
12227777dab0Sopenharmony_cistruct SLEqualizerItf_ {
12237777dab0Sopenharmony_ci	SLresult (*SetEnabled)(
12247777dab0Sopenharmony_ci		SLEqualizerItf self,
12257777dab0Sopenharmony_ci		SLboolean enabled
12267777dab0Sopenharmony_ci	);
12277777dab0Sopenharmony_ci	SLresult (*IsEnabled)(
12287777dab0Sopenharmony_ci		SLEqualizerItf self,
12297777dab0Sopenharmony_ci		SLboolean *pEnabled
12307777dab0Sopenharmony_ci	);
12317777dab0Sopenharmony_ci	SLresult (*GetNumberOfBands)(
12327777dab0Sopenharmony_ci		SLEqualizerItf self,
12337777dab0Sopenharmony_ci		SLuint16 *pAmount
12347777dab0Sopenharmony_ci	);
12357777dab0Sopenharmony_ci	SLresult (*GetBandLevelRange)(
12367777dab0Sopenharmony_ci		SLEqualizerItf self,
12377777dab0Sopenharmony_ci		SLmillibel *pMin,
12387777dab0Sopenharmony_ci		SLmillibel *pMax
12397777dab0Sopenharmony_ci	);
12407777dab0Sopenharmony_ci	SLresult (*SetBandLevel)(
12417777dab0Sopenharmony_ci		SLEqualizerItf self,
12427777dab0Sopenharmony_ci		SLuint16 band,
12437777dab0Sopenharmony_ci		SLmillibel level
12447777dab0Sopenharmony_ci	);
12457777dab0Sopenharmony_ci	SLresult (*GetBandLevel)(
12467777dab0Sopenharmony_ci		SLEqualizerItf self,
12477777dab0Sopenharmony_ci		SLuint16 band,
12487777dab0Sopenharmony_ci		SLmillibel *pLevel
12497777dab0Sopenharmony_ci	);
12507777dab0Sopenharmony_ci	SLresult (*GetCenterFreq)(
12517777dab0Sopenharmony_ci		SLEqualizerItf self,
12527777dab0Sopenharmony_ci		SLuint16 band,
12537777dab0Sopenharmony_ci		SLmilliHertz *pCenter
12547777dab0Sopenharmony_ci	);
12557777dab0Sopenharmony_ci	SLresult (*GetBandFreqRange)(
12567777dab0Sopenharmony_ci		SLEqualizerItf self,
12577777dab0Sopenharmony_ci		SLuint16 band,
12587777dab0Sopenharmony_ci		SLmilliHertz *pMin,
12597777dab0Sopenharmony_ci		SLmilliHertz *pMax
12607777dab0Sopenharmony_ci	);
12617777dab0Sopenharmony_ci	SLresult (*GetBand)(
12627777dab0Sopenharmony_ci		SLEqualizerItf self,
12637777dab0Sopenharmony_ci		SLmilliHertz frequency,
12647777dab0Sopenharmony_ci		SLuint16 *pBand
12657777dab0Sopenharmony_ci	);
12667777dab0Sopenharmony_ci	SLresult (*GetCurrentPreset)(
12677777dab0Sopenharmony_ci		SLEqualizerItf self,
12687777dab0Sopenharmony_ci		SLuint16 *pPreset
12697777dab0Sopenharmony_ci	);
12707777dab0Sopenharmony_ci	SLresult (*UsePreset)(
12717777dab0Sopenharmony_ci		SLEqualizerItf self,
12727777dab0Sopenharmony_ci		SLuint16 index
12737777dab0Sopenharmony_ci	);
12747777dab0Sopenharmony_ci	SLresult (*GetNumberOfPresets)(
12757777dab0Sopenharmony_ci		SLEqualizerItf self,
12767777dab0Sopenharmony_ci		SLuint16 *pNumPresets
12777777dab0Sopenharmony_ci	);
12787777dab0Sopenharmony_ci	SLresult (*GetPresetName)(
12797777dab0Sopenharmony_ci		SLEqualizerItf self,
12807777dab0Sopenharmony_ci		SLuint16 index,
12817777dab0Sopenharmony_ci		const SLchar ** ppName
12827777dab0Sopenharmony_ci	);
12837777dab0Sopenharmony_ci};
12847777dab0Sopenharmony_ci
12857777dab0Sopenharmony_ci/*---------------------------------------------------------------------------*/
12867777dab0Sopenharmony_ci/* Volume Interface                                                           */
12877777dab0Sopenharmony_ci/* --------------------------------------------------------------------------*/
12887777dab0Sopenharmony_ci
12897777dab0Sopenharmony_ciextern const SLInterfaceID SL_IID_VOLUME;
12907777dab0Sopenharmony_ci
12917777dab0Sopenharmony_cistruct SLVolumeItf_;
12927777dab0Sopenharmony_citypedef const struct SLVolumeItf_ * const * SLVolumeItf;
12937777dab0Sopenharmony_ci
12947777dab0Sopenharmony_cistruct SLVolumeItf_ {
12957777dab0Sopenharmony_ci	SLresult (*SetVolumeLevel) (
12967777dab0Sopenharmony_ci		SLVolumeItf self,
12977777dab0Sopenharmony_ci		SLmillibel level
12987777dab0Sopenharmony_ci	);
12997777dab0Sopenharmony_ci	SLresult (*GetVolumeLevel) (
13007777dab0Sopenharmony_ci		SLVolumeItf self,
13017777dab0Sopenharmony_ci		SLmillibel *pLevel
13027777dab0Sopenharmony_ci	);
13037777dab0Sopenharmony_ci	SLresult (*GetMaxVolumeLevel) (
13047777dab0Sopenharmony_ci		SLVolumeItf  self,
13057777dab0Sopenharmony_ci		SLmillibel *pMaxLevel
13067777dab0Sopenharmony_ci	);
13077777dab0Sopenharmony_ci	SLresult (*SetMute) (
13087777dab0Sopenharmony_ci		SLVolumeItf self,
13097777dab0Sopenharmony_ci		SLboolean mute
13107777dab0Sopenharmony_ci	);
13117777dab0Sopenharmony_ci	SLresult (*GetMute) (
13127777dab0Sopenharmony_ci		SLVolumeItf self,
13137777dab0Sopenharmony_ci		SLboolean *pMute
13147777dab0Sopenharmony_ci	);
13157777dab0Sopenharmony_ci	SLresult (*EnableStereoPosition) (
13167777dab0Sopenharmony_ci		SLVolumeItf self,
13177777dab0Sopenharmony_ci		SLboolean enable
13187777dab0Sopenharmony_ci	);
13197777dab0Sopenharmony_ci	SLresult (*IsEnabledStereoPosition) (
13207777dab0Sopenharmony_ci		SLVolumeItf self,
13217777dab0Sopenharmony_ci		SLboolean *pEnable
13227777dab0Sopenharmony_ci	);
13237777dab0Sopenharmony_ci	SLresult (*SetStereoPosition) (
13247777dab0Sopenharmony_ci		SLVolumeItf self,
13257777dab0Sopenharmony_ci		SLpermille stereoPosition
13267777dab0Sopenharmony_ci	);
13277777dab0Sopenharmony_ci	SLresult (*GetStereoPosition) (
13287777dab0Sopenharmony_ci		SLVolumeItf self,
13297777dab0Sopenharmony_ci		SLpermille *pStereoPosition
13307777dab0Sopenharmony_ci	);
13317777dab0Sopenharmony_ci};
13327777dab0Sopenharmony_ci
13337777dab0Sopenharmony_ci
13347777dab0Sopenharmony_ci/*---------------------------------------------------------------------------*/
13357777dab0Sopenharmony_ci/* Device Volume Interface                                                   */
13367777dab0Sopenharmony_ci/* --------------------------------------------------------------------------*/
13377777dab0Sopenharmony_ci
13387777dab0Sopenharmony_ciextern const SLInterfaceID SL_IID_DEVICEVOLUME;
13397777dab0Sopenharmony_ci
13407777dab0Sopenharmony_cistruct SLDeviceVolumeItf_;
13417777dab0Sopenharmony_citypedef const struct SLDeviceVolumeItf_ * const * SLDeviceVolumeItf;
13427777dab0Sopenharmony_ci
13437777dab0Sopenharmony_cistruct SLDeviceVolumeItf_ {
13447777dab0Sopenharmony_ci	SLresult (*GetVolumeScale) (
13457777dab0Sopenharmony_ci		SLDeviceVolumeItf self,
13467777dab0Sopenharmony_ci		SLuint32 deviceID,
13477777dab0Sopenharmony_ci		SLint32 *pMinValue,
13487777dab0Sopenharmony_ci		SLint32 *pMaxValue,
13497777dab0Sopenharmony_ci		SLboolean *pIsMillibelScale
13507777dab0Sopenharmony_ci	);
13517777dab0Sopenharmony_ci	SLresult (*SetVolume) (
13527777dab0Sopenharmony_ci		SLDeviceVolumeItf self,
13537777dab0Sopenharmony_ci		SLuint32 deviceID,
13547777dab0Sopenharmony_ci		SLint32 volume
13557777dab0Sopenharmony_ci	);
13567777dab0Sopenharmony_ci	SLresult (*GetVolume) (
13577777dab0Sopenharmony_ci		SLDeviceVolumeItf self,
13587777dab0Sopenharmony_ci		SLuint32 deviceID,
13597777dab0Sopenharmony_ci		SLint32 *pVolume
13607777dab0Sopenharmony_ci	);
13617777dab0Sopenharmony_ci};
13627777dab0Sopenharmony_ci
13637777dab0Sopenharmony_ci
13647777dab0Sopenharmony_ci/*---------------------------------------------------------------------------*/
13657777dab0Sopenharmony_ci/* Buffer Queue Interface                                                    */
13667777dab0Sopenharmony_ci/*---------------------------------------------------------------------------*/
13677777dab0Sopenharmony_ci
13687777dab0Sopenharmony_ciextern const SLInterfaceID SL_IID_BUFFERQUEUE;
13697777dab0Sopenharmony_ci
13707777dab0Sopenharmony_cistruct SLBufferQueueItf_;
13717777dab0Sopenharmony_citypedef const struct SLBufferQueueItf_ * const * SLBufferQueueItf;
13727777dab0Sopenharmony_ci
13737777dab0Sopenharmony_citypedef void (SLAPIENTRY *slBufferQueueCallback)(
13747777dab0Sopenharmony_ci	SLBufferQueueItf caller,
13757777dab0Sopenharmony_ci	void *pContext
13767777dab0Sopenharmony_ci);
13777777dab0Sopenharmony_ci
13787777dab0Sopenharmony_ci/** Buffer queue state **/
13797777dab0Sopenharmony_ci
13807777dab0Sopenharmony_citypedef struct SLBufferQueueState_ {
13817777dab0Sopenharmony_ci	SLuint32	count;
13827777dab0Sopenharmony_ci	SLuint32	playIndex;
13837777dab0Sopenharmony_ci} SLBufferQueueState;
13847777dab0Sopenharmony_ci
13857777dab0Sopenharmony_ci
13867777dab0Sopenharmony_cistruct SLBufferQueueItf_ {
13877777dab0Sopenharmony_ci	SLresult (*Enqueue) (
13887777dab0Sopenharmony_ci		SLBufferQueueItf self,
13897777dab0Sopenharmony_ci		const void *pBuffer,
13907777dab0Sopenharmony_ci		SLuint32 size
13917777dab0Sopenharmony_ci	);
13927777dab0Sopenharmony_ci	SLresult (*Clear) (
13937777dab0Sopenharmony_ci		SLBufferQueueItf self
13947777dab0Sopenharmony_ci	);
13957777dab0Sopenharmony_ci	SLresult (*GetState) (
13967777dab0Sopenharmony_ci		SLBufferQueueItf self,
13977777dab0Sopenharmony_ci		SLBufferQueueState *pState
13987777dab0Sopenharmony_ci	);
13997777dab0Sopenharmony_ci	SLresult (*RegisterCallback) (
14007777dab0Sopenharmony_ci		SLBufferQueueItf self,
14017777dab0Sopenharmony_ci		slBufferQueueCallback callback,
14027777dab0Sopenharmony_ci		void* pContext
14037777dab0Sopenharmony_ci	);
14047777dab0Sopenharmony_ci};
14057777dab0Sopenharmony_ci
14067777dab0Sopenharmony_ci
14077777dab0Sopenharmony_ci/*---------------------------------------------------------------------------*/
14087777dab0Sopenharmony_ci/* PresetReverb                                                              */
14097777dab0Sopenharmony_ci/*---------------------------------------------------------------------------*/
14107777dab0Sopenharmony_ci
14117777dab0Sopenharmony_ci#define SL_REVERBPRESET_NONE		((SLuint16) 0x0000)
14127777dab0Sopenharmony_ci#define SL_REVERBPRESET_SMALLROOM	((SLuint16) 0x0001)
14137777dab0Sopenharmony_ci#define SL_REVERBPRESET_MEDIUMROOM	((SLuint16) 0x0002)
14147777dab0Sopenharmony_ci#define SL_REVERBPRESET_LARGEROOM	((SLuint16) 0x0003)
14157777dab0Sopenharmony_ci#define SL_REVERBPRESET_MEDIUMHALL	((SLuint16) 0x0004)
14167777dab0Sopenharmony_ci#define SL_REVERBPRESET_LARGEHALL	((SLuint16) 0x0005)
14177777dab0Sopenharmony_ci#define SL_REVERBPRESET_PLATE 		((SLuint16) 0x0006)
14187777dab0Sopenharmony_ci
14197777dab0Sopenharmony_ci
14207777dab0Sopenharmony_ciextern const SLInterfaceID SL_IID_PRESETREVERB;
14217777dab0Sopenharmony_ci
14227777dab0Sopenharmony_cistruct SLPresetReverbItf_;
14237777dab0Sopenharmony_citypedef const struct SLPresetReverbItf_ * const * SLPresetReverbItf;
14247777dab0Sopenharmony_ci
14257777dab0Sopenharmony_cistruct SLPresetReverbItf_ {
14267777dab0Sopenharmony_ci	SLresult (*SetPreset) (
14277777dab0Sopenharmony_ci		SLPresetReverbItf self,
14287777dab0Sopenharmony_ci		SLuint16 preset
14297777dab0Sopenharmony_ci	);
14307777dab0Sopenharmony_ci	SLresult (*GetPreset) (
14317777dab0Sopenharmony_ci		SLPresetReverbItf self,
14327777dab0Sopenharmony_ci		SLuint16 *pPreset
14337777dab0Sopenharmony_ci	);
14347777dab0Sopenharmony_ci};
14357777dab0Sopenharmony_ci
14367777dab0Sopenharmony_ci
14377777dab0Sopenharmony_ci/*---------------------------------------------------------------------------*/
14387777dab0Sopenharmony_ci/* EnvironmentalReverb                                                       */
14397777dab0Sopenharmony_ci/*---------------------------------------------------------------------------*/
14407777dab0Sopenharmony_ci
14417777dab0Sopenharmony_ci#define SL_I3DL2_ENVIRONMENT_PRESET_DEFAULT \
14427777dab0Sopenharmony_ci	{ SL_MILLIBEL_MIN,    0,  1000,   500, SL_MILLIBEL_MIN,  20, SL_MILLIBEL_MIN,  40, 1000,1000 }
14437777dab0Sopenharmony_ci#define SL_I3DL2_ENVIRONMENT_PRESET_GENERIC \
14447777dab0Sopenharmony_ci	{ -1000, -100, 1490,  830, -2602,   7,   200,  11, 1000,1000 }
14457777dab0Sopenharmony_ci#define SL_I3DL2_ENVIRONMENT_PRESET_PADDEDCELL \
14467777dab0Sopenharmony_ci	{ -1000,-6000,  170,  100, -1204,   1,   207,   2, 1000,1000 }
14477777dab0Sopenharmony_ci#define SL_I3DL2_ENVIRONMENT_PRESET_ROOM \
14487777dab0Sopenharmony_ci	{ -1000, -454,  400,  830, -1646,   2,    53,   3, 1000,1000 }
14497777dab0Sopenharmony_ci#define SL_I3DL2_ENVIRONMENT_PRESET_BATHROOM \
14507777dab0Sopenharmony_ci	{ -1000,-1200, 1490,  540,  -370,   7,  1030,  11, 1000, 600 }
14517777dab0Sopenharmony_ci#define SL_I3DL2_ENVIRONMENT_PRESET_LIVINGROOM \
14527777dab0Sopenharmony_ci	{ -1000,-6000,  500,  100, -1376,   3, -1104,   4, 1000,1000 }
14537777dab0Sopenharmony_ci#define SL_I3DL2_ENVIRONMENT_PRESET_STONEROOM \
14547777dab0Sopenharmony_ci	{ -1000, -300, 2310,  640,  -711,  12,    83,  17, 1000,1000 }
14557777dab0Sopenharmony_ci#define SL_I3DL2_ENVIRONMENT_PRESET_AUDITORIUM \
14567777dab0Sopenharmony_ci	{ -1000, -476, 4320,  590,  -789,  20,  -289,  30, 1000,1000 }
14577777dab0Sopenharmony_ci#define SL_I3DL2_ENVIRONMENT_PRESET_CONCERTHALL \
14587777dab0Sopenharmony_ci	{ -1000, -500, 3920,  700, -1230,  20,    -2,  29, 1000,1000 }
14597777dab0Sopenharmony_ci#define SL_I3DL2_ENVIRONMENT_PRESET_CAVE \
14607777dab0Sopenharmony_ci	{ -1000,    0, 2910, 1300,  -602,  15,  -302,  22, 1000,1000 }
14617777dab0Sopenharmony_ci#define SL_I3DL2_ENVIRONMENT_PRESET_ARENA \
14627777dab0Sopenharmony_ci	{ -1000, -698, 7240,  330, -1166,  20,    16,  30, 1000,1000 }
14637777dab0Sopenharmony_ci#define SL_I3DL2_ENVIRONMENT_PRESET_HANGAR \
14647777dab0Sopenharmony_ci	{ -1000,-1000, 10050,  230,  -602,  20,   198,  30, 1000,1000 }
14657777dab0Sopenharmony_ci#define SL_I3DL2_ENVIRONMENT_PRESET_CARPETEDHALLWAY \
14667777dab0Sopenharmony_ci	{ -1000,-4000,  300,  100, -1831,   2, -1630,  30, 1000,1000 }
14677777dab0Sopenharmony_ci#define SL_I3DL2_ENVIRONMENT_PRESET_HALLWAY \
14687777dab0Sopenharmony_ci	{ -1000, -300, 1490,  590, -1219,   7,   441,  11, 1000,1000 }
14697777dab0Sopenharmony_ci#define SL_I3DL2_ENVIRONMENT_PRESET_STONECORRIDOR \
14707777dab0Sopenharmony_ci	{ -1000, -237, 2700,  790, -1214,  13,   395,  20, 1000,1000 }
14717777dab0Sopenharmony_ci#define SL_I3DL2_ENVIRONMENT_PRESET_ALLEY \
14727777dab0Sopenharmony_ci	{ -1000, -270, 1490,  860, -1204,   7,    -4,  11, 1000,1000 }
14737777dab0Sopenharmony_ci#define SL_I3DL2_ENVIRONMENT_PRESET_FOREST \
14747777dab0Sopenharmony_ci	{ -1000,-3300, 1490,  540, -2560, 162,  -613,  88,  790,1000 }
14757777dab0Sopenharmony_ci#define SL_I3DL2_ENVIRONMENT_PRESET_CITY \
14767777dab0Sopenharmony_ci	{ -1000, -800, 1490,  670, -2273,   7, -2217,  11,  500,1000 }
14777777dab0Sopenharmony_ci#define SL_I3DL2_ENVIRONMENT_PRESET_MOUNTAINS \
14787777dab0Sopenharmony_ci	{ -1000,-2500, 1490,  210, -2780, 300, -2014, 100,  270,1000 }
14797777dab0Sopenharmony_ci#define SL_I3DL2_ENVIRONMENT_PRESET_QUARRY \
14807777dab0Sopenharmony_ci	{ -1000,-1000, 1490,  830, SL_MILLIBEL_MIN,  61,   500,  25, 1000,1000 }
14817777dab0Sopenharmony_ci#define SL_I3DL2_ENVIRONMENT_PRESET_PLAIN \
14827777dab0Sopenharmony_ci	{ -1000,-2000, 1490,  500, -2466, 179, -2514, 100,  210,1000 }
14837777dab0Sopenharmony_ci#define SL_I3DL2_ENVIRONMENT_PRESET_PARKINGLOT \
14847777dab0Sopenharmony_ci	{ -1000,    0, 1650, 1500, -1363,   8, -1153,  12, 1000,1000 }
14857777dab0Sopenharmony_ci#define SL_I3DL2_ENVIRONMENT_PRESET_SEWERPIPE \
14867777dab0Sopenharmony_ci	{ -1000,-1000, 2810,  140,   429,  14,   648,  21,  800, 600 }
14877777dab0Sopenharmony_ci#define SL_I3DL2_ENVIRONMENT_PRESET_UNDERWATER \
14887777dab0Sopenharmony_ci	{ -1000,-4000, 1490,  100,  -449,   7,  1700,  11, 1000,1000 }
14897777dab0Sopenharmony_ci#define SL_I3DL2_ENVIRONMENT_PRESET_SMALLROOM \
14907777dab0Sopenharmony_ci	{ -1000,-600, 1100, 830, -400, 5, 500, 10, 1000, 1000 }
14917777dab0Sopenharmony_ci#define SL_I3DL2_ENVIRONMENT_PRESET_MEDIUMROOM \
14927777dab0Sopenharmony_ci	{ -1000,-600, 1300, 830, -1000, 20, -200, 20, 1000, 1000 }
14937777dab0Sopenharmony_ci#define SL_I3DL2_ENVIRONMENT_PRESET_LARGEROOM \
14947777dab0Sopenharmony_ci	{ -1000,-600, 1500, 830, -1600, 5, -1000, 40, 1000, 1000 }
14957777dab0Sopenharmony_ci#define SL_I3DL2_ENVIRONMENT_PRESET_MEDIUMHALL \
14967777dab0Sopenharmony_ci	{ -1000,-600, 1800, 700, -1300, 15, -800, 30, 1000, 1000 }
14977777dab0Sopenharmony_ci#define SL_I3DL2_ENVIRONMENT_PRESET_LARGEHALL \
14987777dab0Sopenharmony_ci	{ -1000,-600, 1800, 700, -2000, 30, -1400, 60, 1000, 1000 }
14997777dab0Sopenharmony_ci#define SL_I3DL2_ENVIRONMENT_PRESET_PLATE \
15007777dab0Sopenharmony_ci	{ -1000,-200, 1300, 900, 0, 2, 0, 10, 1000, 750 }
15017777dab0Sopenharmony_ci
15027777dab0Sopenharmony_ci
15037777dab0Sopenharmony_citypedef struct SLEnvironmentalReverbSettings_ {
15047777dab0Sopenharmony_ci	SLmillibel    roomLevel;
15057777dab0Sopenharmony_ci	SLmillibel    roomHFLevel;
15067777dab0Sopenharmony_ci	SLmillisecond decayTime;
15077777dab0Sopenharmony_ci	SLpermille    decayHFRatio;
15087777dab0Sopenharmony_ci	SLmillibel    reflectionsLevel;
15097777dab0Sopenharmony_ci	SLmillisecond reflectionsDelay;
15107777dab0Sopenharmony_ci	SLmillibel    reverbLevel;
15117777dab0Sopenharmony_ci	SLmillisecond reverbDelay;
15127777dab0Sopenharmony_ci	SLpermille    diffusion;
15137777dab0Sopenharmony_ci	SLpermille    density;
15147777dab0Sopenharmony_ci} SLEnvironmentalReverbSettings;
15157777dab0Sopenharmony_ci
15167777dab0Sopenharmony_ci
15177777dab0Sopenharmony_ci
15187777dab0Sopenharmony_ci
15197777dab0Sopenharmony_ciextern const SLInterfaceID SL_IID_ENVIRONMENTALREVERB;
15207777dab0Sopenharmony_ci
15217777dab0Sopenharmony_ci
15227777dab0Sopenharmony_cistruct SLEnvironmentalReverbItf_;
15237777dab0Sopenharmony_citypedef const struct SLEnvironmentalReverbItf_ * const * SLEnvironmentalReverbItf;
15247777dab0Sopenharmony_ci
15257777dab0Sopenharmony_cistruct SLEnvironmentalReverbItf_ {
15267777dab0Sopenharmony_ci	SLresult (*SetRoomLevel) (
15277777dab0Sopenharmony_ci		SLEnvironmentalReverbItf self,
15287777dab0Sopenharmony_ci		SLmillibel room
15297777dab0Sopenharmony_ci	);
15307777dab0Sopenharmony_ci	SLresult (*GetRoomLevel) (
15317777dab0Sopenharmony_ci		SLEnvironmentalReverbItf self,
15327777dab0Sopenharmony_ci		SLmillibel *pRoom
15337777dab0Sopenharmony_ci	);
15347777dab0Sopenharmony_ci	SLresult (*SetRoomHFLevel) (
15357777dab0Sopenharmony_ci		SLEnvironmentalReverbItf self,
15367777dab0Sopenharmony_ci		SLmillibel roomHF
15377777dab0Sopenharmony_ci	);
15387777dab0Sopenharmony_ci	SLresult (*GetRoomHFLevel) (
15397777dab0Sopenharmony_ci		SLEnvironmentalReverbItf self,
15407777dab0Sopenharmony_ci		SLmillibel *pRoomHF
15417777dab0Sopenharmony_ci	);
15427777dab0Sopenharmony_ci	SLresult (*SetDecayTime) (
15437777dab0Sopenharmony_ci		SLEnvironmentalReverbItf self,
15447777dab0Sopenharmony_ci		SLmillisecond decayTime
15457777dab0Sopenharmony_ci	);
15467777dab0Sopenharmony_ci	SLresult (*GetDecayTime) (
15477777dab0Sopenharmony_ci		SLEnvironmentalReverbItf self,
15487777dab0Sopenharmony_ci		SLmillisecond *pDecayTime
15497777dab0Sopenharmony_ci	);
15507777dab0Sopenharmony_ci	SLresult (*SetDecayHFRatio) (
15517777dab0Sopenharmony_ci		SLEnvironmentalReverbItf self,
15527777dab0Sopenharmony_ci		SLpermille decayHFRatio
15537777dab0Sopenharmony_ci	);
15547777dab0Sopenharmony_ci	SLresult (*GetDecayHFRatio) (
15557777dab0Sopenharmony_ci		SLEnvironmentalReverbItf self,
15567777dab0Sopenharmony_ci		SLpermille *pDecayHFRatio
15577777dab0Sopenharmony_ci	);
15587777dab0Sopenharmony_ci	SLresult (*SetReflectionsLevel) (
15597777dab0Sopenharmony_ci		SLEnvironmentalReverbItf self,
15607777dab0Sopenharmony_ci		SLmillibel reflectionsLevel
15617777dab0Sopenharmony_ci	);
15627777dab0Sopenharmony_ci	SLresult (*GetReflectionsLevel) (
15637777dab0Sopenharmony_ci		SLEnvironmentalReverbItf self,
15647777dab0Sopenharmony_ci		SLmillibel *pReflectionsLevel
15657777dab0Sopenharmony_ci	);
15667777dab0Sopenharmony_ci	SLresult (*SetReflectionsDelay) (
15677777dab0Sopenharmony_ci		SLEnvironmentalReverbItf self,
15687777dab0Sopenharmony_ci		SLmillisecond reflectionsDelay
15697777dab0Sopenharmony_ci	);
15707777dab0Sopenharmony_ci	SLresult (*GetReflectionsDelay) (
15717777dab0Sopenharmony_ci		SLEnvironmentalReverbItf self,
15727777dab0Sopenharmony_ci		SLmillisecond *pReflectionsDelay
15737777dab0Sopenharmony_ci	);
15747777dab0Sopenharmony_ci	SLresult (*SetReverbLevel) (
15757777dab0Sopenharmony_ci		SLEnvironmentalReverbItf self,
15767777dab0Sopenharmony_ci		SLmillibel reverbLevel
15777777dab0Sopenharmony_ci	);
15787777dab0Sopenharmony_ci	SLresult (*GetReverbLevel) (
15797777dab0Sopenharmony_ci		SLEnvironmentalReverbItf self,
15807777dab0Sopenharmony_ci		SLmillibel *pReverbLevel
15817777dab0Sopenharmony_ci	);
15827777dab0Sopenharmony_ci	SLresult (*SetReverbDelay) (
15837777dab0Sopenharmony_ci		SLEnvironmentalReverbItf self,
15847777dab0Sopenharmony_ci		SLmillisecond reverbDelay
15857777dab0Sopenharmony_ci	);
15867777dab0Sopenharmony_ci	SLresult (*GetReverbDelay) (
15877777dab0Sopenharmony_ci		SLEnvironmentalReverbItf self,
15887777dab0Sopenharmony_ci		SLmillisecond *pReverbDelay
15897777dab0Sopenharmony_ci	);
15907777dab0Sopenharmony_ci	SLresult (*SetDiffusion) (
15917777dab0Sopenharmony_ci		SLEnvironmentalReverbItf self,
15927777dab0Sopenharmony_ci		SLpermille diffusion
15937777dab0Sopenharmony_ci	);
15947777dab0Sopenharmony_ci	SLresult (*GetDiffusion) (
15957777dab0Sopenharmony_ci		SLEnvironmentalReverbItf self,
15967777dab0Sopenharmony_ci		SLpermille *pDiffusion
15977777dab0Sopenharmony_ci	);
15987777dab0Sopenharmony_ci	SLresult (*SetDensity) (
15997777dab0Sopenharmony_ci		SLEnvironmentalReverbItf self,
16007777dab0Sopenharmony_ci		SLpermille density
16017777dab0Sopenharmony_ci	);
16027777dab0Sopenharmony_ci	SLresult (*GetDensity) (
16037777dab0Sopenharmony_ci		SLEnvironmentalReverbItf self,
16047777dab0Sopenharmony_ci		SLpermille *pDensity
16057777dab0Sopenharmony_ci	);
16067777dab0Sopenharmony_ci	SLresult (*SetEnvironmentalReverbProperties) (
16077777dab0Sopenharmony_ci		SLEnvironmentalReverbItf self,
16087777dab0Sopenharmony_ci		const SLEnvironmentalReverbSettings *pProperties
16097777dab0Sopenharmony_ci	);
16107777dab0Sopenharmony_ci	SLresult (*GetEnvironmentalReverbProperties) (
16117777dab0Sopenharmony_ci		SLEnvironmentalReverbItf self,
16127777dab0Sopenharmony_ci		SLEnvironmentalReverbSettings *pProperties
16137777dab0Sopenharmony_ci	);
16147777dab0Sopenharmony_ci};
16157777dab0Sopenharmony_ci
16167777dab0Sopenharmony_ci/*---------------------------------------------------------------------------*/
16177777dab0Sopenharmony_ci/* Effects Send Interface                                                    */
16187777dab0Sopenharmony_ci/*---------------------------------------------------------------------------*/
16197777dab0Sopenharmony_ci
16207777dab0Sopenharmony_ci
16217777dab0Sopenharmony_ciextern const SLInterfaceID SL_IID_EFFECTSEND;
16227777dab0Sopenharmony_ci
16237777dab0Sopenharmony_cistruct SLEffectSendItf_;
16247777dab0Sopenharmony_citypedef const struct SLEffectSendItf_ * const * SLEffectSendItf;
16257777dab0Sopenharmony_ci
16267777dab0Sopenharmony_cistruct SLEffectSendItf_ {
16277777dab0Sopenharmony_ci	SLresult (*EnableEffectSend) (
16287777dab0Sopenharmony_ci		SLEffectSendItf self,
16297777dab0Sopenharmony_ci		const void *pAuxEffect,
16307777dab0Sopenharmony_ci		SLboolean enable,
16317777dab0Sopenharmony_ci		SLmillibel initialLevel
16327777dab0Sopenharmony_ci	);
16337777dab0Sopenharmony_ci	SLresult (*IsEnabled) (
16347777dab0Sopenharmony_ci		SLEffectSendItf self,
16357777dab0Sopenharmony_ci		const void * pAuxEffect,
16367777dab0Sopenharmony_ci		SLboolean *pEnable
16377777dab0Sopenharmony_ci	);
16387777dab0Sopenharmony_ci	SLresult (*SetDirectLevel) (
16397777dab0Sopenharmony_ci		SLEffectSendItf self,
16407777dab0Sopenharmony_ci		SLmillibel directLevel
16417777dab0Sopenharmony_ci	);
16427777dab0Sopenharmony_ci	SLresult (*GetDirectLevel) (
16437777dab0Sopenharmony_ci		SLEffectSendItf self,
16447777dab0Sopenharmony_ci		SLmillibel *pDirectLevel
16457777dab0Sopenharmony_ci	);
16467777dab0Sopenharmony_ci	SLresult (*SetSendLevel) (
16477777dab0Sopenharmony_ci		SLEffectSendItf self,
16487777dab0Sopenharmony_ci		const void *pAuxEffect,
16497777dab0Sopenharmony_ci		SLmillibel sendLevel
16507777dab0Sopenharmony_ci	);
16517777dab0Sopenharmony_ci	SLresult (*GetSendLevel)(
16527777dab0Sopenharmony_ci		SLEffectSendItf self,
16537777dab0Sopenharmony_ci		const void *pAuxEffect,
16547777dab0Sopenharmony_ci		SLmillibel *pSendLevel
16557777dab0Sopenharmony_ci	);
16567777dab0Sopenharmony_ci};
16577777dab0Sopenharmony_ci
16587777dab0Sopenharmony_ci
16597777dab0Sopenharmony_ci/*---------------------------------------------------------------------------*/
16607777dab0Sopenharmony_ci/* 3D Grouping Interface                                                     */
16617777dab0Sopenharmony_ci/*---------------------------------------------------------------------------*/
16627777dab0Sopenharmony_ci
16637777dab0Sopenharmony_ci
16647777dab0Sopenharmony_ciextern const SLInterfaceID SL_IID_3DGROUPING;
16657777dab0Sopenharmony_ci
16667777dab0Sopenharmony_ci
16677777dab0Sopenharmony_cistruct SL3DGroupingItf_ ;
16687777dab0Sopenharmony_citypedef const struct SL3DGroupingItf_ * const * SL3DGroupingItf;
16697777dab0Sopenharmony_ci
16707777dab0Sopenharmony_cistruct SL3DGroupingItf_ {
16717777dab0Sopenharmony_ci	SLresult (*Set3DGroup) (
16727777dab0Sopenharmony_ci		SL3DGroupingItf self,
16737777dab0Sopenharmony_ci		SLObjectItf group
16747777dab0Sopenharmony_ci	);
16757777dab0Sopenharmony_ci	SLresult (*Get3DGroup) (
16767777dab0Sopenharmony_ci		SL3DGroupingItf self,
16777777dab0Sopenharmony_ci		SLObjectItf *pGroup
16787777dab0Sopenharmony_ci	);
16797777dab0Sopenharmony_ci};
16807777dab0Sopenharmony_ci
16817777dab0Sopenharmony_ci
16827777dab0Sopenharmony_ci/*---------------------------------------------------------------------------*/
16837777dab0Sopenharmony_ci/* 3D Commit Interface                                                       */
16847777dab0Sopenharmony_ci/*---------------------------------------------------------------------------*/
16857777dab0Sopenharmony_ci
16867777dab0Sopenharmony_ci
16877777dab0Sopenharmony_ciextern const SLInterfaceID SL_IID_3DCOMMIT;
16887777dab0Sopenharmony_ci
16897777dab0Sopenharmony_cistruct SL3DCommitItf_;
16907777dab0Sopenharmony_citypedef const struct SL3DCommitItf_* const * SL3DCommitItf;
16917777dab0Sopenharmony_ci
16927777dab0Sopenharmony_cistruct SL3DCommitItf_ {
16937777dab0Sopenharmony_ci	SLresult (*Commit) (
16947777dab0Sopenharmony_ci		SL3DCommitItf self
16957777dab0Sopenharmony_ci	);
16967777dab0Sopenharmony_ci	SLresult (*SetDeferred) (
16977777dab0Sopenharmony_ci		SL3DCommitItf self,
16987777dab0Sopenharmony_ci		SLboolean deferred
16997777dab0Sopenharmony_ci	);
17007777dab0Sopenharmony_ci};
17017777dab0Sopenharmony_ci
17027777dab0Sopenharmony_ci
17037777dab0Sopenharmony_ci/*---------------------------------------------------------------------------*/
17047777dab0Sopenharmony_ci/* 3D Location Interface                                                     */
17057777dab0Sopenharmony_ci/*---------------------------------------------------------------------------*/
17067777dab0Sopenharmony_ci
17077777dab0Sopenharmony_citypedef struct SLVec3D_ {
17087777dab0Sopenharmony_ci	SLint32	x;
17097777dab0Sopenharmony_ci	SLint32	y;
17107777dab0Sopenharmony_ci	SLint32	z;
17117777dab0Sopenharmony_ci} SLVec3D;
17127777dab0Sopenharmony_ci
17137777dab0Sopenharmony_ciextern const SLInterfaceID SL_IID_3DLOCATION;
17147777dab0Sopenharmony_ci
17157777dab0Sopenharmony_cistruct SL3DLocationItf_;
17167777dab0Sopenharmony_citypedef const struct SL3DLocationItf_ * const * SL3DLocationItf;
17177777dab0Sopenharmony_ci
17187777dab0Sopenharmony_cistruct SL3DLocationItf_ {
17197777dab0Sopenharmony_ci	SLresult (*SetLocationCartesian) (
17207777dab0Sopenharmony_ci		SL3DLocationItf self,
17217777dab0Sopenharmony_ci		const SLVec3D *pLocation
17227777dab0Sopenharmony_ci	);
17237777dab0Sopenharmony_ci	SLresult (*SetLocationSpherical) (
17247777dab0Sopenharmony_ci		SL3DLocationItf self,
17257777dab0Sopenharmony_ci		SLmillidegree azimuth,
17267777dab0Sopenharmony_ci		SLmillidegree elevation,
17277777dab0Sopenharmony_ci		SLmillimeter distance
17287777dab0Sopenharmony_ci	);
17297777dab0Sopenharmony_ci	SLresult (*Move) (
17307777dab0Sopenharmony_ci		SL3DLocationItf self,
17317777dab0Sopenharmony_ci		const SLVec3D *pMovement
17327777dab0Sopenharmony_ci	);
17337777dab0Sopenharmony_ci	SLresult (*GetLocationCartesian) (
17347777dab0Sopenharmony_ci		SL3DLocationItf self,
17357777dab0Sopenharmony_ci		SLVec3D *pLocation
17367777dab0Sopenharmony_ci	);
17377777dab0Sopenharmony_ci	SLresult (*SetOrientationVectors) (
17387777dab0Sopenharmony_ci		SL3DLocationItf self,
17397777dab0Sopenharmony_ci		const SLVec3D *pFront,
17407777dab0Sopenharmony_ci		const SLVec3D *pAbove
17417777dab0Sopenharmony_ci	);
17427777dab0Sopenharmony_ci	SLresult (*SetOrientationAngles) (
17437777dab0Sopenharmony_ci		SL3DLocationItf self,
17447777dab0Sopenharmony_ci		SLmillidegree heading,
17457777dab0Sopenharmony_ci		SLmillidegree pitch,
17467777dab0Sopenharmony_ci		SLmillidegree roll
17477777dab0Sopenharmony_ci	);
17487777dab0Sopenharmony_ci	SLresult (*Rotate) (
17497777dab0Sopenharmony_ci		SL3DLocationItf self,
17507777dab0Sopenharmony_ci		SLmillidegree theta,
17517777dab0Sopenharmony_ci		const SLVec3D *pAxis
17527777dab0Sopenharmony_ci	);
17537777dab0Sopenharmony_ci	SLresult (*GetOrientationVectors) (
17547777dab0Sopenharmony_ci		SL3DLocationItf self,
17557777dab0Sopenharmony_ci		SLVec3D *pFront,
17567777dab0Sopenharmony_ci		SLVec3D *pUp
17577777dab0Sopenharmony_ci	);
17587777dab0Sopenharmony_ci};
17597777dab0Sopenharmony_ci
17607777dab0Sopenharmony_ci
17617777dab0Sopenharmony_ci/*---------------------------------------------------------------------------*/
17627777dab0Sopenharmony_ci/* 3D Doppler Interface                                                      */
17637777dab0Sopenharmony_ci/*---------------------------------------------------------------------------*/
17647777dab0Sopenharmony_ci
17657777dab0Sopenharmony_ci
17667777dab0Sopenharmony_ciextern const SLInterfaceID SL_IID_3DDOPPLER;
17677777dab0Sopenharmony_ci
17687777dab0Sopenharmony_cistruct SL3DDopplerItf_;
17697777dab0Sopenharmony_citypedef const struct SL3DDopplerItf_ * const * SL3DDopplerItf;
17707777dab0Sopenharmony_ci
17717777dab0Sopenharmony_cistruct SL3DDopplerItf_ {
17727777dab0Sopenharmony_ci	SLresult (*SetVelocityCartesian) (
17737777dab0Sopenharmony_ci		SL3DDopplerItf self,
17747777dab0Sopenharmony_ci		const SLVec3D *pVelocity
17757777dab0Sopenharmony_ci	);
17767777dab0Sopenharmony_ci	SLresult (*SetVelocitySpherical) (
17777777dab0Sopenharmony_ci		SL3DDopplerItf self,
17787777dab0Sopenharmony_ci		SLmillidegree azimuth,
17797777dab0Sopenharmony_ci		SLmillidegree elevation,
17807777dab0Sopenharmony_ci		SLmillimeter speed
17817777dab0Sopenharmony_ci	);
17827777dab0Sopenharmony_ci	SLresult (*GetVelocityCartesian) (
17837777dab0Sopenharmony_ci		SL3DDopplerItf self,
17847777dab0Sopenharmony_ci		SLVec3D *pVelocity
17857777dab0Sopenharmony_ci	);
17867777dab0Sopenharmony_ci	SLresult (*SetDopplerFactor) (
17877777dab0Sopenharmony_ci		SL3DDopplerItf self,
17887777dab0Sopenharmony_ci		SLpermille dopplerFactor
17897777dab0Sopenharmony_ci	);
17907777dab0Sopenharmony_ci	SLresult (*GetDopplerFactor) (
17917777dab0Sopenharmony_ci		SL3DDopplerItf self,
17927777dab0Sopenharmony_ci		SLpermille *pDopplerFactor
17937777dab0Sopenharmony_ci	);
17947777dab0Sopenharmony_ci};
17957777dab0Sopenharmony_ci
17967777dab0Sopenharmony_ci/*---------------------------------------------------------------------------*/
17977777dab0Sopenharmony_ci/* 3D Source Interface and associated defines                                */
17987777dab0Sopenharmony_ci/* --------------------------------------------------------------------------*/
17997777dab0Sopenharmony_ci
18007777dab0Sopenharmony_ci#define SL_ROLLOFFMODEL_EXPONENTIAL	((SLuint32) 0x00000000)
18017777dab0Sopenharmony_ci#define SL_ROLLOFFMODEL_LINEAR		((SLuint32) 0x00000001)
18027777dab0Sopenharmony_ci
18037777dab0Sopenharmony_ci
18047777dab0Sopenharmony_ciextern const SLInterfaceID SL_IID_3DSOURCE;
18057777dab0Sopenharmony_ci
18067777dab0Sopenharmony_cistruct SL3DSourceItf_;
18077777dab0Sopenharmony_citypedef const struct SL3DSourceItf_ * const * SL3DSourceItf;
18087777dab0Sopenharmony_ci
18097777dab0Sopenharmony_cistruct SL3DSourceItf_ {
18107777dab0Sopenharmony_ci	SLresult (*SetHeadRelative) (
18117777dab0Sopenharmony_ci		SL3DSourceItf self,
18127777dab0Sopenharmony_ci		SLboolean headRelative
18137777dab0Sopenharmony_ci	);
18147777dab0Sopenharmony_ci	SLresult (*GetHeadRelative) (
18157777dab0Sopenharmony_ci		SL3DSourceItf self,
18167777dab0Sopenharmony_ci		SLboolean *pHeadRelative
18177777dab0Sopenharmony_ci	);
18187777dab0Sopenharmony_ci	SLresult (*SetRolloffDistances) (
18197777dab0Sopenharmony_ci		SL3DSourceItf self,
18207777dab0Sopenharmony_ci		SLmillimeter minDistance,
18217777dab0Sopenharmony_ci		SLmillimeter maxDistance
18227777dab0Sopenharmony_ci	);
18237777dab0Sopenharmony_ci	SLresult (*GetRolloffDistances) (
18247777dab0Sopenharmony_ci		SL3DSourceItf self,
18257777dab0Sopenharmony_ci		SLmillimeter *pMinDistance,
18267777dab0Sopenharmony_ci		SLmillimeter *pMaxDistance
18277777dab0Sopenharmony_ci	);
18287777dab0Sopenharmony_ci	SLresult (*SetRolloffMaxDistanceMute) (
18297777dab0Sopenharmony_ci		SL3DSourceItf self,
18307777dab0Sopenharmony_ci		SLboolean mute
18317777dab0Sopenharmony_ci	);
18327777dab0Sopenharmony_ci	SLresult (*GetRolloffMaxDistanceMute) (
18337777dab0Sopenharmony_ci		SL3DSourceItf self,
18347777dab0Sopenharmony_ci		SLboolean *pMute
18357777dab0Sopenharmony_ci	);
18367777dab0Sopenharmony_ci	SLresult (*SetRolloffFactor) (
18377777dab0Sopenharmony_ci		SL3DSourceItf self,
18387777dab0Sopenharmony_ci		SLpermille rolloffFactor
18397777dab0Sopenharmony_ci	);
18407777dab0Sopenharmony_ci	SLresult (*GetRolloffFactor) (
18417777dab0Sopenharmony_ci		SL3DSourceItf self,
18427777dab0Sopenharmony_ci		SLpermille *pRolloffFactor
18437777dab0Sopenharmony_ci	);
18447777dab0Sopenharmony_ci	SLresult (*SetRoomRolloffFactor) (
18457777dab0Sopenharmony_ci		SL3DSourceItf self,
18467777dab0Sopenharmony_ci		SLpermille roomRolloffFactor
18477777dab0Sopenharmony_ci	);
18487777dab0Sopenharmony_ci	SLresult (*GetRoomRolloffFactor) (
18497777dab0Sopenharmony_ci		SL3DSourceItf self,
18507777dab0Sopenharmony_ci		SLpermille *pRoomRolloffFactor
18517777dab0Sopenharmony_ci	);
18527777dab0Sopenharmony_ci	SLresult (*SetRolloffModel) (
18537777dab0Sopenharmony_ci		SL3DSourceItf self,
18547777dab0Sopenharmony_ci		SLuint8 model
18557777dab0Sopenharmony_ci	);
18567777dab0Sopenharmony_ci	SLresult (*GetRolloffModel) (
18577777dab0Sopenharmony_ci		SL3DSourceItf self,
18587777dab0Sopenharmony_ci		SLuint8 *pModel
18597777dab0Sopenharmony_ci	);
18607777dab0Sopenharmony_ci	SLresult (*SetCone) (
18617777dab0Sopenharmony_ci		SL3DSourceItf self,
18627777dab0Sopenharmony_ci		SLmillidegree innerAngle,
18637777dab0Sopenharmony_ci		SLmillidegree outerAngle,
18647777dab0Sopenharmony_ci		SLmillibel outerLevel
18657777dab0Sopenharmony_ci	);
18667777dab0Sopenharmony_ci	SLresult (*GetCone) (
18677777dab0Sopenharmony_ci		SL3DSourceItf self,
18687777dab0Sopenharmony_ci		SLmillidegree *pInnerAngle,
18697777dab0Sopenharmony_ci		SLmillidegree *pOuterAngle,
18707777dab0Sopenharmony_ci		SLmillibel *pOuterLevel
18717777dab0Sopenharmony_ci	);
18727777dab0Sopenharmony_ci};
18737777dab0Sopenharmony_ci
18747777dab0Sopenharmony_ci/*---------------------------------------------------------------------------*/
18757777dab0Sopenharmony_ci/* 3D Macroscopic Interface                                                  */
18767777dab0Sopenharmony_ci/* --------------------------------------------------------------------------*/
18777777dab0Sopenharmony_ci
18787777dab0Sopenharmony_ciextern const SLInterfaceID SL_IID_3DMACROSCOPIC;
18797777dab0Sopenharmony_ci
18807777dab0Sopenharmony_cistruct SL3DMacroscopicItf_;
18817777dab0Sopenharmony_citypedef const struct SL3DMacroscopicItf_ * const * SL3DMacroscopicItf;
18827777dab0Sopenharmony_ci
18837777dab0Sopenharmony_cistruct SL3DMacroscopicItf_ {
18847777dab0Sopenharmony_ci	SLresult (*SetSize) (
18857777dab0Sopenharmony_ci		SL3DMacroscopicItf self,
18867777dab0Sopenharmony_ci		SLmillimeter width,
18877777dab0Sopenharmony_ci		SLmillimeter height,
18887777dab0Sopenharmony_ci		SLmillimeter depth
18897777dab0Sopenharmony_ci	);
18907777dab0Sopenharmony_ci	SLresult (*GetSize) (
18917777dab0Sopenharmony_ci		SL3DMacroscopicItf self,
18927777dab0Sopenharmony_ci		SLmillimeter *pWidth,
18937777dab0Sopenharmony_ci		SLmillimeter *pHeight,
18947777dab0Sopenharmony_ci		SLmillimeter *pDepth
18957777dab0Sopenharmony_ci	);
18967777dab0Sopenharmony_ci	SLresult (*SetOrientationAngles) (
18977777dab0Sopenharmony_ci		SL3DMacroscopicItf self,
18987777dab0Sopenharmony_ci		SLmillidegree heading,
18997777dab0Sopenharmony_ci		SLmillidegree pitch,
19007777dab0Sopenharmony_ci		SLmillidegree roll
19017777dab0Sopenharmony_ci	);
19027777dab0Sopenharmony_ci	SLresult (*SetOrientationVectors) (
19037777dab0Sopenharmony_ci		SL3DMacroscopicItf self,
19047777dab0Sopenharmony_ci		const SLVec3D *pFront,
19057777dab0Sopenharmony_ci		const SLVec3D *pAbove
19067777dab0Sopenharmony_ci	);
19077777dab0Sopenharmony_ci	SLresult (*Rotate) (
19087777dab0Sopenharmony_ci		SL3DMacroscopicItf self,
19097777dab0Sopenharmony_ci		SLmillidegree theta,
19107777dab0Sopenharmony_ci		const SLVec3D *pAxis
19117777dab0Sopenharmony_ci	);
19127777dab0Sopenharmony_ci	SLresult (*GetOrientationVectors) (
19137777dab0Sopenharmony_ci		SL3DMacroscopicItf self,
19147777dab0Sopenharmony_ci		SLVec3D *pFront,
19157777dab0Sopenharmony_ci		SLVec3D *pUp
19167777dab0Sopenharmony_ci	);
19177777dab0Sopenharmony_ci};
19187777dab0Sopenharmony_ci
19197777dab0Sopenharmony_ci/*---------------------------------------------------------------------------*/
19207777dab0Sopenharmony_ci/* Mute Solo Interface                                                       */
19217777dab0Sopenharmony_ci/* --------------------------------------------------------------------------*/
19227777dab0Sopenharmony_ci
19237777dab0Sopenharmony_ci
19247777dab0Sopenharmony_ciextern const SLInterfaceID SL_IID_MUTESOLO;
19257777dab0Sopenharmony_ci
19267777dab0Sopenharmony_cistruct SLMuteSoloItf_;
19277777dab0Sopenharmony_citypedef const struct SLMuteSoloItf_ * const * SLMuteSoloItf;
19287777dab0Sopenharmony_ci
19297777dab0Sopenharmony_cistruct SLMuteSoloItf_ {
19307777dab0Sopenharmony_ci	SLresult (*SetChannelMute) (
19317777dab0Sopenharmony_ci		SLMuteSoloItf self,
19327777dab0Sopenharmony_ci		SLuint8 chan,
19337777dab0Sopenharmony_ci		SLboolean mute
19347777dab0Sopenharmony_ci	);
19357777dab0Sopenharmony_ci	SLresult (*GetChannelMute) (
19367777dab0Sopenharmony_ci		SLMuteSoloItf self,
19377777dab0Sopenharmony_ci		SLuint8 chan,
19387777dab0Sopenharmony_ci		SLboolean *pMute
19397777dab0Sopenharmony_ci	);
19407777dab0Sopenharmony_ci	SLresult (*SetChannelSolo) (
19417777dab0Sopenharmony_ci		SLMuteSoloItf self,
19427777dab0Sopenharmony_ci		SLuint8 chan,
19437777dab0Sopenharmony_ci		SLboolean solo
19447777dab0Sopenharmony_ci	);
19457777dab0Sopenharmony_ci	SLresult (*GetChannelSolo) (
19467777dab0Sopenharmony_ci		SLMuteSoloItf self,
19477777dab0Sopenharmony_ci		SLuint8 chan,
19487777dab0Sopenharmony_ci		SLboolean *pSolo
19497777dab0Sopenharmony_ci	);
19507777dab0Sopenharmony_ci	SLresult (*GetNumChannels) (
19517777dab0Sopenharmony_ci		SLMuteSoloItf self,
19527777dab0Sopenharmony_ci		SLuint8 *pNumChannels
19537777dab0Sopenharmony_ci	);
19547777dab0Sopenharmony_ci};
19557777dab0Sopenharmony_ci
19567777dab0Sopenharmony_ci
19577777dab0Sopenharmony_ci/*---------------------------------------------------------------------------*/
19587777dab0Sopenharmony_ci/* Dynamic Interface Management Interface and associated types and macros    */
19597777dab0Sopenharmony_ci/* --------------------------------------------------------------------------*/
19607777dab0Sopenharmony_ci
19617777dab0Sopenharmony_ci#define SL_DYNAMIC_ITF_EVENT_RUNTIME_ERROR			((SLuint32) 0x00000001)
19627777dab0Sopenharmony_ci#define SL_DYNAMIC_ITF_EVENT_ASYNC_TERMINATION		((SLuint32) 0x00000002)
19637777dab0Sopenharmony_ci#define SL_DYNAMIC_ITF_EVENT_RESOURCES_LOST			((SLuint32) 0x00000003)
19647777dab0Sopenharmony_ci#define SL_DYNAMIC_ITF_EVENT_RESOURCES_LOST_PERMANENTLY	((SLuint32) 0x00000004)
19657777dab0Sopenharmony_ci#define SL_DYNAMIC_ITF_EVENT_RESOURCES_AVAILABLE		((SLuint32) 0x00000005)
19667777dab0Sopenharmony_ci
19677777dab0Sopenharmony_ci
19687777dab0Sopenharmony_ci
19697777dab0Sopenharmony_ci
19707777dab0Sopenharmony_ciextern const SLInterfaceID SL_IID_DYNAMICINTERFACEMANAGEMENT;
19717777dab0Sopenharmony_ci
19727777dab0Sopenharmony_cistruct SLDynamicInterfaceManagementItf_;
19737777dab0Sopenharmony_citypedef const struct SLDynamicInterfaceManagementItf_ * const * SLDynamicInterfaceManagementItf;
19747777dab0Sopenharmony_ci
19757777dab0Sopenharmony_citypedef void (SLAPIENTRY *slDynamicInterfaceManagementCallback) (
19767777dab0Sopenharmony_ci	SLDynamicInterfaceManagementItf caller,
19777777dab0Sopenharmony_ci	void * pContext,
19787777dab0Sopenharmony_ci	SLuint32 event,
19797777dab0Sopenharmony_ci	SLresult result,
19807777dab0Sopenharmony_ci    const SLInterfaceID iid
19817777dab0Sopenharmony_ci);
19827777dab0Sopenharmony_ci
19837777dab0Sopenharmony_ci
19847777dab0Sopenharmony_cistruct SLDynamicInterfaceManagementItf_ {
19857777dab0Sopenharmony_ci	SLresult (*AddInterface) (
19867777dab0Sopenharmony_ci		SLDynamicInterfaceManagementItf self,
19877777dab0Sopenharmony_ci		const SLInterfaceID iid,
19887777dab0Sopenharmony_ci		SLboolean async
19897777dab0Sopenharmony_ci	);
19907777dab0Sopenharmony_ci	SLresult (*RemoveInterface) (
19917777dab0Sopenharmony_ci		SLDynamicInterfaceManagementItf self,
19927777dab0Sopenharmony_ci		const SLInterfaceID iid
19937777dab0Sopenharmony_ci	);
19947777dab0Sopenharmony_ci	SLresult (*ResumeInterface) (
19957777dab0Sopenharmony_ci		SLDynamicInterfaceManagementItf self,
19967777dab0Sopenharmony_ci		const SLInterfaceID iid,
19977777dab0Sopenharmony_ci		SLboolean async
19987777dab0Sopenharmony_ci	);
19997777dab0Sopenharmony_ci	SLresult (*RegisterCallback) (
20007777dab0Sopenharmony_ci		SLDynamicInterfaceManagementItf self,
20017777dab0Sopenharmony_ci		slDynamicInterfaceManagementCallback callback,
20027777dab0Sopenharmony_ci		void * pContext
20037777dab0Sopenharmony_ci	);
20047777dab0Sopenharmony_ci};
20057777dab0Sopenharmony_ci
20067777dab0Sopenharmony_ci/*---------------------------------------------------------------------------*/
20077777dab0Sopenharmony_ci/* Midi Message Interface and associated types                               */
20087777dab0Sopenharmony_ci/* --------------------------------------------------------------------------*/
20097777dab0Sopenharmony_ci
20107777dab0Sopenharmony_ci#define SL_MIDIMESSAGETYPE_NOTE_ON_OFF		((SLuint32) 0x00000001)
20117777dab0Sopenharmony_ci#define SL_MIDIMESSAGETYPE_POLY_PRESSURE	((SLuint32) 0x00000002)
20127777dab0Sopenharmony_ci#define SL_MIDIMESSAGETYPE_CONTROL_CHANGE	((SLuint32) 0x00000003)
20137777dab0Sopenharmony_ci#define SL_MIDIMESSAGETYPE_PROGRAM_CHANGE	((SLuint32) 0x00000004)
20147777dab0Sopenharmony_ci#define SL_MIDIMESSAGETYPE_CHANNEL_PRESSURE	((SLuint32) 0x00000005)
20157777dab0Sopenharmony_ci#define SL_MIDIMESSAGETYPE_PITCH_BEND		((SLuint32) 0x00000006)
20167777dab0Sopenharmony_ci#define SL_MIDIMESSAGETYPE_SYSTEM_MESSAGE	((SLuint32) 0x00000007)
20177777dab0Sopenharmony_ci
20187777dab0Sopenharmony_ci
20197777dab0Sopenharmony_ciextern const SLInterfaceID SL_IID_MIDIMESSAGE;
20207777dab0Sopenharmony_ci
20217777dab0Sopenharmony_cistruct SLMIDIMessageItf_;
20227777dab0Sopenharmony_citypedef const struct SLMIDIMessageItf_ * const * SLMIDIMessageItf;
20237777dab0Sopenharmony_ci
20247777dab0Sopenharmony_citypedef void (SLAPIENTRY *slMetaEventCallback) (
20257777dab0Sopenharmony_ci	SLMIDIMessageItf caller,
20267777dab0Sopenharmony_ci	void *pContext,
20277777dab0Sopenharmony_ci	SLuint8 type,
20287777dab0Sopenharmony_ci    SLuint32 length,
20297777dab0Sopenharmony_ci	const SLuint8 *pData,
20307777dab0Sopenharmony_ci	SLuint32 tick,
20317777dab0Sopenharmony_ci	SLuint16 track
20327777dab0Sopenharmony_ci);
20337777dab0Sopenharmony_ci
20347777dab0Sopenharmony_citypedef void (SLAPIENTRY *slMIDIMessageCallback) (
20357777dab0Sopenharmony_ci	SLMIDIMessageItf caller,
20367777dab0Sopenharmony_ci	void *pContext,
20377777dab0Sopenharmony_ci	SLuint8 statusByte,
20387777dab0Sopenharmony_ci	SLuint32 length,
20397777dab0Sopenharmony_ci	const SLuint8 *pData,
20407777dab0Sopenharmony_ci	SLuint32 tick,
20417777dab0Sopenharmony_ci	SLuint16 track
20427777dab0Sopenharmony_ci);
20437777dab0Sopenharmony_ci
20447777dab0Sopenharmony_cistruct SLMIDIMessageItf_ {
20457777dab0Sopenharmony_ci	SLresult (*SendMessage) (
20467777dab0Sopenharmony_ci		SLMIDIMessageItf self,
20477777dab0Sopenharmony_ci		const SLuint8 *data,
20487777dab0Sopenharmony_ci		SLuint32 length
20497777dab0Sopenharmony_ci	);
20507777dab0Sopenharmony_ci	SLresult (*RegisterMetaEventCallback) (
20517777dab0Sopenharmony_ci		SLMIDIMessageItf self,
20527777dab0Sopenharmony_ci		slMetaEventCallback callback,
20537777dab0Sopenharmony_ci		void *pContext
20547777dab0Sopenharmony_ci	);
20557777dab0Sopenharmony_ci	SLresult (*RegisterMIDIMessageCallback) (
20567777dab0Sopenharmony_ci		SLMIDIMessageItf self,
20577777dab0Sopenharmony_ci		slMIDIMessageCallback callback,
20587777dab0Sopenharmony_ci		void *pContext
20597777dab0Sopenharmony_ci	);
20607777dab0Sopenharmony_ci	SLresult (*AddMIDIMessageCallbackFilter) (
20617777dab0Sopenharmony_ci		SLMIDIMessageItf self,
20627777dab0Sopenharmony_ci		SLuint32 messageType
20637777dab0Sopenharmony_ci	);
20647777dab0Sopenharmony_ci	SLresult (*ClearMIDIMessageCallbackFilter) (
20657777dab0Sopenharmony_ci		SLMIDIMessageItf self
20667777dab0Sopenharmony_ci	);
20677777dab0Sopenharmony_ci};
20687777dab0Sopenharmony_ci
20697777dab0Sopenharmony_ci
20707777dab0Sopenharmony_ci/*---------------------------------------------------------------------------*/
20717777dab0Sopenharmony_ci/* Midi Mute Solo interface                                                  */
20727777dab0Sopenharmony_ci/* --------------------------------------------------------------------------*/
20737777dab0Sopenharmony_ci
20747777dab0Sopenharmony_ci
20757777dab0Sopenharmony_ciextern const SLInterfaceID SL_IID_MIDIMUTESOLO;
20767777dab0Sopenharmony_ci
20777777dab0Sopenharmony_cistruct SLMIDIMuteSoloItf_;
20787777dab0Sopenharmony_citypedef const struct SLMIDIMuteSoloItf_ * const * SLMIDIMuteSoloItf;
20797777dab0Sopenharmony_ci
20807777dab0Sopenharmony_cistruct SLMIDIMuteSoloItf_ {
20817777dab0Sopenharmony_ci	SLresult (*SetChannelMute) (
20827777dab0Sopenharmony_ci		SLMIDIMuteSoloItf self,
20837777dab0Sopenharmony_ci		SLuint8 channel,
20847777dab0Sopenharmony_ci		SLboolean mute
20857777dab0Sopenharmony_ci	);
20867777dab0Sopenharmony_ci	SLresult (*GetChannelMute) (
20877777dab0Sopenharmony_ci		SLMIDIMuteSoloItf self,
20887777dab0Sopenharmony_ci		SLuint8 channel,
20897777dab0Sopenharmony_ci		SLboolean *pMute
20907777dab0Sopenharmony_ci	);
20917777dab0Sopenharmony_ci	SLresult (*SetChannelSolo) (
20927777dab0Sopenharmony_ci		SLMIDIMuteSoloItf self,
20937777dab0Sopenharmony_ci		SLuint8 channel,
20947777dab0Sopenharmony_ci		SLboolean solo
20957777dab0Sopenharmony_ci	);
20967777dab0Sopenharmony_ci	SLresult (*GetChannelSolo) (
20977777dab0Sopenharmony_ci		SLMIDIMuteSoloItf self,
20987777dab0Sopenharmony_ci		SLuint8 channel,
20997777dab0Sopenharmony_ci		SLboolean *pSolo
21007777dab0Sopenharmony_ci	);
21017777dab0Sopenharmony_ci	SLresult (*GetTrackCount) (
21027777dab0Sopenharmony_ci		SLMIDIMuteSoloItf self,
21037777dab0Sopenharmony_ci		SLuint16 *pCount
21047777dab0Sopenharmony_ci	);
21057777dab0Sopenharmony_ci	SLresult (*SetTrackMute) (
21067777dab0Sopenharmony_ci		SLMIDIMuteSoloItf self,
21077777dab0Sopenharmony_ci		SLuint16 track,
21087777dab0Sopenharmony_ci		SLboolean mute
21097777dab0Sopenharmony_ci	);
21107777dab0Sopenharmony_ci	SLresult (*GetTrackMute) (
21117777dab0Sopenharmony_ci		SLMIDIMuteSoloItf self,
21127777dab0Sopenharmony_ci		SLuint16 track,
21137777dab0Sopenharmony_ci		SLboolean *pMute
21147777dab0Sopenharmony_ci	);
21157777dab0Sopenharmony_ci	SLresult (*SetTrackSolo) (
21167777dab0Sopenharmony_ci		SLMIDIMuteSoloItf self,
21177777dab0Sopenharmony_ci		SLuint16 track,
21187777dab0Sopenharmony_ci		SLboolean solo
21197777dab0Sopenharmony_ci	);
21207777dab0Sopenharmony_ci	SLresult (*GetTrackSolo) (
21217777dab0Sopenharmony_ci		SLMIDIMuteSoloItf self,
21227777dab0Sopenharmony_ci		SLuint16 track,
21237777dab0Sopenharmony_ci		SLboolean *pSolo
21247777dab0Sopenharmony_ci	);
21257777dab0Sopenharmony_ci};
21267777dab0Sopenharmony_ci
21277777dab0Sopenharmony_ci
21287777dab0Sopenharmony_ci/*---------------------------------------------------------------------------*/
21297777dab0Sopenharmony_ci/* Midi Tempo interface                                                      */
21307777dab0Sopenharmony_ci/* --------------------------------------------------------------------------*/
21317777dab0Sopenharmony_ci
21327777dab0Sopenharmony_ci
21337777dab0Sopenharmony_ciextern const SLInterfaceID SL_IID_MIDITEMPO;
21347777dab0Sopenharmony_ci
21357777dab0Sopenharmony_cistruct SLMIDITempoItf_;
21367777dab0Sopenharmony_citypedef const struct SLMIDITempoItf_ * const * SLMIDITempoItf;
21377777dab0Sopenharmony_ci
21387777dab0Sopenharmony_cistruct SLMIDITempoItf_ {
21397777dab0Sopenharmony_ci	SLresult (*SetTicksPerQuarterNote) (
21407777dab0Sopenharmony_ci		SLMIDITempoItf self,
21417777dab0Sopenharmony_ci		SLuint32 tpqn
21427777dab0Sopenharmony_ci	);
21437777dab0Sopenharmony_ci	SLresult (*GetTicksPerQuarterNote) (
21447777dab0Sopenharmony_ci		SLMIDITempoItf self,
21457777dab0Sopenharmony_ci		SLuint32 *pTpqn
21467777dab0Sopenharmony_ci	);
21477777dab0Sopenharmony_ci	SLresult (*SetMicrosecondsPerQuarterNote) (
21487777dab0Sopenharmony_ci		SLMIDITempoItf self,
21497777dab0Sopenharmony_ci		SLmicrosecond uspqn
21507777dab0Sopenharmony_ci	);
21517777dab0Sopenharmony_ci	SLresult (*GetMicrosecondsPerQuarterNote) (
21527777dab0Sopenharmony_ci		SLMIDITempoItf self,
21537777dab0Sopenharmony_ci		SLmicrosecond *uspqn
21547777dab0Sopenharmony_ci	);
21557777dab0Sopenharmony_ci};
21567777dab0Sopenharmony_ci
21577777dab0Sopenharmony_ci
21587777dab0Sopenharmony_ci/*---------------------------------------------------------------------------*/
21597777dab0Sopenharmony_ci/* Midi Time interface                                                       */
21607777dab0Sopenharmony_ci/* --------------------------------------------------------------------------*/
21617777dab0Sopenharmony_ci
21627777dab0Sopenharmony_ci
21637777dab0Sopenharmony_ciextern const SLInterfaceID SL_IID_MIDITIME;
21647777dab0Sopenharmony_ci
21657777dab0Sopenharmony_cistruct SLMIDITimeItf_;
21667777dab0Sopenharmony_citypedef const struct SLMIDITimeItf_ * const * SLMIDITimeItf;
21677777dab0Sopenharmony_ci
21687777dab0Sopenharmony_cistruct SLMIDITimeItf_ {
21697777dab0Sopenharmony_ci	SLresult (*GetDuration) (
21707777dab0Sopenharmony_ci		SLMIDITimeItf self,
21717777dab0Sopenharmony_ci		SLuint32 *pDuration
21727777dab0Sopenharmony_ci	);
21737777dab0Sopenharmony_ci	SLresult (*SetPosition) (
21747777dab0Sopenharmony_ci		SLMIDITimeItf self,
21757777dab0Sopenharmony_ci		SLuint32 position
21767777dab0Sopenharmony_ci	);
21777777dab0Sopenharmony_ci	SLresult (*GetPosition) (
21787777dab0Sopenharmony_ci		SLMIDITimeItf self,
21797777dab0Sopenharmony_ci		SLuint32 *pPosition
21807777dab0Sopenharmony_ci	);
21817777dab0Sopenharmony_ci	SLresult (*SetLoopPoints) (
21827777dab0Sopenharmony_ci		SLMIDITimeItf self,
21837777dab0Sopenharmony_ci		SLuint32 startTick,
21847777dab0Sopenharmony_ci		SLuint32 numTicks
21857777dab0Sopenharmony_ci	);
21867777dab0Sopenharmony_ci	SLresult (*GetLoopPoints) (
21877777dab0Sopenharmony_ci		SLMIDITimeItf self,
21887777dab0Sopenharmony_ci		SLuint32 *pStartTick,
21897777dab0Sopenharmony_ci		SLuint32 *pNumTicks
21907777dab0Sopenharmony_ci	);
21917777dab0Sopenharmony_ci};
21927777dab0Sopenharmony_ci
21937777dab0Sopenharmony_ci
21947777dab0Sopenharmony_ci/*---------------------------------------------------------------------------*/
21957777dab0Sopenharmony_ci/* Audio Decoder Capabilities Interface                                      */
21967777dab0Sopenharmony_ci/* --------------------------------------------------------------------------*/
21977777dab0Sopenharmony_ci
21987777dab0Sopenharmony_ci/*Audio Codec related defines*/
21997777dab0Sopenharmony_ci
22007777dab0Sopenharmony_ci#define SL_RATECONTROLMODE_CONSTANTBITRATE	((SLuint32) 0x00000001)
22017777dab0Sopenharmony_ci#define SL_RATECONTROLMODE_VARIABLEBITRATE	((SLuint32) 0x00000002)
22027777dab0Sopenharmony_ci
22037777dab0Sopenharmony_ci#define SL_AUDIOCODEC_PCM         ((SLuint32) 0x00000001)
22047777dab0Sopenharmony_ci#define SL_AUDIOCODEC_MP3         ((SLuint32) 0x00000002)
22057777dab0Sopenharmony_ci#define SL_AUDIOCODEC_AMR         ((SLuint32) 0x00000003)
22067777dab0Sopenharmony_ci#define SL_AUDIOCODEC_AMRWB       ((SLuint32) 0x00000004)
22077777dab0Sopenharmony_ci#define SL_AUDIOCODEC_AMRWBPLUS   ((SLuint32) 0x00000005)
22087777dab0Sopenharmony_ci#define SL_AUDIOCODEC_AAC         ((SLuint32) 0x00000006)
22097777dab0Sopenharmony_ci#define SL_AUDIOCODEC_WMA         ((SLuint32) 0x00000007)
22107777dab0Sopenharmony_ci#define SL_AUDIOCODEC_REAL        ((SLuint32) 0x00000008)
22117777dab0Sopenharmony_ci
22127777dab0Sopenharmony_ci#define SL_AUDIOPROFILE_PCM                   ((SLuint32) 0x00000001)
22137777dab0Sopenharmony_ci
22147777dab0Sopenharmony_ci#define SL_AUDIOPROFILE_MPEG1_L3              ((SLuint32) 0x00000001)
22157777dab0Sopenharmony_ci#define SL_AUDIOPROFILE_MPEG2_L3              ((SLuint32) 0x00000002)
22167777dab0Sopenharmony_ci#define SL_AUDIOPROFILE_MPEG25_L3             ((SLuint32) 0x00000003)
22177777dab0Sopenharmony_ci
22187777dab0Sopenharmony_ci#define SL_AUDIOCHANMODE_MP3_MONO             ((SLuint32) 0x00000001)
22197777dab0Sopenharmony_ci#define SL_AUDIOCHANMODE_MP3_STEREO           ((SLuint32) 0x00000002)
22207777dab0Sopenharmony_ci#define SL_AUDIOCHANMODE_MP3_JOINTSTEREO      ((SLuint32) 0x00000003)
22217777dab0Sopenharmony_ci#define SL_AUDIOCHANMODE_MP3_DUAL             ((SLuint32) 0x00000004)
22227777dab0Sopenharmony_ci
22237777dab0Sopenharmony_ci#define SL_AUDIOPROFILE_AMR			((SLuint32) 0x00000001)
22247777dab0Sopenharmony_ci
22257777dab0Sopenharmony_ci#define SL_AUDIOSTREAMFORMAT_CONFORMANCE	((SLuint32) 0x00000001)
22267777dab0Sopenharmony_ci#define SL_AUDIOSTREAMFORMAT_IF1			((SLuint32) 0x00000002)
22277777dab0Sopenharmony_ci#define SL_AUDIOSTREAMFORMAT_IF2			((SLuint32) 0x00000003)
22287777dab0Sopenharmony_ci#define SL_AUDIOSTREAMFORMAT_FSF			((SLuint32) 0x00000004)
22297777dab0Sopenharmony_ci#define SL_AUDIOSTREAMFORMAT_RTPPAYLOAD	((SLuint32) 0x00000005)
22307777dab0Sopenharmony_ci#define SL_AUDIOSTREAMFORMAT_ITU			((SLuint32) 0x00000006)
22317777dab0Sopenharmony_ci
22327777dab0Sopenharmony_ci#define SL_AUDIOPROFILE_AMRWB			((SLuint32) 0x00000001)
22337777dab0Sopenharmony_ci
22347777dab0Sopenharmony_ci#define SL_AUDIOPROFILE_AMRWBPLUS		((SLuint32) 0x00000001)
22357777dab0Sopenharmony_ci
22367777dab0Sopenharmony_ci#define SL_AUDIOPROFILE_AAC_AAC			((SLuint32) 0x00000001)
22377777dab0Sopenharmony_ci
22387777dab0Sopenharmony_ci#define SL_AUDIOMODE_AAC_MAIN			((SLuint32) 0x00000001)
22397777dab0Sopenharmony_ci#define SL_AUDIOMODE_AAC_LC			((SLuint32) 0x00000002)
22407777dab0Sopenharmony_ci#define SL_AUDIOMODE_AAC_SSR			((SLuint32) 0x00000003)
22417777dab0Sopenharmony_ci#define SL_AUDIOMODE_AAC_LTP			((SLuint32) 0x00000004)
22427777dab0Sopenharmony_ci#define SL_AUDIOMODE_AAC_HE			((SLuint32) 0x00000005)
22437777dab0Sopenharmony_ci#define SL_AUDIOMODE_AAC_SCALABLE		((SLuint32) 0x00000006)
22447777dab0Sopenharmony_ci#define SL_AUDIOMODE_AAC_ERLC			((SLuint32) 0x00000007)
22457777dab0Sopenharmony_ci#define SL_AUDIOMODE_AAC_LD			((SLuint32) 0x00000008)
22467777dab0Sopenharmony_ci#define SL_AUDIOMODE_AAC_HE_PS			((SLuint32) 0x00000009)
22477777dab0Sopenharmony_ci#define SL_AUDIOMODE_AAC_HE_MPS			((SLuint32) 0x0000000A)
22487777dab0Sopenharmony_ci
22497777dab0Sopenharmony_ci#define SL_AUDIOSTREAMFORMAT_MP2ADTS		((SLuint32) 0x00000001)
22507777dab0Sopenharmony_ci#define SL_AUDIOSTREAMFORMAT_MP4ADTS		((SLuint32) 0x00000002)
22517777dab0Sopenharmony_ci#define SL_AUDIOSTREAMFORMAT_MP4LOAS		((SLuint32) 0x00000003)
22527777dab0Sopenharmony_ci#define SL_AUDIOSTREAMFORMAT_MP4LATM		((SLuint32) 0x00000004)
22537777dab0Sopenharmony_ci#define SL_AUDIOSTREAMFORMAT_ADIF		((SLuint32) 0x00000005)
22547777dab0Sopenharmony_ci#define SL_AUDIOSTREAMFORMAT_MP4FF		((SLuint32) 0x00000006)
22557777dab0Sopenharmony_ci#define SL_AUDIOSTREAMFORMAT_RAW			((SLuint32) 0x00000007)
22567777dab0Sopenharmony_ci
22577777dab0Sopenharmony_ci#define SL_AUDIOPROFILE_WMA7		((SLuint32) 0x00000001)
22587777dab0Sopenharmony_ci#define SL_AUDIOPROFILE_WMA8		((SLuint32) 0x00000002)
22597777dab0Sopenharmony_ci#define SL_AUDIOPROFILE_WMA9		((SLuint32) 0x00000003)
22607777dab0Sopenharmony_ci#define SL_AUDIOPROFILE_WMA10		((SLuint32) 0x00000004)
22617777dab0Sopenharmony_ci
22627777dab0Sopenharmony_ci#define SL_AUDIOMODE_WMA_LEVEL1		((SLuint32) 0x00000001)
22637777dab0Sopenharmony_ci#define SL_AUDIOMODE_WMA_LEVEL2		((SLuint32) 0x00000002)
22647777dab0Sopenharmony_ci#define SL_AUDIOMODE_WMA_LEVEL3		((SLuint32) 0x00000003)
22657777dab0Sopenharmony_ci#define SL_AUDIOMODE_WMA_LEVEL4		((SLuint32) 0x00000004)
22667777dab0Sopenharmony_ci#define SL_AUDIOMODE_WMAPRO_LEVELM0	((SLuint32) 0x00000005)
22677777dab0Sopenharmony_ci#define SL_AUDIOMODE_WMAPRO_LEVELM1	((SLuint32) 0x00000006)
22687777dab0Sopenharmony_ci#define SL_AUDIOMODE_WMAPRO_LEVELM2	((SLuint32) 0x00000007)
22697777dab0Sopenharmony_ci#define SL_AUDIOMODE_WMAPRO_LEVELM3	((SLuint32) 0x00000008)
22707777dab0Sopenharmony_ci
22717777dab0Sopenharmony_ci#define SL_AUDIOPROFILE_REALAUDIO		((SLuint32) 0x00000001)
22727777dab0Sopenharmony_ci
22737777dab0Sopenharmony_ci#define SL_AUDIOMODE_REALAUDIO_G2		((SLuint32) 0x00000001)
22747777dab0Sopenharmony_ci#define SL_AUDIOMODE_REALAUDIO_8			((SLuint32) 0x00000002)
22757777dab0Sopenharmony_ci#define SL_AUDIOMODE_REALAUDIO_10		((SLuint32) 0x00000003)
22767777dab0Sopenharmony_ci#define SL_AUDIOMODE_REALAUDIO_SURROUND	((SLuint32) 0x00000004)
22777777dab0Sopenharmony_ci
22787777dab0Sopenharmony_citypedef struct SLAudioCodecDescriptor_ {
22797777dab0Sopenharmony_ci    SLuint32      maxChannels;
22807777dab0Sopenharmony_ci    SLuint32      minBitsPerSample;
22817777dab0Sopenharmony_ci    SLuint32      maxBitsPerSample;
22827777dab0Sopenharmony_ci    SLmilliHertz  minSampleRate;
22837777dab0Sopenharmony_ci    SLmilliHertz  maxSampleRate;
22847777dab0Sopenharmony_ci    SLboolean     isFreqRangeContinuous;
22857777dab0Sopenharmony_ci    SLmilliHertz *pSampleRatesSupported;
22867777dab0Sopenharmony_ci    SLuint32      numSampleRatesSupported;
22877777dab0Sopenharmony_ci    SLuint32      minBitRate;
22887777dab0Sopenharmony_ci    SLuint32      maxBitRate;
22897777dab0Sopenharmony_ci    SLboolean     isBitrateRangeContinuous;
22907777dab0Sopenharmony_ci    SLuint32     *pBitratesSupported;
22917777dab0Sopenharmony_ci    SLuint32      numBitratesSupported;
22927777dab0Sopenharmony_ci    SLuint32	  profileSetting;
22937777dab0Sopenharmony_ci    SLuint32      modeSetting;
22947777dab0Sopenharmony_ci} SLAudioCodecDescriptor;
22957777dab0Sopenharmony_ci
22967777dab0Sopenharmony_ci/*Structure used to retrieve the profile and level settings supported by an audio encoder */
22977777dab0Sopenharmony_ci
22987777dab0Sopenharmony_citypedef struct SLAudioCodecProfileMode_ {
22997777dab0Sopenharmony_ci    SLuint32 profileSetting;
23007777dab0Sopenharmony_ci    SLuint32 modeSetting;
23017777dab0Sopenharmony_ci} SLAudioCodecProfileMode;
23027777dab0Sopenharmony_ci
23037777dab0Sopenharmony_ciextern const SLInterfaceID SL_IID_AUDIODECODERCAPABILITIES;
23047777dab0Sopenharmony_ci
23057777dab0Sopenharmony_cistruct SLAudioDecoderCapabilitiesItf_;
23067777dab0Sopenharmony_citypedef const struct SLAudioDecoderCapabilitiesItf_ * const * SLAudioDecoderCapabilitiesItf;
23077777dab0Sopenharmony_ci
23087777dab0Sopenharmony_cistruct SLAudioDecoderCapabilitiesItf_ {
23097777dab0Sopenharmony_ci    SLresult (*GetAudioDecoders) (
23107777dab0Sopenharmony_ci        SLAudioDecoderCapabilitiesItf self,
23117777dab0Sopenharmony_ci        SLuint32 * pNumDecoders ,
23127777dab0Sopenharmony_ci        SLuint32 *pDecoderIds
23137777dab0Sopenharmony_ci    );
23147777dab0Sopenharmony_ci    SLresult (*GetAudioDecoderCapabilities) (
23157777dab0Sopenharmony_ci        SLAudioDecoderCapabilitiesItf self,
23167777dab0Sopenharmony_ci        SLuint32 decoderId,
23177777dab0Sopenharmony_ci        SLuint32 *pIndex,
23187777dab0Sopenharmony_ci        SLAudioCodecDescriptor *pDescriptor
23197777dab0Sopenharmony_ci    );
23207777dab0Sopenharmony_ci};
23217777dab0Sopenharmony_ci
23227777dab0Sopenharmony_ci
23237777dab0Sopenharmony_ci
23247777dab0Sopenharmony_ci
23257777dab0Sopenharmony_ci/*---------------------------------------------------------------------------*/
23267777dab0Sopenharmony_ci/* Audio Encoder Capabilities Interface                                      */
23277777dab0Sopenharmony_ci/* --------------------------------------------------------------------------*/
23287777dab0Sopenharmony_ci
23297777dab0Sopenharmony_ci/* Structure used when setting audio encoding parameters */
23307777dab0Sopenharmony_ci
23317777dab0Sopenharmony_citypedef struct SLAudioEncoderSettings_ {
23327777dab0Sopenharmony_ci    SLuint32 encoderId;
23337777dab0Sopenharmony_ci    SLuint32 channelsIn;
23347777dab0Sopenharmony_ci    SLuint32 channelsOut;
23357777dab0Sopenharmony_ci    SLmilliHertz sampleRate;
23367777dab0Sopenharmony_ci    SLuint32 bitRate;
23377777dab0Sopenharmony_ci    SLuint32 bitsPerSample;
23387777dab0Sopenharmony_ci    SLuint32 rateControl;
23397777dab0Sopenharmony_ci    SLuint32 profileSetting;
23407777dab0Sopenharmony_ci    SLuint32 levelSetting;
23417777dab0Sopenharmony_ci    SLuint32 channelMode;
23427777dab0Sopenharmony_ci    SLuint32 streamFormat;
23437777dab0Sopenharmony_ci    SLuint32 encodeOptions;
23447777dab0Sopenharmony_ci    SLuint32 blockAlignment;
23457777dab0Sopenharmony_ci} SLAudioEncoderSettings;
23467777dab0Sopenharmony_ci
23477777dab0Sopenharmony_ciextern const SLInterfaceID SL_IID_AUDIOENCODERCAPABILITIES;
23487777dab0Sopenharmony_ci
23497777dab0Sopenharmony_cistruct SLAudioEncoderCapabilitiesItf_;
23507777dab0Sopenharmony_citypedef const struct SLAudioEncoderCapabilitiesItf_ * const * SLAudioEncoderCapabilitiesItf;
23517777dab0Sopenharmony_ci
23527777dab0Sopenharmony_cistruct SLAudioEncoderCapabilitiesItf_ {
23537777dab0Sopenharmony_ci    SLresult (*GetAudioEncoders) (
23547777dab0Sopenharmony_ci        SLAudioEncoderCapabilitiesItf self,
23557777dab0Sopenharmony_ci        SLuint32 *pNumEncoders ,
23567777dab0Sopenharmony_ci        SLuint32 *pEncoderIds
23577777dab0Sopenharmony_ci    );
23587777dab0Sopenharmony_ci    SLresult (*GetAudioEncoderCapabilities) (
23597777dab0Sopenharmony_ci        SLAudioEncoderCapabilitiesItf self,
23607777dab0Sopenharmony_ci        SLuint32 encoderId,
23617777dab0Sopenharmony_ci        SLuint32 *pIndex,
23627777dab0Sopenharmony_ci        SLAudioCodecDescriptor * pDescriptor
23637777dab0Sopenharmony_ci    );
23647777dab0Sopenharmony_ci};
23657777dab0Sopenharmony_ci
23667777dab0Sopenharmony_ci
23677777dab0Sopenharmony_ci/*---------------------------------------------------------------------------*/
23687777dab0Sopenharmony_ci/* Audio Encoder Interface                                                   */
23697777dab0Sopenharmony_ci/* --------------------------------------------------------------------------*/
23707777dab0Sopenharmony_ci
23717777dab0Sopenharmony_ci
23727777dab0Sopenharmony_ciextern const SLInterfaceID SL_IID_AUDIOENCODER;
23737777dab0Sopenharmony_ci
23747777dab0Sopenharmony_cistruct SLAudioEncoderItf_;
23757777dab0Sopenharmony_citypedef const struct SLAudioEncoderItf_ * const * SLAudioEncoderItf;
23767777dab0Sopenharmony_ci
23777777dab0Sopenharmony_cistruct SLAudioEncoderItf_ {
23787777dab0Sopenharmony_ci    SLresult (*SetEncoderSettings) (
23797777dab0Sopenharmony_ci        SLAudioEncoderItf		self,
23807777dab0Sopenharmony_ci        SLAudioEncoderSettings 	*pSettings
23817777dab0Sopenharmony_ci    );
23827777dab0Sopenharmony_ci    SLresult (*GetEncoderSettings) (
23837777dab0Sopenharmony_ci        SLAudioEncoderItf		self,
23847777dab0Sopenharmony_ci        SLAudioEncoderSettings	*pSettings
23857777dab0Sopenharmony_ci    );
23867777dab0Sopenharmony_ci};
23877777dab0Sopenharmony_ci
23887777dab0Sopenharmony_ci
23897777dab0Sopenharmony_ci/*---------------------------------------------------------------------------*/
23907777dab0Sopenharmony_ci/* Bass Boost Interface                                                      */
23917777dab0Sopenharmony_ci/* --------------------------------------------------------------------------*/
23927777dab0Sopenharmony_ci
23937777dab0Sopenharmony_ci
23947777dab0Sopenharmony_ciextern const SLInterfaceID SL_IID_BASSBOOST;
23957777dab0Sopenharmony_ci
23967777dab0Sopenharmony_cistruct SLBassBoostItf_;
23977777dab0Sopenharmony_citypedef const struct SLBassBoostItf_ * const * SLBassBoostItf;
23987777dab0Sopenharmony_ci
23997777dab0Sopenharmony_cistruct SLBassBoostItf_ {
24007777dab0Sopenharmony_ci	SLresult (*SetEnabled)(
24017777dab0Sopenharmony_ci		SLBassBoostItf self,
24027777dab0Sopenharmony_ci		SLboolean enabled
24037777dab0Sopenharmony_ci	);
24047777dab0Sopenharmony_ci	SLresult (*IsEnabled)(
24057777dab0Sopenharmony_ci		SLBassBoostItf self,
24067777dab0Sopenharmony_ci		SLboolean *pEnabled
24077777dab0Sopenharmony_ci	);
24087777dab0Sopenharmony_ci	SLresult (*SetStrength)(
24097777dab0Sopenharmony_ci		SLBassBoostItf self,
24107777dab0Sopenharmony_ci		SLpermille strength
24117777dab0Sopenharmony_ci	);
24127777dab0Sopenharmony_ci	SLresult (*GetRoundedStrength)(
24137777dab0Sopenharmony_ci		SLBassBoostItf self,
24147777dab0Sopenharmony_ci		SLpermille *pStrength
24157777dab0Sopenharmony_ci	);
24167777dab0Sopenharmony_ci	SLresult (*IsStrengthSupported)(
24177777dab0Sopenharmony_ci		SLBassBoostItf self,
24187777dab0Sopenharmony_ci		SLboolean *pSupported
24197777dab0Sopenharmony_ci	);
24207777dab0Sopenharmony_ci};
24217777dab0Sopenharmony_ci
24227777dab0Sopenharmony_ci/*---------------------------------------------------------------------------*/
24237777dab0Sopenharmony_ci/* Pitch Interface                                                           */
24247777dab0Sopenharmony_ci/* --------------------------------------------------------------------------*/
24257777dab0Sopenharmony_ci
24267777dab0Sopenharmony_ci
24277777dab0Sopenharmony_ciextern const SLInterfaceID SL_IID_PITCH;
24287777dab0Sopenharmony_ci
24297777dab0Sopenharmony_cistruct SLPitchItf_;
24307777dab0Sopenharmony_citypedef const struct SLPitchItf_ * const * SLPitchItf;
24317777dab0Sopenharmony_ci
24327777dab0Sopenharmony_cistruct SLPitchItf_ {
24337777dab0Sopenharmony_ci	SLresult (*SetPitch) (
24347777dab0Sopenharmony_ci		SLPitchItf self,
24357777dab0Sopenharmony_ci		SLpermille pitch
24367777dab0Sopenharmony_ci	);
24377777dab0Sopenharmony_ci	SLresult (*GetPitch) (
24387777dab0Sopenharmony_ci		SLPitchItf self,
24397777dab0Sopenharmony_ci		SLpermille *pPitch
24407777dab0Sopenharmony_ci	);
24417777dab0Sopenharmony_ci	SLresult (*GetPitchCapabilities) (
24427777dab0Sopenharmony_ci		SLPitchItf self,
24437777dab0Sopenharmony_ci		SLpermille *pMinPitch,
24447777dab0Sopenharmony_ci		SLpermille *pMaxPitch
24457777dab0Sopenharmony_ci	);
24467777dab0Sopenharmony_ci};
24477777dab0Sopenharmony_ci
24487777dab0Sopenharmony_ci
24497777dab0Sopenharmony_ci/*---------------------------------------------------------------------------*/
24507777dab0Sopenharmony_ci/* Rate Pitch Interface                                                      */
24517777dab0Sopenharmony_ci/* RatePitchItf is an interface for controlling the rate a sound is played   */
24527777dab0Sopenharmony_ci/* back. A change in rate will cause a change in pitch.                      */
24537777dab0Sopenharmony_ci/* --------------------------------------------------------------------------*/
24547777dab0Sopenharmony_ci
24557777dab0Sopenharmony_ci
24567777dab0Sopenharmony_ciextern const SLInterfaceID SL_IID_RATEPITCH;
24577777dab0Sopenharmony_ci
24587777dab0Sopenharmony_cistruct SLRatePitchItf_;
24597777dab0Sopenharmony_citypedef const struct SLRatePitchItf_ * const * SLRatePitchItf;
24607777dab0Sopenharmony_ci
24617777dab0Sopenharmony_cistruct SLRatePitchItf_ {
24627777dab0Sopenharmony_ci	SLresult (*SetRate) (
24637777dab0Sopenharmony_ci		SLRatePitchItf self,
24647777dab0Sopenharmony_ci		SLpermille rate
24657777dab0Sopenharmony_ci	);
24667777dab0Sopenharmony_ci	SLresult (*GetRate) (
24677777dab0Sopenharmony_ci		SLRatePitchItf self,
24687777dab0Sopenharmony_ci		SLpermille *pRate
24697777dab0Sopenharmony_ci	);
24707777dab0Sopenharmony_ci	SLresult (*GetRatePitchCapabilities) (
24717777dab0Sopenharmony_ci		SLRatePitchItf self,
24727777dab0Sopenharmony_ci		SLpermille *pMinRate,
24737777dab0Sopenharmony_ci		SLpermille *pMaxRate
24747777dab0Sopenharmony_ci	);
24757777dab0Sopenharmony_ci};
24767777dab0Sopenharmony_ci
24777777dab0Sopenharmony_ci
24787777dab0Sopenharmony_ci/*---------------------------------------------------------------------------*/
24797777dab0Sopenharmony_ci/* Virtualizer Interface                                                      */
24807777dab0Sopenharmony_ci/* --------------------------------------------------------------------------*/
24817777dab0Sopenharmony_ci
24827777dab0Sopenharmony_ci
24837777dab0Sopenharmony_ciextern const SLInterfaceID SL_IID_VIRTUALIZER;
24847777dab0Sopenharmony_ci
24857777dab0Sopenharmony_cistruct SLVirtualizerItf_;
24867777dab0Sopenharmony_citypedef const struct SLVirtualizerItf_ * const * SLVirtualizerItf;
24877777dab0Sopenharmony_ci
24887777dab0Sopenharmony_cistruct SLVirtualizerItf_ {
24897777dab0Sopenharmony_ci	SLresult (*SetEnabled)(
24907777dab0Sopenharmony_ci		SLVirtualizerItf self,
24917777dab0Sopenharmony_ci		SLboolean enabled
24927777dab0Sopenharmony_ci	);
24937777dab0Sopenharmony_ci	SLresult (*IsEnabled)(
24947777dab0Sopenharmony_ci		SLVirtualizerItf self,
24957777dab0Sopenharmony_ci		SLboolean *pEnabled
24967777dab0Sopenharmony_ci	);
24977777dab0Sopenharmony_ci	SLresult (*SetStrength)(
24987777dab0Sopenharmony_ci		SLVirtualizerItf self,
24997777dab0Sopenharmony_ci		SLpermille strength
25007777dab0Sopenharmony_ci	);
25017777dab0Sopenharmony_ci	SLresult (*GetRoundedStrength)(
25027777dab0Sopenharmony_ci		SLVirtualizerItf self,
25037777dab0Sopenharmony_ci		SLpermille *pStrength
25047777dab0Sopenharmony_ci	);
25057777dab0Sopenharmony_ci	SLresult (*IsStrengthSupported)(
25067777dab0Sopenharmony_ci		SLVirtualizerItf self,
25077777dab0Sopenharmony_ci		SLboolean *pSupported
25087777dab0Sopenharmony_ci	);
25097777dab0Sopenharmony_ci};
25107777dab0Sopenharmony_ci
25117777dab0Sopenharmony_ci/*---------------------------------------------------------------------------*/
25127777dab0Sopenharmony_ci/* Visualization Interface                                                   */
25137777dab0Sopenharmony_ci/* --------------------------------------------------------------------------*/
25147777dab0Sopenharmony_ci
25157777dab0Sopenharmony_ci
25167777dab0Sopenharmony_ciextern const SLInterfaceID SL_IID_VISUALIZATION;
25177777dab0Sopenharmony_ci
25187777dab0Sopenharmony_cistruct SLVisualizationItf_;
25197777dab0Sopenharmony_citypedef const struct SLVisualizationItf_ * const * SLVisualizationItf;
25207777dab0Sopenharmony_ci
25217777dab0Sopenharmony_citypedef void (SLAPIENTRY *slVisualizationCallback) (
25227777dab0Sopenharmony_ci	void *pContext,
25237777dab0Sopenharmony_ci	const SLuint8 waveform[],
25247777dab0Sopenharmony_ci	const SLuint8 fft[],
25257777dab0Sopenharmony_ci	SLmilliHertz samplerate
25267777dab0Sopenharmony_ci);
25277777dab0Sopenharmony_ci
25287777dab0Sopenharmony_cistruct SLVisualizationItf_{
25297777dab0Sopenharmony_ci	SLresult (*RegisterVisualizationCallback)(
25307777dab0Sopenharmony_ci		SLVisualizationItf self,
25317777dab0Sopenharmony_ci		slVisualizationCallback callback,
25327777dab0Sopenharmony_ci		void *pContext,
25337777dab0Sopenharmony_ci		SLmilliHertz rate
25347777dab0Sopenharmony_ci	);
25357777dab0Sopenharmony_ci	SLresult (*GetMaxRate)(
25367777dab0Sopenharmony_ci		SLVisualizationItf self,
25377777dab0Sopenharmony_ci		SLmilliHertz* pRate
25387777dab0Sopenharmony_ci	);
25397777dab0Sopenharmony_ci};
25407777dab0Sopenharmony_ci
25417777dab0Sopenharmony_ci
25427777dab0Sopenharmony_ci/*---------------------------------------------------------------------------*/
25437777dab0Sopenharmony_ci/* Engine Interface                                                          */
25447777dab0Sopenharmony_ci/* --------------------------------------------------------------------------*/
25457777dab0Sopenharmony_ci
25467777dab0Sopenharmony_ci
25477777dab0Sopenharmony_ciextern const SLInterfaceID SL_IID_ENGINE;
25487777dab0Sopenharmony_ci
25497777dab0Sopenharmony_cistruct SLEngineItf_;
25507777dab0Sopenharmony_citypedef const struct SLEngineItf_ * const * SLEngineItf;
25517777dab0Sopenharmony_ci
25527777dab0Sopenharmony_ci
25537777dab0Sopenharmony_cistruct SLEngineItf_ {
25547777dab0Sopenharmony_ci
25557777dab0Sopenharmony_ci	SLresult (*CreateLEDDevice) (
25567777dab0Sopenharmony_ci		SLEngineItf self,
25577777dab0Sopenharmony_ci		SLObjectItf * pDevice,
25587777dab0Sopenharmony_ci		SLuint32 deviceID,
25597777dab0Sopenharmony_ci		SLuint32 numInterfaces,
25607777dab0Sopenharmony_ci		const SLInterfaceID * pInterfaceIds,
25617777dab0Sopenharmony_ci		const SLboolean * pInterfaceRequired
25627777dab0Sopenharmony_ci	);
25637777dab0Sopenharmony_ci	SLresult (*CreateVibraDevice) (
25647777dab0Sopenharmony_ci		SLEngineItf self,
25657777dab0Sopenharmony_ci		SLObjectItf * pDevice,
25667777dab0Sopenharmony_ci		SLuint32 deviceID,
25677777dab0Sopenharmony_ci		SLuint32 numInterfaces,
25687777dab0Sopenharmony_ci		const SLInterfaceID * pInterfaceIds,
25697777dab0Sopenharmony_ci		const SLboolean * pInterfaceRequired
25707777dab0Sopenharmony_ci	);
25717777dab0Sopenharmony_ci	SLresult (*CreateAudioPlayer) (
25727777dab0Sopenharmony_ci		SLEngineItf self,
25737777dab0Sopenharmony_ci		SLObjectItf * pPlayer,
25747777dab0Sopenharmony_ci		SLDataSource *pAudioSrc,
25757777dab0Sopenharmony_ci		SLDataSink *pAudioSnk,
25767777dab0Sopenharmony_ci		SLuint32 numInterfaces,
25777777dab0Sopenharmony_ci		const SLInterfaceID * pInterfaceIds,
25787777dab0Sopenharmony_ci		const SLboolean * pInterfaceRequired
25797777dab0Sopenharmony_ci	);
25807777dab0Sopenharmony_ci	SLresult (*CreateAudioRecorder) (
25817777dab0Sopenharmony_ci		SLEngineItf self,
25827777dab0Sopenharmony_ci		SLObjectItf * pRecorder,
25837777dab0Sopenharmony_ci		SLDataSource *pAudioSrc,
25847777dab0Sopenharmony_ci		SLDataSink *pAudioSnk,
25857777dab0Sopenharmony_ci		SLuint32 numInterfaces,
25867777dab0Sopenharmony_ci		const SLInterfaceID * pInterfaceIds,
25877777dab0Sopenharmony_ci		const SLboolean * pInterfaceRequired
25887777dab0Sopenharmony_ci	);
25897777dab0Sopenharmony_ci	SLresult (*CreateMidiPlayer) (
25907777dab0Sopenharmony_ci		SLEngineItf self,
25917777dab0Sopenharmony_ci		SLObjectItf * pPlayer,
25927777dab0Sopenharmony_ci		SLDataSource *pMIDISrc,
25937777dab0Sopenharmony_ci		SLDataSource *pBankSrc,
25947777dab0Sopenharmony_ci		SLDataSink *pAudioOutput,
25957777dab0Sopenharmony_ci		SLDataSink *pVibra,
25967777dab0Sopenharmony_ci		SLDataSink *pLEDArray,
25977777dab0Sopenharmony_ci		SLuint32 numInterfaces,
25987777dab0Sopenharmony_ci		const SLInterfaceID * pInterfaceIds,
25997777dab0Sopenharmony_ci		const SLboolean * pInterfaceRequired
26007777dab0Sopenharmony_ci	);
26017777dab0Sopenharmony_ci	SLresult (*CreateListener) (
26027777dab0Sopenharmony_ci		SLEngineItf self,
26037777dab0Sopenharmony_ci		SLObjectItf * pListener,
26047777dab0Sopenharmony_ci		SLuint32 numInterfaces,
26057777dab0Sopenharmony_ci		const SLInterfaceID * pInterfaceIds,
26067777dab0Sopenharmony_ci		const SLboolean * pInterfaceRequired
26077777dab0Sopenharmony_ci	);
26087777dab0Sopenharmony_ci	SLresult (*Create3DGroup) (
26097777dab0Sopenharmony_ci		SLEngineItf self,
26107777dab0Sopenharmony_ci		SLObjectItf * pGroup,
26117777dab0Sopenharmony_ci		SLuint32 numInterfaces,
26127777dab0Sopenharmony_ci		const SLInterfaceID * pInterfaceIds,
26137777dab0Sopenharmony_ci		const SLboolean * pInterfaceRequired
26147777dab0Sopenharmony_ci	);
26157777dab0Sopenharmony_ci	SLresult (*CreateOutputMix) (
26167777dab0Sopenharmony_ci		SLEngineItf self,
26177777dab0Sopenharmony_ci		SLObjectItf * pMix,
26187777dab0Sopenharmony_ci		SLuint32 numInterfaces,
26197777dab0Sopenharmony_ci		const SLInterfaceID * pInterfaceIds,
26207777dab0Sopenharmony_ci		const SLboolean * pInterfaceRequired
26217777dab0Sopenharmony_ci	);
26227777dab0Sopenharmony_ci	SLresult (*CreateMetadataExtractor) (
26237777dab0Sopenharmony_ci		SLEngineItf self,
26247777dab0Sopenharmony_ci		SLObjectItf * pMetadataExtractor,
26257777dab0Sopenharmony_ci		SLDataSource * pDataSource,
26267777dab0Sopenharmony_ci		SLuint32 numInterfaces,
26277777dab0Sopenharmony_ci		const SLInterfaceID * pInterfaceIds,
26287777dab0Sopenharmony_ci		const SLboolean * pInterfaceRequired
26297777dab0Sopenharmony_ci	);
26307777dab0Sopenharmony_ci    SLresult (*CreateExtensionObject) (
26317777dab0Sopenharmony_ci        SLEngineItf self,
26327777dab0Sopenharmony_ci        SLObjectItf * pObject,
26337777dab0Sopenharmony_ci        void * pParameters,
26347777dab0Sopenharmony_ci        SLuint32 objectID,
26357777dab0Sopenharmony_ci        SLuint32 numInterfaces,
26367777dab0Sopenharmony_ci        const SLInterfaceID * pInterfaceIds,
26377777dab0Sopenharmony_ci        const SLboolean * pInterfaceRequired
26387777dab0Sopenharmony_ci    );
26397777dab0Sopenharmony_ci	SLresult (*QueryNumSupportedInterfaces) (
26407777dab0Sopenharmony_ci		SLEngineItf self,
26417777dab0Sopenharmony_ci		SLuint32 objectID,
26427777dab0Sopenharmony_ci		SLuint32 * pNumSupportedInterfaces
26437777dab0Sopenharmony_ci	);
26447777dab0Sopenharmony_ci	SLresult (*QuerySupportedInterfaces) (
26457777dab0Sopenharmony_ci		SLEngineItf self,
26467777dab0Sopenharmony_ci		SLuint32 objectID,
26477777dab0Sopenharmony_ci		SLuint32 index,
26487777dab0Sopenharmony_ci		SLInterfaceID * pInterfaceId
26497777dab0Sopenharmony_ci	);
26507777dab0Sopenharmony_ci    SLresult (*QueryNumSupportedExtensions) (
26517777dab0Sopenharmony_ci        SLEngineItf self,
26527777dab0Sopenharmony_ci        SLuint32 * pNumExtensions
26537777dab0Sopenharmony_ci    );
26547777dab0Sopenharmony_ci    SLresult (*QuerySupportedExtension) (
26557777dab0Sopenharmony_ci        SLEngineItf self,
26567777dab0Sopenharmony_ci        SLuint32 index,
26577777dab0Sopenharmony_ci        SLchar * pExtensionName,
26587777dab0Sopenharmony_ci        SLint16 * pNameLength
26597777dab0Sopenharmony_ci    );
26607777dab0Sopenharmony_ci    SLresult (*IsExtensionSupported) (
26617777dab0Sopenharmony_ci        SLEngineItf self,
26627777dab0Sopenharmony_ci        const SLchar * pExtensionName,
26637777dab0Sopenharmony_ci        SLboolean * pSupported
26647777dab0Sopenharmony_ci    );
26657777dab0Sopenharmony_ci};
26667777dab0Sopenharmony_ci
26677777dab0Sopenharmony_ci
26687777dab0Sopenharmony_ci/*---------------------------------------------------------------------------*/
26697777dab0Sopenharmony_ci/* Engine Capabilities Interface                                             */
26707777dab0Sopenharmony_ci/* --------------------------------------------------------------------------*/
26717777dab0Sopenharmony_ci
26727777dab0Sopenharmony_ci
26737777dab0Sopenharmony_ciextern const SLInterfaceID SL_IID_ENGINECAPABILITIES;
26747777dab0Sopenharmony_ci
26757777dab0Sopenharmony_cistruct SLEngineCapabilitiesItf_;
26767777dab0Sopenharmony_citypedef const struct SLEngineCapabilitiesItf_ * const * SLEngineCapabilitiesItf;
26777777dab0Sopenharmony_ci
26787777dab0Sopenharmony_cistruct SLEngineCapabilitiesItf_ {
26797777dab0Sopenharmony_ci	SLresult (*QuerySupportedProfiles) (
26807777dab0Sopenharmony_ci		SLEngineCapabilitiesItf self,
26817777dab0Sopenharmony_ci		SLuint16 *pProfilesSupported
26827777dab0Sopenharmony_ci	);
26837777dab0Sopenharmony_ci	SLresult (*QueryAvailableVoices) (
26847777dab0Sopenharmony_ci		SLEngineCapabilitiesItf self,
26857777dab0Sopenharmony_ci		SLuint16 voiceType,
26867777dab0Sopenharmony_ci		SLint16 *pNumMaxVoices,
26877777dab0Sopenharmony_ci		SLboolean *pIsAbsoluteMax,
26887777dab0Sopenharmony_ci		SLint16 *pNumFreeVoices
26897777dab0Sopenharmony_ci	);
26907777dab0Sopenharmony_ci	SLresult (*QueryNumberOfMIDISynthesizers) (
26917777dab0Sopenharmony_ci		SLEngineCapabilitiesItf self,
26927777dab0Sopenharmony_ci		SLint16 *pNumMIDIsynthesizers
26937777dab0Sopenharmony_ci	);
26947777dab0Sopenharmony_ci	SLresult (*QueryAPIVersion) (
26957777dab0Sopenharmony_ci		SLEngineCapabilitiesItf self,
26967777dab0Sopenharmony_ci		SLint16 *pMajor,
26977777dab0Sopenharmony_ci		SLint16 *pMinor,
26987777dab0Sopenharmony_ci		SLint16 *pStep
26997777dab0Sopenharmony_ci	);
27007777dab0Sopenharmony_ci	SLresult (*QueryLEDCapabilities) (
27017777dab0Sopenharmony_ci		SLEngineCapabilitiesItf self,
27027777dab0Sopenharmony_ci        SLuint32 *pIndex,
27037777dab0Sopenharmony_ci		SLuint32 *pLEDDeviceID,
27047777dab0Sopenharmony_ci		SLLEDDescriptor *pDescriptor
27057777dab0Sopenharmony_ci	);
27067777dab0Sopenharmony_ci	SLresult (*QueryVibraCapabilities) (
27077777dab0Sopenharmony_ci		SLEngineCapabilitiesItf self,
27087777dab0Sopenharmony_ci        SLuint32 *pIndex,
27097777dab0Sopenharmony_ci		SLuint32 *pVibraDeviceID,
27107777dab0Sopenharmony_ci		SLVibraDescriptor *pDescriptor
27117777dab0Sopenharmony_ci	);
27127777dab0Sopenharmony_ci	SLresult (*IsThreadSafe) (
27137777dab0Sopenharmony_ci		SLEngineCapabilitiesItf self,
27147777dab0Sopenharmony_ci		SLboolean *pIsThreadSafe
27157777dab0Sopenharmony_ci	);
27167777dab0Sopenharmony_ci};
27177777dab0Sopenharmony_ci
27187777dab0Sopenharmony_ci/*---------------------------------------------------------------------------*/
27197777dab0Sopenharmony_ci/* Thread Sync Interface                                                     */
27207777dab0Sopenharmony_ci/* --------------------------------------------------------------------------*/
27217777dab0Sopenharmony_ci
27227777dab0Sopenharmony_ci
27237777dab0Sopenharmony_ciextern const SLInterfaceID SL_IID_THREADSYNC;
27247777dab0Sopenharmony_ci
27257777dab0Sopenharmony_cistruct SLThreadSyncItf_;
27267777dab0Sopenharmony_citypedef const struct SLThreadSyncItf_ * const * SLThreadSyncItf;
27277777dab0Sopenharmony_ci
27287777dab0Sopenharmony_ci
27297777dab0Sopenharmony_cistruct SLThreadSyncItf_ {
27307777dab0Sopenharmony_ci	SLresult (*EnterCriticalSection) (
27317777dab0Sopenharmony_ci		SLThreadSyncItf self
27327777dab0Sopenharmony_ci	);
27337777dab0Sopenharmony_ci	SLresult (*ExitCriticalSection) (
27347777dab0Sopenharmony_ci		SLThreadSyncItf self
27357777dab0Sopenharmony_ci	);
27367777dab0Sopenharmony_ci};
27377777dab0Sopenharmony_ci
27387777dab0Sopenharmony_ci
27397777dab0Sopenharmony_ci/*****************************************************************************/
27407777dab0Sopenharmony_ci/* SL engine constructor                                                     */
27417777dab0Sopenharmony_ci/*****************************************************************************/
27427777dab0Sopenharmony_ci
27437777dab0Sopenharmony_ci#define SL_ENGINEOPTION_THREADSAFE	((SLuint32) 0x00000001)
27447777dab0Sopenharmony_ci#define SL_ENGINEOPTION_LOSSOFCONTROL	((SLuint32) 0x00000002)
27457777dab0Sopenharmony_ci
27467777dab0Sopenharmony_citypedef struct SLEngineOption_ {
27477777dab0Sopenharmony_ci	SLuint32 feature;
27487777dab0Sopenharmony_ci	SLuint32 data;
27497777dab0Sopenharmony_ci} SLEngineOption;
27507777dab0Sopenharmony_ci
27517777dab0Sopenharmony_ci
27527777dab0Sopenharmony_ciSLresult SLAPIENTRY slCreateEngine(
27537777dab0Sopenharmony_ci	SLObjectItf             *pEngine,
27547777dab0Sopenharmony_ci	SLuint32                numOptions,
27557777dab0Sopenharmony_ci	const SLEngineOption    *pEngineOptions,
27567777dab0Sopenharmony_ci	SLuint32                numInterfaces,
27577777dab0Sopenharmony_ci	const SLInterfaceID     *pInterfaceIds,
27587777dab0Sopenharmony_ci	const SLboolean         * pInterfaceRequired
27597777dab0Sopenharmony_ci);
27607777dab0Sopenharmony_ci
27617777dab0Sopenharmony_ciSLresult SLAPIENTRY slQueryNumSupportedEngineInterfaces(
27627777dab0Sopenharmony_ci	SLuint32 * pNumSupportedInterfaces
27637777dab0Sopenharmony_ci);
27647777dab0Sopenharmony_ci
27657777dab0Sopenharmony_ciSLresult SLAPIENTRY slQuerySupportedEngineInterfaces(
27667777dab0Sopenharmony_ci	SLuint32 index,
27677777dab0Sopenharmony_ci	SLInterfaceID * pInterfaceId
27687777dab0Sopenharmony_ci);
27697777dab0Sopenharmony_ci
27707777dab0Sopenharmony_ci#ifdef __cplusplus
27717777dab0Sopenharmony_ci} /* extern "C" */
27727777dab0Sopenharmony_ci#endif
27737777dab0Sopenharmony_ci
27747777dab0Sopenharmony_ci#endif /* OPENSL_ES_H_ */
2775