1523f5352Sopenharmony_ci/*
2523f5352Sopenharmony_ci * Copyright (c) 2007-2011 The Khronos Group Inc.
3523f5352Sopenharmony_ci *
4523f5352Sopenharmony_ci * Permission is hereby granted, free of charge, to any person obtaining a copy of
5523f5352Sopenharmony_ci * this software and /or associated documentation files (the "Materials "), to
6523f5352Sopenharmony_ci * deal in the Materials without restriction, including without limitation the
7523f5352Sopenharmony_ci * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
8523f5352Sopenharmony_ci * sell copies of the Materials, and to permit persons to whom the Materials are
9523f5352Sopenharmony_ci * furnished to do so, subject to
10523f5352Sopenharmony_ci * the following conditions:
11523f5352Sopenharmony_ci *
12523f5352Sopenharmony_ci * The above copyright notice and this permission notice shall be included
13523f5352Sopenharmony_ci * in all copies or substantial portions of the Materials.
14523f5352Sopenharmony_ci *
15523f5352Sopenharmony_ci * THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16523f5352Sopenharmony_ci * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17523f5352Sopenharmony_ci * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18523f5352Sopenharmony_ci * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19523f5352Sopenharmony_ci * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20523f5352Sopenharmony_ci * OUT OF OR IN CONNECTION WITH THE MATERIALS OR THE USE OR OTHER DEALINGS IN THE
21523f5352Sopenharmony_ci * MATERIALS.
22523f5352Sopenharmony_ci *
23523f5352Sopenharmony_ci * OpenSLES.h - OpenSL ES version 1.1
24523f5352Sopenharmony_ci *
25523f5352Sopenharmony_ci */
26523f5352Sopenharmony_ci
27523f5352Sopenharmony_ci/****************************************************************************/
28523f5352Sopenharmony_ci/* NOTE: This file is a standard OpenSL ES header file and should not be    */
29523f5352Sopenharmony_ci/* modified in any way.                                                     */
30523f5352Sopenharmony_ci/****************************************************************************/
31523f5352Sopenharmony_ci
32523f5352Sopenharmony_ci#ifndef OPENSL_ES_H_
33523f5352Sopenharmony_ci#define OPENSL_ES_H_
34523f5352Sopenharmony_ci
35523f5352Sopenharmony_ci#ifdef __cplusplus
36523f5352Sopenharmony_ciextern "C" {
37523f5352Sopenharmony_ci#endif
38523f5352Sopenharmony_ci
39523f5352Sopenharmony_ci#include "OpenSLES_Platform.h"
40523f5352Sopenharmony_ci
41523f5352Sopenharmony_ci
42523f5352Sopenharmony_ci/*****************************************************************************/
43523f5352Sopenharmony_ci/* Common types, structures, and defines                                */
44523f5352Sopenharmony_ci/*****************************************************************************/
45523f5352Sopenharmony_ci
46523f5352Sopenharmony_ci#ifndef _KHRONOS_KEYS_
47523f5352Sopenharmony_ci#define _KHRONOS_KEYS_
48523f5352Sopenharmony_ci
49523f5352Sopenharmony_ci#define KHRONOS_TITLE "KhronosTitle"
50523f5352Sopenharmony_ci#define KHRONOS_ALBUM "KhronosAlbum"
51523f5352Sopenharmony_ci#define KHRONOS_TRACK_NUMBER "KhronosTrackNumber"
52523f5352Sopenharmony_ci#define KHRONOS_ARTIST "KhronosArtist"
53523f5352Sopenharmony_ci#define KHRONOS_GENRE "KhronosGenre"
54523f5352Sopenharmony_ci#define KHRONOS_YEAR "KhronosYear"
55523f5352Sopenharmony_ci#define KHRONOS_COMMENT "KhronosComment"
56523f5352Sopenharmony_ci#define KHRONOS_ARTIST_URL "KhronosArtistURL"
57523f5352Sopenharmony_ci#define KHRONOS_CONTENT_URL "KhronosContentURL"
58523f5352Sopenharmony_ci#define KHRONOS_RATING "KhronosRating"
59523f5352Sopenharmony_ci#define KHRONOS_ALBUM_ART "KhronosAlbumArt"
60523f5352Sopenharmony_ci#define KHRONOS_COPYRIGHT "KhronosCopyright"
61523f5352Sopenharmony_ci
62523f5352Sopenharmony_ci#endif
63523f5352Sopenharmony_ci
64523f5352Sopenharmony_ci
65523f5352Sopenharmony_ci/* remap common types to SL types for clarity */
66523f5352Sopenharmony_citypedef sl_char_t              SLchar;          /* UTF-8 is to be used     */
67523f5352Sopenharmony_citypedef sl_int8_t              SLint8;          /* 8 bit signed integer    */
68523f5352Sopenharmony_citypedef sl_uint8_t             SLuint8;         /* 8 bit unsigned integer  */
69523f5352Sopenharmony_citypedef sl_int16_t             SLint16;         /* 16 bit signed integer   */
70523f5352Sopenharmony_citypedef sl_uint16_t            SLuint16;        /* 16 bit unsigned integer */
71523f5352Sopenharmony_citypedef sl_int32_t             SLint32;         /* 32 bit signed integer   */
72523f5352Sopenharmony_citypedef sl_uint32_t            SLuint32;        /* 32 bit unsigned integer */
73523f5352Sopenharmony_citypedef sl_float32_t           SLfloat32;       /* 32 bit floating point   */
74523f5352Sopenharmony_citypedef sl_float64_t           Slfloat64;       /* 64 bit floating point   */
75523f5352Sopenharmony_ci
76523f5352Sopenharmony_ci
77523f5352Sopenharmony_citypedef SLuint32                    SLboolean;
78523f5352Sopenharmony_ci#define SL_BOOLEAN_FALSE            ((SLboolean) 0x00000000)
79523f5352Sopenharmony_ci#define SL_BOOLEAN_TRUE             ((SLboolean) 0x00000001)
80523f5352Sopenharmony_ci
81523f5352Sopenharmony_citypedef SLint16                     SLmillibel;
82523f5352Sopenharmony_citypedef SLuint32                    SLmillisecond;
83523f5352Sopenharmony_citypedef SLuint32                    SLmilliHertz;
84523f5352Sopenharmony_citypedef SLint32                     SLmillimeter;
85523f5352Sopenharmony_citypedef SLint32                     SLmillidegree;
86523f5352Sopenharmony_citypedef SLint16                     SLpermille;
87523f5352Sopenharmony_citypedef SLuint32                    SLmicrosecond;
88523f5352Sopenharmony_citypedef SLuint32                    SLresult;
89523f5352Sopenharmony_ci
90523f5352Sopenharmony_ci#define SL_MILLIBEL_MAX     ((SLmillibel) 0x7FFF)
91523f5352Sopenharmony_ci#define SL_MILLIBEL_MIN     ((SLmillibel) (-SL_MILLIBEL_MAX-1))
92523f5352Sopenharmony_ci
93523f5352Sopenharmony_ci#define SL_MILLIHERTZ_MAX    ((SLmilliHertz) 0xFFFFFFFF)
94523f5352Sopenharmony_ci#define SL_MILLIMETER_MAX    ((SLmillimeter) 0x7FFFFFFF)
95523f5352Sopenharmony_ci
96523f5352Sopenharmony_ci/** Interface ID defined as a UUID */
97523f5352Sopenharmony_citypedef const struct SLInterfaceID_ {
98523f5352Sopenharmony_ci    SLuint32 time_low;
99523f5352Sopenharmony_ci    SLuint16 time_mid;
100523f5352Sopenharmony_ci    SLuint16 time_hi_and_version;
101523f5352Sopenharmony_ci    SLuint16 clock_seq;
102523f5352Sopenharmony_ci    SLuint8  node[6];
103523f5352Sopenharmony_ci} * SLInterfaceID;
104523f5352Sopenharmony_ci
105523f5352Sopenharmony_ci/* Forward declaration for the object interface */
106523f5352Sopenharmony_cistruct SLObjectItf_;
107523f5352Sopenharmony_ci
108523f5352Sopenharmony_citypedef const struct SLObjectItf_ * const * SLObjectItf;
109523f5352Sopenharmony_ci
110523f5352Sopenharmony_ci/* Objects ID's */
111523f5352Sopenharmony_ci
112523f5352Sopenharmony_ci#define SL_OBJECTID_ENGINE               ((SLuint32) 0x00001001)
113523f5352Sopenharmony_ci#define SL_OBJECTID_LEDDEVICE            ((SLuint32) 0x00001002)
114523f5352Sopenharmony_ci#define SL_OBJECTID_VIBRADEVICE          ((SLuint32) 0x00001003)
115523f5352Sopenharmony_ci#define SL_OBJECTID_AUDIOPLAYER          ((SLuint32) 0x00001004)
116523f5352Sopenharmony_ci#define SL_OBJECTID_AUDIORECORDER        ((SLuint32) 0x00001005)
117523f5352Sopenharmony_ci#define SL_OBJECTID_MIDIPLAYER           ((SLuint32) 0x00001006)
118523f5352Sopenharmony_ci#define SL_OBJECTID_LISTENER             ((SLuint32) 0x00001007)
119523f5352Sopenharmony_ci#define SL_OBJECTID_3DGROUP              ((SLuint32) 0x00001008)
120523f5352Sopenharmony_ci#define SL_OBJECTID_OUTPUTMIX            ((SLuint32) 0x00001009)
121523f5352Sopenharmony_ci#define SL_OBJECTID_METADATAEXTRACTOR    ((SLuint32) 0x0000100A)
122523f5352Sopenharmony_ci
123523f5352Sopenharmony_ci
124523f5352Sopenharmony_ci/* SL Profiles */
125523f5352Sopenharmony_ci
126523f5352Sopenharmony_ci#define SL_PROFILES_PHONE    ((SLuint16) 0x0001)
127523f5352Sopenharmony_ci#define SL_PROFILES_MUSIC    ((SLuint16) 0x0002)
128523f5352Sopenharmony_ci#define SL_PROFILES_GAME    ((SLuint16) 0x0004)
129523f5352Sopenharmony_ci
130523f5352Sopenharmony_ci/* Types of voices supported by the system */
131523f5352Sopenharmony_ci
132523f5352Sopenharmony_ci#define SL_VOICETYPE_2D_AUDIO          ((SLuint16) 0x0001)
133523f5352Sopenharmony_ci#define SL_VOICETYPE_MIDI              ((SLuint16) 0x0002)
134523f5352Sopenharmony_ci#define SL_VOICETYPE_3D_AUDIO          ((SLuint16) 0x0004)
135523f5352Sopenharmony_ci#define SL_VOICETYPE_3D_MIDIOUTPUT     ((SLuint16) 0x0008)
136523f5352Sopenharmony_ci
137523f5352Sopenharmony_ci/* Convenient macros representing various different priority levels, for use with the SetPriority method */
138523f5352Sopenharmony_ci
139523f5352Sopenharmony_ci#define SL_PRIORITY_LOWEST         ((SLuint32) 0xFFFFFFFF)
140523f5352Sopenharmony_ci#define SL_PRIORITY_VERYLOW        ((SLuint32) 0xE0000000)
141523f5352Sopenharmony_ci#define SL_PRIORITY_LOW            ((SLuint32) 0xC0000000)
142523f5352Sopenharmony_ci#define SL_PRIORITY_BELOWNORMAL    ((SLuint32) 0xA0000000)
143523f5352Sopenharmony_ci#define SL_PRIORITY_NORMAL         ((SLuint32) 0x7FFFFFFF)
144523f5352Sopenharmony_ci#define SL_PRIORITY_ABOVENORMAL    ((SLuint32) 0x60000000)
145523f5352Sopenharmony_ci#define SL_PRIORITY_HIGH           ((SLuint32) 0x40000000)
146523f5352Sopenharmony_ci#define SL_PRIORITY_VERYHIGH       ((SLuint32) 0x20000000)
147523f5352Sopenharmony_ci#define SL_PRIORITY_HIGHEST        ((SLuint32) 0x00000000)
148523f5352Sopenharmony_ci
149523f5352Sopenharmony_ci/** These macros list types of PCM data **/
150523f5352Sopenharmony_ci#define SL_PCM_REPRESENTATION_SIGNED_INT       ((SLuint32) 0x00000001)
151523f5352Sopenharmony_ci#define SL_PCM_REPRESENTATION_UNSIGNED_INT     ((SLuint32) 0x00000002)
152523f5352Sopenharmony_ci#define SL_PCM_REPRESENTATION_FLOAT            ((SLuint32) 0x00000003)
153523f5352Sopenharmony_ci
154523f5352Sopenharmony_ci/** These macros list the various sample formats that are possible on audio input and output devices. */
155523f5352Sopenharmony_ci
156523f5352Sopenharmony_ci#define SL_PCMSAMPLEFORMAT_FIXED_8     ((SLuint16) 0x0008)
157523f5352Sopenharmony_ci#define SL_PCMSAMPLEFORMAT_FIXED_16    ((SLuint16) 0x0010)
158523f5352Sopenharmony_ci#define SL_PCMSAMPLEFORMAT_FIXED_20    ((SLuint16) 0x0014)
159523f5352Sopenharmony_ci#define SL_PCMSAMPLEFORMAT_FIXED_24    ((SLuint16) 0x0018)
160523f5352Sopenharmony_ci#define SL_PCMSAMPLEFORMAT_FIXED_28    ((SLuint16) 0x001C)
161523f5352Sopenharmony_ci#define SL_PCMSAMPLEFORMAT_FIXED_32    ((SLuint16) 0x0020)
162523f5352Sopenharmony_ci#define SL_PCMSAMPLEFORMAT_FIXED_64    ((SLuint16) 0x0040)
163523f5352Sopenharmony_ci
164523f5352Sopenharmony_ci/** These macros specify the commonly used sampling rates (in milliHertz) supported by most audio I/O devices. */
165523f5352Sopenharmony_ci
166523f5352Sopenharmony_ci#define SL_SAMPLINGRATE_8          ((SLuint32) 8000000)
167523f5352Sopenharmony_ci#define SL_SAMPLINGRATE_11_025     ((SLuint32) 11025000)
168523f5352Sopenharmony_ci#define SL_SAMPLINGRATE_12         ((SLuint32) 12000000)
169523f5352Sopenharmony_ci#define SL_SAMPLINGRATE_16         ((SLuint32) 16000000)
170523f5352Sopenharmony_ci#define SL_SAMPLINGRATE_22_05      ((SLuint32) 22050000)
171523f5352Sopenharmony_ci#define SL_SAMPLINGRATE_24         ((SLuint32) 24000000)
172523f5352Sopenharmony_ci#define SL_SAMPLINGRATE_32         ((SLuint32) 32000000)
173523f5352Sopenharmony_ci#define SL_SAMPLINGRATE_44_1       ((SLuint32) 44100000)
174523f5352Sopenharmony_ci#define SL_SAMPLINGRATE_48         ((SLuint32) 48000000)
175523f5352Sopenharmony_ci#define SL_SAMPLINGRATE_64         ((SLuint32) 64000000)
176523f5352Sopenharmony_ci#define SL_SAMPLINGRATE_88_2       ((SLuint32) 88200000)
177523f5352Sopenharmony_ci#define SL_SAMPLINGRATE_96         ((SLuint32) 96000000)
178523f5352Sopenharmony_ci#define SL_SAMPLINGRATE_192        ((SLuint32) 192000000)
179523f5352Sopenharmony_ci
180523f5352Sopenharmony_ci#define SL_SPEAKER_FRONT_LEFT                  ((SLuint32) 0x00000001)
181523f5352Sopenharmony_ci#define SL_SPEAKER_FRONT_RIGHT                 ((SLuint32) 0x00000002)
182523f5352Sopenharmony_ci#define SL_SPEAKER_FRONT_CENTER                ((SLuint32) 0x00000004)
183523f5352Sopenharmony_ci#define SL_SPEAKER_LOW_FREQUENCY               ((SLuint32) 0x00000008)
184523f5352Sopenharmony_ci#define SL_SPEAKER_BACK_LEFT                   ((SLuint32) 0x00000010)
185523f5352Sopenharmony_ci#define SL_SPEAKER_BACK_RIGHT                  ((SLuint32) 0x00000020)
186523f5352Sopenharmony_ci#define SL_SPEAKER_FRONT_LEFT_OF_CENTER        ((SLuint32) 0x00000040)
187523f5352Sopenharmony_ci#define SL_SPEAKER_FRONT_RIGHT_OF_CENTER       ((SLuint32) 0x00000080)
188523f5352Sopenharmony_ci#define SL_SPEAKER_BACK_CENTER                 ((SLuint32) 0x00000100)
189523f5352Sopenharmony_ci#define SL_SPEAKER_SIDE_LEFT                   ((SLuint32) 0x00000200)
190523f5352Sopenharmony_ci#define SL_SPEAKER_SIDE_RIGHT                  ((SLuint32) 0x00000400)
191523f5352Sopenharmony_ci#define SL_SPEAKER_TOP_CENTER                  ((SLuint32) 0x00000800)
192523f5352Sopenharmony_ci#define SL_SPEAKER_TOP_FRONT_LEFT              ((SLuint32) 0x00001000)
193523f5352Sopenharmony_ci#define SL_SPEAKER_TOP_FRONT_CENTER            ((SLuint32) 0x00002000)
194523f5352Sopenharmony_ci#define SL_SPEAKER_TOP_FRONT_RIGHT             ((SLuint32) 0x00004000)
195523f5352Sopenharmony_ci#define SL_SPEAKER_TOP_BACK_LEFT               ((SLuint32) 0x00008000)
196523f5352Sopenharmony_ci#define SL_SPEAKER_TOP_BACK_CENTER             ((SLuint32) 0x00010000)
197523f5352Sopenharmony_ci#define SL_SPEAKER_TOP_BACK_RIGHT              ((SLuint32) 0x00020000)
198523f5352Sopenharmony_ci
199523f5352Sopenharmony_ci
200523f5352Sopenharmony_ci/*****************************************************************************/
201523f5352Sopenharmony_ci/* Errors                                                                    */
202523f5352Sopenharmony_ci/*                                                                           */
203523f5352Sopenharmony_ci/*****************************************************************************/
204523f5352Sopenharmony_ci
205523f5352Sopenharmony_ci#define SL_RESULT_SUCCESS                      ((SLuint32) 0x00000000)
206523f5352Sopenharmony_ci#define SL_RESULT_PRECONDITIONS_VIOLATED       ((SLuint32) 0x00000001)
207523f5352Sopenharmony_ci#define SL_RESULT_PARAMETER_INVALID            ((SLuint32) 0x00000002)
208523f5352Sopenharmony_ci#define SL_RESULT_MEMORY_FAILURE               ((SLuint32) 0x00000003)
209523f5352Sopenharmony_ci#define SL_RESULT_RESOURCE_ERROR               ((SLuint32) 0x00000004)
210523f5352Sopenharmony_ci#define SL_RESULT_RESOURCE_LOST                ((SLuint32) 0x00000005)
211523f5352Sopenharmony_ci#define SL_RESULT_IO_ERROR                     ((SLuint32) 0x00000006)
212523f5352Sopenharmony_ci#define SL_RESULT_BUFFER_INSUFFICIENT          ((SLuint32) 0x00000007)
213523f5352Sopenharmony_ci#define SL_RESULT_CONTENT_CORRUPTED            ((SLuint32) 0x00000008)
214523f5352Sopenharmony_ci#define SL_RESULT_CONTENT_UNSUPPORTED          ((SLuint32) 0x00000009)
215523f5352Sopenharmony_ci#define SL_RESULT_CONTENT_NOT_FOUND            ((SLuint32) 0x0000000A)
216523f5352Sopenharmony_ci#define SL_RESULT_PERMISSION_DENIED            ((SLuint32) 0x0000000B)
217523f5352Sopenharmony_ci#define SL_RESULT_FEATURE_UNSUPPORTED          ((SLuint32) 0x0000000C)
218523f5352Sopenharmony_ci#define SL_RESULT_INTERNAL_ERROR               ((SLuint32) 0x0000000D)
219523f5352Sopenharmony_ci#define SL_RESULT_UNKNOWN_ERROR                ((SLuint32) 0x0000000E)
220523f5352Sopenharmony_ci#define SL_RESULT_OPERATION_ABORTED            ((SLuint32) 0x0000000F)
221523f5352Sopenharmony_ci#define SL_RESULT_CONTROL_LOST                 ((SLuint32) 0x00000010)
222523f5352Sopenharmony_ci#define SL_RESULT_READONLY                     ((SLuint32) 0x00000011)
223523f5352Sopenharmony_ci#define SL_RESULT_ENGINEOPTION_UNSUPPORTED     ((SLuint32) 0x00000012)
224523f5352Sopenharmony_ci#define SL_RESULT_SOURCE_SINK_INCOMPATIBLE     ((SLuint32) 0x00000013)
225523f5352Sopenharmony_ci
226523f5352Sopenharmony_ci/* Object state definitions */
227523f5352Sopenharmony_ci
228523f5352Sopenharmony_ci#define SL_OBJECT_STATE_UNREALIZED             ((SLuint32) 0x00000001)
229523f5352Sopenharmony_ci#define SL_OBJECT_STATE_REALIZED               ((SLuint32) 0x00000002)
230523f5352Sopenharmony_ci#define SL_OBJECT_STATE_SUSPENDED              ((SLuint32) 0x00000003)
231523f5352Sopenharmony_ci
232523f5352Sopenharmony_ci/* Object event definitions */
233523f5352Sopenharmony_ci
234523f5352Sopenharmony_ci#define SL_OBJECT_EVENT_RUNTIME_ERROR              ((SLuint32) 0x00000001)
235523f5352Sopenharmony_ci#define SL_OBJECT_EVENT_ASYNC_TERMINATION          ((SLuint32) 0x00000002)
236523f5352Sopenharmony_ci#define SL_OBJECT_EVENT_RESOURCES_LOST             ((SLuint32) 0x00000003)
237523f5352Sopenharmony_ci#define SL_OBJECT_EVENT_RESOURCES_AVAILABLE        ((SLuint32) 0x00000004)
238523f5352Sopenharmony_ci#define SL_OBJECT_EVENT_ITF_CONTROL_TAKEN          ((SLuint32) 0x00000005)
239523f5352Sopenharmony_ci#define SL_OBJECT_EVENT_ITF_CONTROL_RETURNED       ((SLuint32) 0x00000006)
240523f5352Sopenharmony_ci#define SL_OBJECT_EVENT_ITF_PARAMETERS_CHANGED     ((SLuint32) 0x00000007)
241523f5352Sopenharmony_ci
242523f5352Sopenharmony_ci
243523f5352Sopenharmony_ci/*****************************************************************************/
244523f5352Sopenharmony_ci/* Interface definitions                                                     */
245523f5352Sopenharmony_ci/*****************************************************************************/
246523f5352Sopenharmony_ci
247523f5352Sopenharmony_ci/** NULL Interface */
248523f5352Sopenharmony_ci
249523f5352Sopenharmony_ciSL_API extern const SLInterfaceID SL_IID_NULL;
250523f5352Sopenharmony_ci
251523f5352Sopenharmony_ci/*---------------------------------------------------------------------------*/
252523f5352Sopenharmony_ci/* Data Source and Data Sink Structures                                      */
253523f5352Sopenharmony_ci/*---------------------------------------------------------------------------*/
254523f5352Sopenharmony_ci
255523f5352Sopenharmony_ci/** Data locator macros  */
256523f5352Sopenharmony_ci#define SL_DATALOCATOR_NULL                   ((SLuint32) 0x00000000)
257523f5352Sopenharmony_ci#define SL_DATALOCATOR_URI                    ((SLuint32) 0x00000001)
258523f5352Sopenharmony_ci#define SL_DATALOCATOR_ADDRESS                ((SLuint32) 0x00000002)
259523f5352Sopenharmony_ci#define SL_DATALOCATOR_IODEVICE               ((SLuint32) 0x00000003)
260523f5352Sopenharmony_ci#define SL_DATALOCATOR_OUTPUTMIX              ((SLuint32) 0x00000004)
261523f5352Sopenharmony_ci#define SL_DATALOCATOR_RESERVED5              ((SLuint32) 0x00000005)
262523f5352Sopenharmony_ci#define SL_DATALOCATOR_BUFFERQUEUE            ((SLuint32) 0x00000006)
263523f5352Sopenharmony_ci#define SL_DATALOCATOR_MIDIBUFFERQUEUE        ((SLuint32) 0x00000007)
264523f5352Sopenharmony_ci#define SL_DATALOCATOR_MEDIAOBJECT            ((SLuint32) 0x00000008)
265523f5352Sopenharmony_ci#define SL_DATALOCATOR_CONTENTPIPE            ((SLuint32) 0x00000009)
266523f5352Sopenharmony_ci
267523f5352Sopenharmony_ci
268523f5352Sopenharmony_ci/** URI-based data locator definition where locatorType must be SL_DATALOCATOR_URI*/
269523f5352Sopenharmony_citypedef struct SLDataLocator_URI_ {
270523f5352Sopenharmony_ci    SLuint32         locatorType;
271523f5352Sopenharmony_ci    const SLchar *    pURI;
272523f5352Sopenharmony_ci} SLDataLocator_URI;
273523f5352Sopenharmony_ci
274523f5352Sopenharmony_ci/** Address-based data locator definition where locatorType must be SL_DATALOCATOR_ADDRESS*/
275523f5352Sopenharmony_citypedef struct SLDataLocator_Address_ {
276523f5352Sopenharmony_ci    SLuint32     locatorType;
277523f5352Sopenharmony_ci    void         *pAddress;
278523f5352Sopenharmony_ci    SLuint32    length;
279523f5352Sopenharmony_ci} SLDataLocator_Address;
280523f5352Sopenharmony_ci
281523f5352Sopenharmony_ci/** IODevice-types */
282523f5352Sopenharmony_ci#define SL_IODEVICE_AUDIOINPUT      ((SLuint32) 0x00000001)
283523f5352Sopenharmony_ci#define SL_IODEVICE_LEDARRAY        ((SLuint32) 0x00000002)
284523f5352Sopenharmony_ci#define SL_IODEVICE_VIBRA           ((SLuint32) 0x00000003)
285523f5352Sopenharmony_ci#define SL_IODEVICE_RESERVED4       ((SLuint32) 0x00000004)
286523f5352Sopenharmony_ci#define SL_IODEVICE_RESERVED5       ((SLuint32) 0x00000005)
287523f5352Sopenharmony_ci#define SL_IODEVICE_AUDIOOUTPUT     ((SLuint32) 0x00000006)
288523f5352Sopenharmony_ci
289523f5352Sopenharmony_ci/** IODevice-based data locator definition where locatorType must be SL_DATALOCATOR_IODEVICE*/
290523f5352Sopenharmony_citypedef struct SLDataLocator_IODevice_ {
291523f5352Sopenharmony_ci    SLuint32    locatorType;
292523f5352Sopenharmony_ci    SLuint32    deviceType;
293523f5352Sopenharmony_ci    SLuint32    deviceID;
294523f5352Sopenharmony_ci    SLObjectItf    device;
295523f5352Sopenharmony_ci} SLDataLocator_IODevice;
296523f5352Sopenharmony_ci
297523f5352Sopenharmony_ci/** OutputMix-based data locator definition where locatorType must be SL_DATALOCATOR_OUTPUTMIX*/
298523f5352Sopenharmony_citypedef struct SLDataLocator_OutputMix_ {
299523f5352Sopenharmony_ci    SLuint32         locatorType;
300523f5352Sopenharmony_ci    SLObjectItf        outputMix;
301523f5352Sopenharmony_ci} SLDataLocator_OutputMix;
302523f5352Sopenharmony_ci
303523f5352Sopenharmony_ci
304523f5352Sopenharmony_ci/** BufferQueue-based data locator definition where locatorType must be SL_DATALOCATOR_BUFFERQUEUE*/
305523f5352Sopenharmony_citypedef struct SLDataLocator_BufferQueue_ {
306523f5352Sopenharmony_ci    SLuint32    locatorType;
307523f5352Sopenharmony_ci    SLuint32    numBuffers;
308523f5352Sopenharmony_ci} SLDataLocator_BufferQueue;
309523f5352Sopenharmony_ci
310523f5352Sopenharmony_ci/** ContentPipe-based data locator definition where locatorType must be SL_DATALOCATOR_CONTENTPIPE */
311523f5352Sopenharmony_citypedef struct SLDataLocator_ContentPipe_ {
312523f5352Sopenharmony_ci    SLuint32 locatorType;
313523f5352Sopenharmony_ci    void * pContentPipe;
314523f5352Sopenharmony_ci    const SLchar * pURI;
315523f5352Sopenharmony_ci} SLDataLocator_ContentPipe;
316523f5352Sopenharmony_ci
317523f5352Sopenharmony_ci/** MidiBufferQueue-based data locator definition where locatorType must be SL_DATALOCATOR_MIDIBUFFERQUEUE*/
318523f5352Sopenharmony_citypedef struct SLDataLocator_MIDIBufferQueue_ {
319523f5352Sopenharmony_ci    SLuint32    locatorType;
320523f5352Sopenharmony_ci    SLuint32    tpqn;
321523f5352Sopenharmony_ci    SLuint32    numBuffers;
322523f5352Sopenharmony_ci} SLDataLocator_MIDIBufferQueue;
323523f5352Sopenharmony_ci
324523f5352Sopenharmony_ci/** Data format defines */
325523f5352Sopenharmony_ci#define SL_DATAFORMAT_MIME        ((SLuint32) 0x00000001)
326523f5352Sopenharmony_ci#define SL_DATAFORMAT_PCM        ((SLuint32) 0x00000002)
327523f5352Sopenharmony_ci#define SL_DATAFORMAT_RESERVED3    ((SLuint32) 0x00000003)
328523f5352Sopenharmony_ci#define SL_DATAFORMAT_PCM_EX    ((SLuint32) 0x00000004)
329523f5352Sopenharmony_ci
330523f5352Sopenharmony_ci
331523f5352Sopenharmony_ci/** MIME-type-based data format definition where formatType must be SL_DATAFORMAT_MIME*/
332523f5352Sopenharmony_citypedef struct SLDataFormat_MIME_ {
333523f5352Sopenharmony_ci    SLuint32         formatType;
334523f5352Sopenharmony_ci    const SLchar *    pMimeType;
335523f5352Sopenharmony_ci    SLuint32        containerType;
336523f5352Sopenharmony_ci} SLDataFormat_MIME;
337523f5352Sopenharmony_ci
338523f5352Sopenharmony_ci/* Byte order of a block of 16- or 32-bit data */
339523f5352Sopenharmony_ci#define SL_BYTEORDER_BIGENDIAN                ((SLuint32) 0x00000001)
340523f5352Sopenharmony_ci#define SL_BYTEORDER_LITTLEENDIAN            ((SLuint32) 0x00000002)
341523f5352Sopenharmony_ci
342523f5352Sopenharmony_ci#ifdef SL_BYTEORDER_NATIVEBIGENDIAN
343523f5352Sopenharmony_ci#define SL_BYTEORDER_NATIVE                SL_BYTEORDER_BIGENDIAN
344523f5352Sopenharmony_ci#else
345523f5352Sopenharmony_ci#define SL_BYTEORDER_NATIVE                SL_BYTEORDER_LITTLEENDIAN
346523f5352Sopenharmony_ci#endif
347523f5352Sopenharmony_ci
348523f5352Sopenharmony_ci/* Container type */
349523f5352Sopenharmony_ci#define SL_CONTAINERTYPE_UNSPECIFIED    ((SLuint32) 0x00000001)
350523f5352Sopenharmony_ci#define SL_CONTAINERTYPE_RAW        ((SLuint32) 0x00000002)
351523f5352Sopenharmony_ci#define SL_CONTAINERTYPE_ASF        ((SLuint32) 0x00000003)
352523f5352Sopenharmony_ci#define SL_CONTAINERTYPE_AVI        ((SLuint32) 0x00000004)
353523f5352Sopenharmony_ci#define SL_CONTAINERTYPE_BMP        ((SLuint32) 0x00000005)
354523f5352Sopenharmony_ci#define SL_CONTAINERTYPE_JPG        ((SLuint32) 0x00000006)
355523f5352Sopenharmony_ci#define SL_CONTAINERTYPE_JPG2000        ((SLuint32) 0x00000007)
356523f5352Sopenharmony_ci#define SL_CONTAINERTYPE_M4A        ((SLuint32) 0x00000008)
357523f5352Sopenharmony_ci#define SL_CONTAINERTYPE_MP3        ((SLuint32) 0x00000009)
358523f5352Sopenharmony_ci#define SL_CONTAINERTYPE_MP4        ((SLuint32) 0x0000000A)
359523f5352Sopenharmony_ci#define SL_CONTAINERTYPE_MPEG_ES        ((SLuint32) 0x0000000B)
360523f5352Sopenharmony_ci#define SL_CONTAINERTYPE_MPEG_PS        ((SLuint32) 0x0000000C)
361523f5352Sopenharmony_ci#define SL_CONTAINERTYPE_MPEG_TS        ((SLuint32) 0x0000000D)
362523f5352Sopenharmony_ci#define SL_CONTAINERTYPE_QT        ((SLuint32) 0x0000000E)
363523f5352Sopenharmony_ci#define SL_CONTAINERTYPE_WAV        ((SLuint32) 0x0000000F)
364523f5352Sopenharmony_ci#define SL_CONTAINERTYPE_XMF_0        ((SLuint32) 0x00000010)
365523f5352Sopenharmony_ci#define SL_CONTAINERTYPE_XMF_1        ((SLuint32) 0x00000011)
366523f5352Sopenharmony_ci#define SL_CONTAINERTYPE_XMF_2        ((SLuint32) 0x00000012)
367523f5352Sopenharmony_ci#define SL_CONTAINERTYPE_XMF_3        ((SLuint32) 0x00000013)
368523f5352Sopenharmony_ci#define SL_CONTAINERTYPE_XMF_GENERIC    ((SLuint32) 0x00000014)
369523f5352Sopenharmony_ci#define SL_CONTAINERTYPE_AMR          ((SLuint32) 0x00000015)
370523f5352Sopenharmony_ci#define SL_CONTAINERTYPE_AAC        ((SLuint32) 0x00000016)
371523f5352Sopenharmony_ci#define SL_CONTAINERTYPE_3GPP        ((SLuint32) 0x00000017)
372523f5352Sopenharmony_ci#define SL_CONTAINERTYPE_3GA        ((SLuint32) 0x00000018)
373523f5352Sopenharmony_ci#define SL_CONTAINERTYPE_RM        ((SLuint32) 0x00000019)
374523f5352Sopenharmony_ci#define SL_CONTAINERTYPE_DMF        ((SLuint32) 0x0000001A)
375523f5352Sopenharmony_ci#define SL_CONTAINERTYPE_SMF        ((SLuint32) 0x0000001B)
376523f5352Sopenharmony_ci#define SL_CONTAINERTYPE_MOBILE_DLS    ((SLuint32) 0x0000001C)
377523f5352Sopenharmony_ci#define SL_CONTAINERTYPE_OGG    ((SLuint32) 0x0000001D)
378523f5352Sopenharmony_ci
379523f5352Sopenharmony_ci
380523f5352Sopenharmony_ci/** PCM-type-based data format definition where formatType must be SL_DATAFORMAT_PCM*/
381523f5352Sopenharmony_ci/* SLDataFormat_PCM IS DEPRECATED. Use SLDataFormat_PCM_EX instead. */
382523f5352Sopenharmony_citypedef struct SLDataFormat_PCM_ {
383523f5352Sopenharmony_ci    SLuint32         formatType;
384523f5352Sopenharmony_ci    SLuint32         numChannels;
385523f5352Sopenharmony_ci    SLuint32         samplesPerSec;
386523f5352Sopenharmony_ci    SLuint32         bitsPerSample;
387523f5352Sopenharmony_ci    SLuint32         containerSize;
388523f5352Sopenharmony_ci    SLuint32         channelMask;
389523f5352Sopenharmony_ci    SLuint32        endianness;
390523f5352Sopenharmony_ci} SLDataFormat_PCM;
391523f5352Sopenharmony_ci
392523f5352Sopenharmony_ci/** PCM-type-based data format definition where formatType must be SL_DATAFORMAT_PCM_EX*/
393523f5352Sopenharmony_citypedef struct SLDataFormat_PCM_EX_ {
394523f5352Sopenharmony_ci    SLuint32         formatType;
395523f5352Sopenharmony_ci    SLuint32         numChannels;
396523f5352Sopenharmony_ci    SLuint32         sampleRate;
397523f5352Sopenharmony_ci    SLuint32         bitsPerSample;
398523f5352Sopenharmony_ci    SLuint32         containerSize;
399523f5352Sopenharmony_ci    SLuint32         channelMask;
400523f5352Sopenharmony_ci    SLuint32        endianness;
401523f5352Sopenharmony_ci    SLuint32        representation;
402523f5352Sopenharmony_ci} SLDataFormat_PCM_EX;
403523f5352Sopenharmony_ci
404523f5352Sopenharmony_ci/** MediaObject-type-based data format definition where formatType must be SL_DATAFORMAT_MEDIAOBJECT*/
405523f5352Sopenharmony_citypedef struct SLDataLocator_MediaObject_ {
406523f5352Sopenharmony_ci    SLuint32 locatorType;
407523f5352Sopenharmony_ci    SLObjectItf mediaObject;
408523f5352Sopenharmony_ci} SLDataLocator_MediaObject;
409523f5352Sopenharmony_ci
410523f5352Sopenharmony_ci/** NULL-type-based data format definition where formatType must be SL_DATAFORMAT_NULL*/
411523f5352Sopenharmony_citypedef struct SLDataLocator_Null_ {
412523f5352Sopenharmony_ci    SLuint32 locatorType;
413523f5352Sopenharmony_ci} SLDataLocator_Null;
414523f5352Sopenharmony_ci
415523f5352Sopenharmony_ci
416523f5352Sopenharmony_citypedef struct SLDataSource_ {
417523f5352Sopenharmony_ci    void *pLocator;
418523f5352Sopenharmony_ci    void *pFormat;
419523f5352Sopenharmony_ci} SLDataSource;
420523f5352Sopenharmony_ci
421523f5352Sopenharmony_ci
422523f5352Sopenharmony_citypedef struct SLDataSink_ {
423523f5352Sopenharmony_ci    void *pLocator;
424523f5352Sopenharmony_ci    void *pFormat;
425523f5352Sopenharmony_ci} SLDataSink;
426523f5352Sopenharmony_ci
427523f5352Sopenharmony_ci/*---------------------------------------------------------------------------*/
428523f5352Sopenharmony_ci/* Standard Object Interface                                                 */
429523f5352Sopenharmony_ci/*---------------------------------------------------------------------------*/
430523f5352Sopenharmony_ci
431523f5352Sopenharmony_ciSL_API extern const SLInterfaceID SL_IID_OBJECT;
432523f5352Sopenharmony_ci
433523f5352Sopenharmony_ci/** Object callback */
434523f5352Sopenharmony_ci
435523f5352Sopenharmony_ci
436523f5352Sopenharmony_citypedef void (SLAPIENTRY *slObjectCallback) (
437523f5352Sopenharmony_ci    SLObjectItf caller,
438523f5352Sopenharmony_ci    const void * pContext,
439523f5352Sopenharmony_ci    SLuint32 event,
440523f5352Sopenharmony_ci    SLresult result,
441523f5352Sopenharmony_ci    SLuint32 param,
442523f5352Sopenharmony_ci    void *pInterface
443523f5352Sopenharmony_ci);
444523f5352Sopenharmony_ci
445523f5352Sopenharmony_ci
446523f5352Sopenharmony_cistruct SLObjectItf_ {
447523f5352Sopenharmony_ci    SLresult (*Realize) (
448523f5352Sopenharmony_ci        SLObjectItf self,
449523f5352Sopenharmony_ci        SLboolean async
450523f5352Sopenharmony_ci    );
451523f5352Sopenharmony_ci    SLresult (*Resume) (
452523f5352Sopenharmony_ci        SLObjectItf self,
453523f5352Sopenharmony_ci        SLboolean async
454523f5352Sopenharmony_ci    );
455523f5352Sopenharmony_ci    SLresult (*GetState) (
456523f5352Sopenharmony_ci        SLObjectItf self,
457523f5352Sopenharmony_ci        SLuint32 * pState
458523f5352Sopenharmony_ci    );
459523f5352Sopenharmony_ci    SLresult (*GetInterface) (
460523f5352Sopenharmony_ci        SLObjectItf self,
461523f5352Sopenharmony_ci        const SLInterfaceID iid,
462523f5352Sopenharmony_ci        void * pInterface
463523f5352Sopenharmony_ci    );
464523f5352Sopenharmony_ci    SLresult (*RegisterCallback) (
465523f5352Sopenharmony_ci        SLObjectItf self,
466523f5352Sopenharmony_ci        slObjectCallback callback,
467523f5352Sopenharmony_ci        void * pContext
468523f5352Sopenharmony_ci    );
469523f5352Sopenharmony_ci    void (*AbortAsyncOperation) (
470523f5352Sopenharmony_ci        SLObjectItf self
471523f5352Sopenharmony_ci    );
472523f5352Sopenharmony_ci    void (*Destroy) (
473523f5352Sopenharmony_ci        SLObjectItf self
474523f5352Sopenharmony_ci    );
475523f5352Sopenharmony_ci    SLresult (*SetPriority) (
476523f5352Sopenharmony_ci        SLObjectItf self,
477523f5352Sopenharmony_ci        SLuint32 priority
478523f5352Sopenharmony_ci    );
479523f5352Sopenharmony_ci    SLresult (*GetPriority) (
480523f5352Sopenharmony_ci        SLObjectItf self,
481523f5352Sopenharmony_ci        SLuint32 *pPriority
482523f5352Sopenharmony_ci    );
483523f5352Sopenharmony_ci    SLresult (*SetLossOfControlInterfaces) (
484523f5352Sopenharmony_ci        SLObjectItf self,
485523f5352Sopenharmony_ci        SLuint16 numInterfaces,
486523f5352Sopenharmony_ci        const SLInterfaceID * pInterfaceIDs,
487523f5352Sopenharmony_ci        SLboolean enabled
488523f5352Sopenharmony_ci    );
489523f5352Sopenharmony_ci};
490523f5352Sopenharmony_ci
491523f5352Sopenharmony_ci
492523f5352Sopenharmony_ci/*---------------------------------------------------------------------------*/
493523f5352Sopenharmony_ci/* Audio IO Device capabilities interface                                    */
494523f5352Sopenharmony_ci/*---------------------------------------------------------------------------*/
495523f5352Sopenharmony_ci
496523f5352Sopenharmony_ci#define SL_DEFAULTDEVICEID_AUDIOINPUT     ((SLuint32) 0xFFFFFFFF)
497523f5352Sopenharmony_ci#define SL_DEFAULTDEVICEID_AUDIOOUTPUT     ((SLuint32) 0xFFFFFFFE)
498523f5352Sopenharmony_ci#define SL_DEFAULTDEVICEID_LED          ((SLuint32) 0xFFFFFFFD)
499523f5352Sopenharmony_ci#define SL_DEFAULTDEVICEID_VIBRA        ((SLuint32) 0xFFFFFFFC)
500523f5352Sopenharmony_ci#define SL_DEFAULTDEVICEID_RESERVED1    ((SLuint32) 0xFFFFFFFB)
501523f5352Sopenharmony_ci
502523f5352Sopenharmony_ci
503523f5352Sopenharmony_ci#define SL_DEVCONNECTION_INTEGRATED         ((SLint16) 0x0001)
504523f5352Sopenharmony_ci#define SL_DEVCONNECTION_ATTACHED_WIRED     ((SLint16) 0x0100)
505523f5352Sopenharmony_ci#define SL_DEVCONNECTION_ATTACHED_WIRELESS  ((SLint16) 0x0200)
506523f5352Sopenharmony_ci#define SL_DEVCONNECTION_NETWORK             ((SLint16) 0x0400)
507523f5352Sopenharmony_ci
508523f5352Sopenharmony_ci
509523f5352Sopenharmony_ci#define SL_DEVLOCATION_HANDSET     ((SLuint16) 0x0001)
510523f5352Sopenharmony_ci#define SL_DEVLOCATION_HEADSET     ((SLuint16) 0x0002)
511523f5352Sopenharmony_ci#define SL_DEVLOCATION_CARKIT     ((SLuint16) 0x0003)
512523f5352Sopenharmony_ci#define SL_DEVLOCATION_DOCK     ((SLuint16) 0x0004)
513523f5352Sopenharmony_ci#define SL_DEVLOCATION_REMOTE     ((SLuint16) 0x0005)
514523f5352Sopenharmony_ci/* Note: SL_DEVLOCATION_RESLTE is deprecated, use SL_DEVLOCATION_REMOTE instead. */
515523f5352Sopenharmony_ci#define SL_DEVLOCATION_RESLTE     ((SLuint16) 0x0005)
516523f5352Sopenharmony_ci
517523f5352Sopenharmony_ci
518523f5352Sopenharmony_ci#define SL_DEVSCOPE_UNKNOWN     ((SLuint16) 0x0001)
519523f5352Sopenharmony_ci#define SL_DEVSCOPE_ENVIRONMENT ((SLuint16) 0x0002)
520523f5352Sopenharmony_ci#define SL_DEVSCOPE_USER        ((SLuint16) 0x0003)
521523f5352Sopenharmony_ci
522523f5352Sopenharmony_ci
523523f5352Sopenharmony_citypedef struct SLAudioInputDescriptor_ {
524523f5352Sopenharmony_ci    SLchar *pDeviceName;
525523f5352Sopenharmony_ci    SLint16 deviceNameLength;
526523f5352Sopenharmony_ci    SLint16 deviceConnection;
527523f5352Sopenharmony_ci    SLint16 deviceScope;
528523f5352Sopenharmony_ci    SLint16 deviceLocation;
529523f5352Sopenharmony_ci    SLboolean isForTelephony;
530523f5352Sopenharmony_ci    SLmilliHertz minSampleRate;
531523f5352Sopenharmony_ci    SLmilliHertz maxSampleRate;
532523f5352Sopenharmony_ci    SLboolean isFreqRangeContinuous;
533523f5352Sopenharmony_ci    SLmilliHertz *pSamplingRatesSupported;
534523f5352Sopenharmony_ci    SLint16 numOfSamplingRatesSupported;
535523f5352Sopenharmony_ci    SLint16 maxChannels;
536523f5352Sopenharmony_ci} SLAudioInputDescriptor;
537523f5352Sopenharmony_ci
538523f5352Sopenharmony_ci
539523f5352Sopenharmony_citypedef struct SLAudioOutputDescriptor_ {
540523f5352Sopenharmony_ci    SLchar *pDeviceName;
541523f5352Sopenharmony_ci    SLint16 deviceNameLength;
542523f5352Sopenharmony_ci    SLint16 deviceConnection;
543523f5352Sopenharmony_ci    SLint16 deviceScope;
544523f5352Sopenharmony_ci    SLint16 deviceLocation;
545523f5352Sopenharmony_ci    SLboolean isForTelephony;
546523f5352Sopenharmony_ci    SLmilliHertz minSampleRate;
547523f5352Sopenharmony_ci    SLmilliHertz maxSampleRate;
548523f5352Sopenharmony_ci    SLboolean isFreqRangeContinuous;
549523f5352Sopenharmony_ci    SLmilliHertz *pSamplingRatesSupported;
550523f5352Sopenharmony_ci    SLint16 numOfSamplingRatesSupported;
551523f5352Sopenharmony_ci    SLint16 maxChannels;
552523f5352Sopenharmony_ci} SLAudioOutputDescriptor;
553523f5352Sopenharmony_ci
554523f5352Sopenharmony_ci
555523f5352Sopenharmony_ci
556523f5352Sopenharmony_ciSL_API extern const SLInterfaceID SL_IID_AUDIOIODEVICECAPABILITIES;
557523f5352Sopenharmony_ci
558523f5352Sopenharmony_cistruct SLAudioIODeviceCapabilitiesItf_;
559523f5352Sopenharmony_citypedef const struct SLAudioIODeviceCapabilitiesItf_ * const * SLAudioIODeviceCapabilitiesItf;
560523f5352Sopenharmony_ci
561523f5352Sopenharmony_ci
562523f5352Sopenharmony_citypedef void (SLAPIENTRY *slAvailableAudioInputsChangedCallback) (
563523f5352Sopenharmony_ci    SLAudioIODeviceCapabilitiesItf caller,
564523f5352Sopenharmony_ci    void *pContext,
565523f5352Sopenharmony_ci    SLuint32 deviceID,
566523f5352Sopenharmony_ci    SLuint32 numInputs,
567523f5352Sopenharmony_ci    SLboolean isNew
568523f5352Sopenharmony_ci);
569523f5352Sopenharmony_ci
570523f5352Sopenharmony_ci
571523f5352Sopenharmony_citypedef void (SLAPIENTRY *slAvailableAudioOutputsChangedCallback) (
572523f5352Sopenharmony_ci    SLAudioIODeviceCapabilitiesItf caller,
573523f5352Sopenharmony_ci    void *pContext,
574523f5352Sopenharmony_ci    SLuint32 deviceID,
575523f5352Sopenharmony_ci    SLuint32 numOutputs,
576523f5352Sopenharmony_ci    SLboolean isNew
577523f5352Sopenharmony_ci);
578523f5352Sopenharmony_ci
579523f5352Sopenharmony_citypedef void (SLAPIENTRY *slDefaultDeviceIDMapChangedCallback) (
580523f5352Sopenharmony_ci    SLAudioIODeviceCapabilitiesItf caller,
581523f5352Sopenharmony_ci    void *pContext,
582523f5352Sopenharmony_ci    SLboolean isOutput,
583523f5352Sopenharmony_ci    SLuint32 numDevices
584523f5352Sopenharmony_ci);
585523f5352Sopenharmony_ci
586523f5352Sopenharmony_ci
587523f5352Sopenharmony_cistruct SLAudioIODeviceCapabilitiesItf_ {
588523f5352Sopenharmony_ci    SLresult (*GetAvailableAudioInputs)(
589523f5352Sopenharmony_ci        SLAudioIODeviceCapabilitiesItf self,
590523f5352Sopenharmony_ci        SLuint32  *pNumInputs,
591523f5352Sopenharmony_ci        SLuint32 *pInputDeviceIDs
592523f5352Sopenharmony_ci    );
593523f5352Sopenharmony_ci    SLresult (*QueryAudioInputCapabilities)(
594523f5352Sopenharmony_ci        SLAudioIODeviceCapabilitiesItf self,
595523f5352Sopenharmony_ci        SLuint32 deviceId,
596523f5352Sopenharmony_ci        SLAudioInputDescriptor *pDescriptor
597523f5352Sopenharmony_ci    );
598523f5352Sopenharmony_ci    SLresult (*RegisterAvailableAudioInputsChangedCallback) (
599523f5352Sopenharmony_ci        SLAudioIODeviceCapabilitiesItf self,
600523f5352Sopenharmony_ci        slAvailableAudioInputsChangedCallback callback,
601523f5352Sopenharmony_ci        void *pContext
602523f5352Sopenharmony_ci    );
603523f5352Sopenharmony_ci    SLresult (*GetAvailableAudioOutputs)(
604523f5352Sopenharmony_ci        SLAudioIODeviceCapabilitiesItf self,
605523f5352Sopenharmony_ci        SLuint32 *pNumOutputs,
606523f5352Sopenharmony_ci        SLuint32 *pOutputDeviceIDs
607523f5352Sopenharmony_ci    );
608523f5352Sopenharmony_ci    SLresult (*QueryAudioOutputCapabilities)(
609523f5352Sopenharmony_ci        SLAudioIODeviceCapabilitiesItf self,
610523f5352Sopenharmony_ci        SLuint32 deviceId,
611523f5352Sopenharmony_ci        SLAudioOutputDescriptor *pDescriptor
612523f5352Sopenharmony_ci    );
613523f5352Sopenharmony_ci    SLresult (*RegisterAvailableAudioOutputsChangedCallback) (
614523f5352Sopenharmony_ci        SLAudioIODeviceCapabilitiesItf self,
615523f5352Sopenharmony_ci        slAvailableAudioOutputsChangedCallback callback,
616523f5352Sopenharmony_ci        void *pContext
617523f5352Sopenharmony_ci    );
618523f5352Sopenharmony_ci    SLresult (*RegisterDefaultDeviceIDMapChangedCallback) (
619523f5352Sopenharmony_ci        SLAudioIODeviceCapabilitiesItf self,
620523f5352Sopenharmony_ci        slDefaultDeviceIDMapChangedCallback callback,
621523f5352Sopenharmony_ci        void *pContext
622523f5352Sopenharmony_ci    );
623523f5352Sopenharmony_ci    SLresult (*GetAssociatedAudioInputs) (
624523f5352Sopenharmony_ci        SLAudioIODeviceCapabilitiesItf self,
625523f5352Sopenharmony_ci        SLuint32 deviceId,
626523f5352Sopenharmony_ci        SLuint32 *pNumAudioInputs,
627523f5352Sopenharmony_ci        SLuint32 *pAudioInputDeviceIDs
628523f5352Sopenharmony_ci    );
629523f5352Sopenharmony_ci    SLresult (*GetAssociatedAudioOutputs) (
630523f5352Sopenharmony_ci        SLAudioIODeviceCapabilitiesItf self,
631523f5352Sopenharmony_ci        SLuint32 deviceId,
632523f5352Sopenharmony_ci        SLuint32 *pNumAudioOutputs,
633523f5352Sopenharmony_ci        SLuint32 *pAudioOutputDeviceIDs
634523f5352Sopenharmony_ci    );
635523f5352Sopenharmony_ci    SLresult (*GetDefaultAudioDevices) (
636523f5352Sopenharmony_ci        SLAudioIODeviceCapabilitiesItf self,
637523f5352Sopenharmony_ci        SLuint32 defaultDeviceID,
638523f5352Sopenharmony_ci        SLuint32 *pNumAudioDevices,
639523f5352Sopenharmony_ci        SLuint32 *pAudioDeviceIDs
640523f5352Sopenharmony_ci    );
641523f5352Sopenharmony_ci    SLresult (*QuerySampleFormatsSupported)(
642523f5352Sopenharmony_ci        SLAudioIODeviceCapabilitiesItf self,
643523f5352Sopenharmony_ci        SLuint32 deviceId,
644523f5352Sopenharmony_ci        SLmilliHertz samplingRate,
645523f5352Sopenharmony_ci        SLint32 *pSampleFormats,
646523f5352Sopenharmony_ci        SLuint32 *pNumOfSampleFormats
647523f5352Sopenharmony_ci    );
648523f5352Sopenharmony_ci};
649523f5352Sopenharmony_ci
650523f5352Sopenharmony_ci
651523f5352Sopenharmony_ci
652523f5352Sopenharmony_ci/*---------------------------------------------------------------------------*/
653523f5352Sopenharmony_ci/* Capabilities of the LED array IODevice                                    */
654523f5352Sopenharmony_ci/*---------------------------------------------------------------------------*/
655523f5352Sopenharmony_ci
656523f5352Sopenharmony_citypedef struct SLLEDDescriptor_ {
657523f5352Sopenharmony_ci    SLuint8   ledCount;
658523f5352Sopenharmony_ci    SLuint8   primaryLED;
659523f5352Sopenharmony_ci    SLuint32  colorMask;
660523f5352Sopenharmony_ci} SLLEDDescriptor;
661523f5352Sopenharmony_ci
662523f5352Sopenharmony_ci
663523f5352Sopenharmony_ci/*---------------------------------------------------------------------------*/
664523f5352Sopenharmony_ci/* LED Array interface                                                       */
665523f5352Sopenharmony_ci/*---------------------------------------------------------------------------*/
666523f5352Sopenharmony_ci
667523f5352Sopenharmony_citypedef struct SLHSL_ {
668523f5352Sopenharmony_ci    SLmillidegree  hue;
669523f5352Sopenharmony_ci    SLpermille     saturation;
670523f5352Sopenharmony_ci    SLpermille     lightness;
671523f5352Sopenharmony_ci} SLHSL;
672523f5352Sopenharmony_ci
673523f5352Sopenharmony_ci
674523f5352Sopenharmony_ciSL_API extern const SLInterfaceID SL_IID_LED;
675523f5352Sopenharmony_ci
676523f5352Sopenharmony_cistruct SLLEDArrayItf_;
677523f5352Sopenharmony_citypedef const struct SLLEDArrayItf_ * const * SLLEDArrayItf;
678523f5352Sopenharmony_ci
679523f5352Sopenharmony_cistruct SLLEDArrayItf_ {
680523f5352Sopenharmony_ci    SLresult (*ActivateLEDArray) (
681523f5352Sopenharmony_ci        SLLEDArrayItf self,
682523f5352Sopenharmony_ci        SLuint32 lightMask
683523f5352Sopenharmony_ci    );
684523f5352Sopenharmony_ci    SLresult (*IsLEDArrayActivated) (
685523f5352Sopenharmony_ci        SLLEDArrayItf self,
686523f5352Sopenharmony_ci        SLuint32 *lightMask
687523f5352Sopenharmony_ci    );
688523f5352Sopenharmony_ci    SLresult (*SetColor) (
689523f5352Sopenharmony_ci        SLLEDArrayItf self,
690523f5352Sopenharmony_ci        SLuint8 index,
691523f5352Sopenharmony_ci        const SLHSL *color
692523f5352Sopenharmony_ci    );
693523f5352Sopenharmony_ci    SLresult (*GetColor) (
694523f5352Sopenharmony_ci        SLLEDArrayItf self,
695523f5352Sopenharmony_ci        SLuint8 index,
696523f5352Sopenharmony_ci        SLHSL *color
697523f5352Sopenharmony_ci    );
698523f5352Sopenharmony_ci};
699523f5352Sopenharmony_ci
700523f5352Sopenharmony_ci/*---------------------------------------------------------------------------*/
701523f5352Sopenharmony_ci/* Capabilities of the Vibra IODevice                                        */
702523f5352Sopenharmony_ci/*---------------------------------------------------------------------------*/
703523f5352Sopenharmony_ci
704523f5352Sopenharmony_citypedef struct SLVibraDescriptor_ {
705523f5352Sopenharmony_ci    SLboolean supportsFrequency;
706523f5352Sopenharmony_ci    SLboolean supportsIntensity;
707523f5352Sopenharmony_ci    SLmilliHertz  minFrequency;
708523f5352Sopenharmony_ci    SLmilliHertz  maxFrequency;
709523f5352Sopenharmony_ci} SLVibraDescriptor;
710523f5352Sopenharmony_ci
711523f5352Sopenharmony_ci
712523f5352Sopenharmony_ci
713523f5352Sopenharmony_ci/*---------------------------------------------------------------------------*/
714523f5352Sopenharmony_ci/* Vibra interface                                                           */
715523f5352Sopenharmony_ci/*---------------------------------------------------------------------------*/
716523f5352Sopenharmony_ci
717523f5352Sopenharmony_ci
718523f5352Sopenharmony_ciSL_API extern const SLInterfaceID SL_IID_VIBRA;
719523f5352Sopenharmony_ci
720523f5352Sopenharmony_ci
721523f5352Sopenharmony_cistruct SLVibraItf_;
722523f5352Sopenharmony_citypedef const struct SLVibraItf_ * const * SLVibraItf;
723523f5352Sopenharmony_ci
724523f5352Sopenharmony_cistruct SLVibraItf_ {
725523f5352Sopenharmony_ci    SLresult (*Vibrate) (
726523f5352Sopenharmony_ci        SLVibraItf self,
727523f5352Sopenharmony_ci        SLboolean vibrate
728523f5352Sopenharmony_ci    );
729523f5352Sopenharmony_ci    SLresult (*IsVibrating) (
730523f5352Sopenharmony_ci        SLVibraItf self,
731523f5352Sopenharmony_ci        SLboolean *pVibrating
732523f5352Sopenharmony_ci    );
733523f5352Sopenharmony_ci    SLresult (*SetFrequency) (
734523f5352Sopenharmony_ci        SLVibraItf self,
735523f5352Sopenharmony_ci        SLmilliHertz frequency
736523f5352Sopenharmony_ci    );
737523f5352Sopenharmony_ci    SLresult (*GetFrequency) (
738523f5352Sopenharmony_ci        SLVibraItf self,
739523f5352Sopenharmony_ci        SLmilliHertz *pFrequency
740523f5352Sopenharmony_ci    );
741523f5352Sopenharmony_ci    SLresult (*SetIntensity) (
742523f5352Sopenharmony_ci        SLVibraItf self,
743523f5352Sopenharmony_ci        SLpermille intensity
744523f5352Sopenharmony_ci    );
745523f5352Sopenharmony_ci    SLresult (*GetIntensity) (
746523f5352Sopenharmony_ci        SLVibraItf self,
747523f5352Sopenharmony_ci        SLpermille *pIntensity
748523f5352Sopenharmony_ci    );
749523f5352Sopenharmony_ci};
750523f5352Sopenharmony_ci
751523f5352Sopenharmony_ci
752523f5352Sopenharmony_ci/*---------------------------------------------------------------------------*/
753523f5352Sopenharmony_ci/* Meta data extraction related types and interface                          */
754523f5352Sopenharmony_ci/*---------------------------------------------------------------------------*/
755523f5352Sopenharmony_ci
756523f5352Sopenharmony_ci#define SL_CHARACTERENCODING_UNKNOWN            ((SLuint32) 0x00000000)
757523f5352Sopenharmony_ci#define SL_CHARACTERENCODING_BINARY       ((SLuint32) 0x00000001)
758523f5352Sopenharmony_ci#define SL_CHARACTERENCODING_ASCII        ((SLuint32) 0x00000002)
759523f5352Sopenharmony_ci#define SL_CHARACTERENCODING_BIG5         ((SLuint32) 0x00000003)
760523f5352Sopenharmony_ci#define SL_CHARACTERENCODING_CODEPAGE1252        ((SLuint32) 0x00000004)
761523f5352Sopenharmony_ci#define SL_CHARACTERENCODING_GB2312            ((SLuint32) 0x00000005)
762523f5352Sopenharmony_ci#define SL_CHARACTERENCODING_HZGB2312            ((SLuint32) 0x00000006)
763523f5352Sopenharmony_ci#define SL_CHARACTERENCODING_GB12345            ((SLuint32) 0x00000007)
764523f5352Sopenharmony_ci#define SL_CHARACTERENCODING_GB18030            ((SLuint32) 0x00000008)
765523f5352Sopenharmony_ci#define SL_CHARACTERENCODING_GBK                ((SLuint32) 0x00000009)
766523f5352Sopenharmony_ci#define SL_CHARACTERENCODING_IMAPUTF7            ((SLuint32) 0x0000000A)
767523f5352Sopenharmony_ci#define SL_CHARACTERENCODING_ISO2022JP            ((SLuint32) 0x0000000B)
768523f5352Sopenharmony_ci#define SL_CHARACTERENCODING_ISO2022JP1        ((SLuint32) 0x0000000B)
769523f5352Sopenharmony_ci#define SL_CHARACTERENCODING_ISO88591            ((SLuint32) 0x0000000C)
770523f5352Sopenharmony_ci#define SL_CHARACTERENCODING_ISO885910            ((SLuint32) 0x0000000D)
771523f5352Sopenharmony_ci#define SL_CHARACTERENCODING_ISO885913            ((SLuint32) 0x0000000E)
772523f5352Sopenharmony_ci#define SL_CHARACTERENCODING_ISO885914            ((SLuint32) 0x0000000F)
773523f5352Sopenharmony_ci#define SL_CHARACTERENCODING_ISO885915            ((SLuint32) 0x00000010)
774523f5352Sopenharmony_ci#define SL_CHARACTERENCODING_ISO88592            ((SLuint32) 0x00000011)
775523f5352Sopenharmony_ci#define SL_CHARACTERENCODING_ISO88593            ((SLuint32) 0x00000012)
776523f5352Sopenharmony_ci#define SL_CHARACTERENCODING_ISO88594            ((SLuint32) 0x00000013)
777523f5352Sopenharmony_ci#define SL_CHARACTERENCODING_ISO88595            ((SLuint32) 0x00000014)
778523f5352Sopenharmony_ci#define SL_CHARACTERENCODING_ISO88596            ((SLuint32) 0x00000015)
779523f5352Sopenharmony_ci#define SL_CHARACTERENCODING_ISO88597            ((SLuint32) 0x00000016)
780523f5352Sopenharmony_ci#define SL_CHARACTERENCODING_ISO88598            ((SLuint32) 0x00000017)
781523f5352Sopenharmony_ci#define SL_CHARACTERENCODING_ISO88599            ((SLuint32) 0x00000018)
782523f5352Sopenharmony_ci#define SL_CHARACTERENCODING_ISOEUCJP            ((SLuint32) 0x00000019)
783523f5352Sopenharmony_ci#define SL_CHARACTERENCODING_SHIFTJIS            ((SLuint32) 0x0000001A)
784523f5352Sopenharmony_ci#define SL_CHARACTERENCODING_SMS7BIT            ((SLuint32) 0x0000001B)
785523f5352Sopenharmony_ci#define SL_CHARACTERENCODING_UTF7            ((SLuint32) 0x0000001C)
786523f5352Sopenharmony_ci#define SL_CHARACTERENCODING_UTF8            ((SLuint32) 0x0000001D)
787523f5352Sopenharmony_ci#define SL_CHARACTERENCODING_JAVACONFORMANTUTF8    ((SLuint32) 0x0000001E)
788523f5352Sopenharmony_ci#define SL_CHARACTERENCODING_UTF16BE            ((SLuint32) 0x0000001F)
789523f5352Sopenharmony_ci#define SL_CHARACTERENCODING_UTF16LE            ((SLuint32) 0x00000020)
790523f5352Sopenharmony_ci
791523f5352Sopenharmony_ci
792523f5352Sopenharmony_ci#define SL_METADATA_FILTER_KEY        ((SLuint8) 0x01)
793523f5352Sopenharmony_ci#define SL_METADATA_FILTER_LANG        ((SLuint8) 0x02)
794523f5352Sopenharmony_ci#define SL_METADATA_FILTER_ENCODING    ((SLuint8) 0x04)
795523f5352Sopenharmony_ci
796523f5352Sopenharmony_ci
797523f5352Sopenharmony_citypedef struct SLMetadataInfo_ {
798523f5352Sopenharmony_ci    SLuint32     size;
799523f5352Sopenharmony_ci    SLuint32     encoding;
800523f5352Sopenharmony_ci    SLchar       langCountry[16];
801523f5352Sopenharmony_ci    SLuint8      data[1];
802523f5352Sopenharmony_ci} SLMetadataInfo;
803523f5352Sopenharmony_ci
804523f5352Sopenharmony_ciSL_API extern const SLInterfaceID SL_IID_METADATAEXTRACTION;
805523f5352Sopenharmony_ci
806523f5352Sopenharmony_cistruct SLMetadataExtractionItf_;
807523f5352Sopenharmony_citypedef const struct SLMetadataExtractionItf_ * const * SLMetadataExtractionItf;
808523f5352Sopenharmony_ci
809523f5352Sopenharmony_ci
810523f5352Sopenharmony_cistruct SLMetadataExtractionItf_ {
811523f5352Sopenharmony_ci    SLresult (*GetItemCount) (
812523f5352Sopenharmony_ci        SLMetadataExtractionItf self,
813523f5352Sopenharmony_ci        SLuint32 *pItemCount
814523f5352Sopenharmony_ci    );
815523f5352Sopenharmony_ci    SLresult (*GetKeySize) (
816523f5352Sopenharmony_ci        SLMetadataExtractionItf self,
817523f5352Sopenharmony_ci        SLuint32 index,
818523f5352Sopenharmony_ci        SLuint32 *pKeySize
819523f5352Sopenharmony_ci    );
820523f5352Sopenharmony_ci    SLresult (*GetKey) (
821523f5352Sopenharmony_ci        SLMetadataExtractionItf self,
822523f5352Sopenharmony_ci        SLuint32 index,
823523f5352Sopenharmony_ci        SLuint32 keySize,
824523f5352Sopenharmony_ci        SLMetadataInfo *pKey
825523f5352Sopenharmony_ci    );
826523f5352Sopenharmony_ci    SLresult (*GetValueSize) (
827523f5352Sopenharmony_ci        SLMetadataExtractionItf self,
828523f5352Sopenharmony_ci        SLuint32 index,
829523f5352Sopenharmony_ci        SLuint32 *pValueSize
830523f5352Sopenharmony_ci    );
831523f5352Sopenharmony_ci    SLresult (*GetValue) (
832523f5352Sopenharmony_ci        SLMetadataExtractionItf self,
833523f5352Sopenharmony_ci        SLuint32 index,
834523f5352Sopenharmony_ci        SLuint32 valueSize,
835523f5352Sopenharmony_ci        SLMetadataInfo *pValue
836523f5352Sopenharmony_ci    );
837523f5352Sopenharmony_ci    SLresult (*AddKeyFilter) (
838523f5352Sopenharmony_ci        SLMetadataExtractionItf self,
839523f5352Sopenharmony_ci        SLuint32 keySize,
840523f5352Sopenharmony_ci        const void *pKey,
841523f5352Sopenharmony_ci        SLuint32 keyEncoding,
842523f5352Sopenharmony_ci        const SLchar *pValueLangCountry,
843523f5352Sopenharmony_ci        SLuint32 valueEncoding,
844523f5352Sopenharmony_ci        SLuint8 filterMask
845523f5352Sopenharmony_ci    );
846523f5352Sopenharmony_ci    SLresult (*ClearKeyFilter) (
847523f5352Sopenharmony_ci        SLMetadataExtractionItf self
848523f5352Sopenharmony_ci    );
849523f5352Sopenharmony_ci};
850523f5352Sopenharmony_ci
851523f5352Sopenharmony_ci/*---------------------------------------------------------------------------*/
852523f5352Sopenharmony_ci/* Meta data message related types and interface                          */
853523f5352Sopenharmony_ci/*---------------------------------------------------------------------------*/
854523f5352Sopenharmony_ci
855523f5352Sopenharmony_ciSL_API extern const SLInterfaceID SL_IID_METADATAMESSAGE;
856523f5352Sopenharmony_ci
857523f5352Sopenharmony_cistruct SLMetadataMessageItf_;
858523f5352Sopenharmony_citypedef const struct SLMetadataMessageItf_ * const * SLMetadataMessageItf;
859523f5352Sopenharmony_ci
860523f5352Sopenharmony_citypedef void (SLAPIENTRY *slMetadataCallback) (
861523f5352Sopenharmony_ci    SLMetadataMessageItf caller,
862523f5352Sopenharmony_ci    void *pContext,
863523f5352Sopenharmony_ci    SLuint32 index
864523f5352Sopenharmony_ci);
865523f5352Sopenharmony_ci
866523f5352Sopenharmony_cistruct SLMetadataMessageItf_ {
867523f5352Sopenharmony_ci    SLresult (*RegisterMetadataCallback) (
868523f5352Sopenharmony_ci        SLMetadataMessageItf self,
869523f5352Sopenharmony_ci        slMetadataCallback callback,
870523f5352Sopenharmony_ci        void *pContext
871523f5352Sopenharmony_ci    );
872523f5352Sopenharmony_ci};
873523f5352Sopenharmony_ci
874523f5352Sopenharmony_ci
875523f5352Sopenharmony_ci/*---------------------------------------------------------------------------*/
876523f5352Sopenharmony_ci/* Meta data traversal related types and interface                           */
877523f5352Sopenharmony_ci/*---------------------------------------------------------------------------*/
878523f5352Sopenharmony_ci
879523f5352Sopenharmony_ci#define SL_METADATATRAVERSALMODE_ALL    ((SLuint32) 0x00000001)
880523f5352Sopenharmony_ci#define SL_METADATATRAVERSALMODE_NODE    ((SLuint32) 0x00000002)
881523f5352Sopenharmony_ci
882523f5352Sopenharmony_ci
883523f5352Sopenharmony_ci#define SL_NODETYPE_UNSPECIFIED    ((SLuint32) 0x00000001)
884523f5352Sopenharmony_ci#define SL_NODETYPE_AUDIO        ((SLuint32) 0x00000002)
885523f5352Sopenharmony_ci#define SL_NODETYPE_VIDEO        ((SLuint32) 0x00000003)
886523f5352Sopenharmony_ci#define SL_NODETYPE_IMAGE        ((SLuint32) 0x00000004)
887523f5352Sopenharmony_ci
888523f5352Sopenharmony_ci#define SL_NODE_PARENT 0xFFFFFFFF
889523f5352Sopenharmony_ci
890523f5352Sopenharmony_ciSL_API extern const SLInterfaceID SL_IID_METADATATRAVERSAL;
891523f5352Sopenharmony_ci
892523f5352Sopenharmony_cistruct SLMetadataTraversalItf_;
893523f5352Sopenharmony_citypedef const struct SLMetadataTraversalItf_ * const * SLMetadataTraversalItf;
894523f5352Sopenharmony_ci
895523f5352Sopenharmony_cistruct SLMetadataTraversalItf_ {
896523f5352Sopenharmony_ci    SLresult (*SetMode) (
897523f5352Sopenharmony_ci        SLMetadataTraversalItf self,
898523f5352Sopenharmony_ci        SLuint32 mode
899523f5352Sopenharmony_ci    );
900523f5352Sopenharmony_ci    SLresult (*GetChildCount) (
901523f5352Sopenharmony_ci        SLMetadataTraversalItf self,
902523f5352Sopenharmony_ci        SLuint32 *pCount
903523f5352Sopenharmony_ci    );
904523f5352Sopenharmony_ci    SLresult (*GetChildMIMETypeSize) (
905523f5352Sopenharmony_ci        SLMetadataTraversalItf self,
906523f5352Sopenharmony_ci        SLuint32 index,
907523f5352Sopenharmony_ci        SLuint32 *pSize
908523f5352Sopenharmony_ci    );
909523f5352Sopenharmony_ci    SLresult (*GetChildInfo) (
910523f5352Sopenharmony_ci        SLMetadataTraversalItf self,
911523f5352Sopenharmony_ci        SLuint32 index,
912523f5352Sopenharmony_ci        SLint32 *pNodeID,
913523f5352Sopenharmony_ci        SLuint32 *pType,
914523f5352Sopenharmony_ci        SLuint32 size,
915523f5352Sopenharmony_ci        SLchar *pMimeType
916523f5352Sopenharmony_ci    );
917523f5352Sopenharmony_ci    SLresult (*SetActiveNode) (
918523f5352Sopenharmony_ci        SLMetadataTraversalItf self,
919523f5352Sopenharmony_ci        SLuint32 index
920523f5352Sopenharmony_ci    );
921523f5352Sopenharmony_ci};
922523f5352Sopenharmony_ci
923523f5352Sopenharmony_ci/*---------------------------------------------------------------------------*/
924523f5352Sopenharmony_ci/* Dynamic Source types and interface                                        */
925523f5352Sopenharmony_ci/*---------------------------------------------------------------------------*/
926523f5352Sopenharmony_ci
927523f5352Sopenharmony_ciSL_API extern const SLInterfaceID SL_IID_DYNAMICSOURCE;
928523f5352Sopenharmony_ci
929523f5352Sopenharmony_cistruct SLDynamicSourceItf_;
930523f5352Sopenharmony_citypedef const struct SLDynamicSourceItf_ * const * SLDynamicSourceItf;
931523f5352Sopenharmony_ci
932523f5352Sopenharmony_cistruct SLDynamicSourceItf_ {
933523f5352Sopenharmony_ci    SLresult (*SetSource) (
934523f5352Sopenharmony_ci        SLDynamicSourceItf self,
935523f5352Sopenharmony_ci        const SLDataSource *pDataSource
936523f5352Sopenharmony_ci    );
937523f5352Sopenharmony_ci};
938523f5352Sopenharmony_ci
939523f5352Sopenharmony_ci/*---------------------------------------------------------------------------*/
940523f5352Sopenharmony_ci/* Dynamic Source/Sink Change Interface                                      */
941523f5352Sopenharmony_ci/*---------------------------------------------------------------------------*/
942523f5352Sopenharmony_ciSL_API extern const SLInterfaceID SL_IID_DYNAMICSOURCESINKCHANGE;
943523f5352Sopenharmony_ci
944523f5352Sopenharmony_cistruct SLDynamicSourceSinkChangeItf_;
945523f5352Sopenharmony_citypedef const struct SLDynamicSourceSinkChangeItf_ * const * SLDynamicSourceSinkChangeItf;
946523f5352Sopenharmony_ci
947523f5352Sopenharmony_citypedef void (SLAPIENTRY *slSourceChangeCallback)(
948523f5352Sopenharmony_ci    SLDynamicSourceSinkChangeItf caller,
949523f5352Sopenharmony_ci    void *pContext,
950523f5352Sopenharmony_ci    SLuint32 resultCode,
951523f5352Sopenharmony_ci    const SLDataSource *pExistingDataSource,
952523f5352Sopenharmony_ci    const SLDataSource *pNewDataSource
953523f5352Sopenharmony_ci);
954523f5352Sopenharmony_ci
955523f5352Sopenharmony_citypedef void (SLAPIENTRY *slSinkChangeCallback)(
956523f5352Sopenharmony_ci    SLDynamicSourceSinkChangeItf caller,
957523f5352Sopenharmony_ci    void *pContext,
958523f5352Sopenharmony_ci    SLuint32 resultCode,
959523f5352Sopenharmony_ci    const SLDataSource *pExistingDataSink,
960523f5352Sopenharmony_ci    const SLDataSource *pNewDataSink
961523f5352Sopenharmony_ci);
962523f5352Sopenharmony_ci
963523f5352Sopenharmony_cistruct SLDynamicSourceSinkChangeItf_ {
964523f5352Sopenharmony_ci    SLresult (*ChangeSource) (
965523f5352Sopenharmony_ci        SLDynamicSourceSinkChangeItf self,
966523f5352Sopenharmony_ci        const SLDataSource * pExistingDataSource,
967523f5352Sopenharmony_ci        const SLDataSource * pNewDataSource,
968523f5352Sopenharmony_ci        SLboolean async
969523f5352Sopenharmony_ci    );
970523f5352Sopenharmony_ci    SLresult (*ChangeSink) (
971523f5352Sopenharmony_ci        SLDynamicSourceSinkChangeItf self,
972523f5352Sopenharmony_ci        const SLDataSink * pExistingDataSink,
973523f5352Sopenharmony_ci        const SLDataSink * pNewDataSink,
974523f5352Sopenharmony_ci        SLboolean async
975523f5352Sopenharmony_ci    );
976523f5352Sopenharmony_ci    SLresult (*RegisterSourceChangeCallback) (
977523f5352Sopenharmony_ci        SLDynamicSourceSinkChangeItf self,
978523f5352Sopenharmony_ci        slSourceChangeCallback callback,
979523f5352Sopenharmony_ci        void * pContext
980523f5352Sopenharmony_ci    );
981523f5352Sopenharmony_ci    SLresult (*RegisterSinkChangeCallback) (
982523f5352Sopenharmony_ci        SLDynamicSourceSinkChangeItf self,
983523f5352Sopenharmony_ci        slSinkChangeCallback callback,
984523f5352Sopenharmony_ci        void * pContext
985523f5352Sopenharmony_ci    );
986523f5352Sopenharmony_ci};
987523f5352Sopenharmony_ci
988523f5352Sopenharmony_ci
989523f5352Sopenharmony_ci/*---------------------------------------------------------------------------*/
990523f5352Sopenharmony_ci/* Output Mix interface                                                      */
991523f5352Sopenharmony_ci/*---------------------------------------------------------------------------*/
992523f5352Sopenharmony_ci
993523f5352Sopenharmony_ciSL_API extern const SLInterfaceID SL_IID_OUTPUTMIX;
994523f5352Sopenharmony_ci
995523f5352Sopenharmony_cistruct SLOutputMixItf_;
996523f5352Sopenharmony_citypedef const struct SLOutputMixItf_ * const * SLOutputMixItf;
997523f5352Sopenharmony_ci
998523f5352Sopenharmony_citypedef void (SLAPIENTRY *slMixDeviceChangeCallback) (
999523f5352Sopenharmony_ci    SLOutputMixItf caller,
1000523f5352Sopenharmony_ci    void *pContext
1001523f5352Sopenharmony_ci);
1002523f5352Sopenharmony_ci
1003523f5352Sopenharmony_ci
1004523f5352Sopenharmony_cistruct SLOutputMixItf_ {
1005523f5352Sopenharmony_ci    SLresult (*GetDestinationOutputDeviceIDs) (
1006523f5352Sopenharmony_ci        SLOutputMixItf self,
1007523f5352Sopenharmony_ci        SLint32 *pNumDevices,
1008523f5352Sopenharmony_ci        SLuint32 *pDeviceIDs
1009523f5352Sopenharmony_ci    );
1010523f5352Sopenharmony_ci    SLresult (*RegisterDeviceChangeCallback) (
1011523f5352Sopenharmony_ci        SLOutputMixItf self,
1012523f5352Sopenharmony_ci        slMixDeviceChangeCallback callback,
1013523f5352Sopenharmony_ci        void *pContext
1014523f5352Sopenharmony_ci    );
1015523f5352Sopenharmony_ci    SLresult (*ReRoute)(
1016523f5352Sopenharmony_ci        SLOutputMixItf self,
1017523f5352Sopenharmony_ci        SLint32 numOutputDevices,
1018523f5352Sopenharmony_ci        SLuint32 *pOutputDeviceIDs
1019523f5352Sopenharmony_ci    );
1020523f5352Sopenharmony_ci};
1021523f5352Sopenharmony_ci
1022523f5352Sopenharmony_ci
1023523f5352Sopenharmony_ci/*---------------------------------------------------------------------------*/
1024523f5352Sopenharmony_ci/* Playback interface                                                        */
1025523f5352Sopenharmony_ci/*---------------------------------------------------------------------------*/
1026523f5352Sopenharmony_ci
1027523f5352Sopenharmony_ci/** Playback states */
1028523f5352Sopenharmony_ci#define SL_PLAYSTATE_STOPPED    ((SLuint32) 0x00000001)
1029523f5352Sopenharmony_ci#define SL_PLAYSTATE_PAUSED    ((SLuint32) 0x00000002)
1030523f5352Sopenharmony_ci#define SL_PLAYSTATE_PLAYING    ((SLuint32) 0x00000003)
1031523f5352Sopenharmony_ci
1032523f5352Sopenharmony_ci/** Play events **/
1033523f5352Sopenharmony_ci#define SL_PLAYEVENT_HEADATEND            ((SLuint32) 0x00000001)
1034523f5352Sopenharmony_ci#define SL_PLAYEVENT_HEADATMARKER        ((SLuint32) 0x00000002)
1035523f5352Sopenharmony_ci#define SL_PLAYEVENT_HEADATNEWPOS        ((SLuint32) 0x00000004)
1036523f5352Sopenharmony_ci#define SL_PLAYEVENT_HEADMOVING            ((SLuint32) 0x00000008)
1037523f5352Sopenharmony_ci#define SL_PLAYEVENT_HEADSTALLED        ((SLuint32) 0x00000010)
1038523f5352Sopenharmony_ci#define SL_PLAYEVENT_DURATIONUPDATED    ((SLuint32) 0x00000020)
1039523f5352Sopenharmony_ci
1040523f5352Sopenharmony_ci#define SL_TIME_UNKNOWN    ((SLuint32) 0xFFFFFFFF)
1041523f5352Sopenharmony_ci
1042523f5352Sopenharmony_ci
1043523f5352Sopenharmony_ciSL_API extern const SLInterfaceID SL_IID_PLAY;
1044523f5352Sopenharmony_ci
1045523f5352Sopenharmony_ci/** Playback interface methods */
1046523f5352Sopenharmony_ci
1047523f5352Sopenharmony_cistruct SLPlayItf_;
1048523f5352Sopenharmony_citypedef const struct SLPlayItf_ * const * SLPlayItf;
1049523f5352Sopenharmony_ci
1050523f5352Sopenharmony_citypedef void (SLAPIENTRY *slPlayCallback) (
1051523f5352Sopenharmony_ci    SLPlayItf caller,
1052523f5352Sopenharmony_ci    void *pContext,
1053523f5352Sopenharmony_ci    SLuint32 event
1054523f5352Sopenharmony_ci);
1055523f5352Sopenharmony_ci
1056523f5352Sopenharmony_cistruct SLPlayItf_ {
1057523f5352Sopenharmony_ci    SLresult (*SetPlayState) (
1058523f5352Sopenharmony_ci        SLPlayItf self,
1059523f5352Sopenharmony_ci        SLuint32 state
1060523f5352Sopenharmony_ci    );
1061523f5352Sopenharmony_ci    SLresult (*GetPlayState) (
1062523f5352Sopenharmony_ci        SLPlayItf self,
1063523f5352Sopenharmony_ci        SLuint32 *pState
1064523f5352Sopenharmony_ci    );
1065523f5352Sopenharmony_ci    SLresult (*GetDuration) (
1066523f5352Sopenharmony_ci        SLPlayItf self,
1067523f5352Sopenharmony_ci        SLmillisecond *pMsec
1068523f5352Sopenharmony_ci    );
1069523f5352Sopenharmony_ci    SLresult (*GetPosition) (
1070523f5352Sopenharmony_ci        SLPlayItf self,
1071523f5352Sopenharmony_ci        SLmillisecond *pMsec
1072523f5352Sopenharmony_ci    );
1073523f5352Sopenharmony_ci    SLresult (*RegisterCallback) (
1074523f5352Sopenharmony_ci        SLPlayItf self,
1075523f5352Sopenharmony_ci        slPlayCallback callback,
1076523f5352Sopenharmony_ci        void *pContext
1077523f5352Sopenharmony_ci    );
1078523f5352Sopenharmony_ci    SLresult (*SetCallbackEventsMask) (
1079523f5352Sopenharmony_ci        SLPlayItf self,
1080523f5352Sopenharmony_ci        SLuint32 eventFlags
1081523f5352Sopenharmony_ci    );
1082523f5352Sopenharmony_ci    SLresult (*GetCallbackEventsMask) (
1083523f5352Sopenharmony_ci        SLPlayItf self,
1084523f5352Sopenharmony_ci        SLuint32 *pEventFlags
1085523f5352Sopenharmony_ci    );
1086523f5352Sopenharmony_ci    SLresult (*SetMarkerPosition) (
1087523f5352Sopenharmony_ci        SLPlayItf self,
1088523f5352Sopenharmony_ci        SLmillisecond mSec
1089523f5352Sopenharmony_ci    );
1090523f5352Sopenharmony_ci    SLresult (*ClearMarkerPosition) (
1091523f5352Sopenharmony_ci        SLPlayItf self
1092523f5352Sopenharmony_ci    );
1093523f5352Sopenharmony_ci    SLresult (*GetMarkerPosition) (
1094523f5352Sopenharmony_ci        SLPlayItf self,
1095523f5352Sopenharmony_ci        SLmillisecond *pMsec
1096523f5352Sopenharmony_ci    );
1097523f5352Sopenharmony_ci    SLresult (*SetPositionUpdatePeriod) (
1098523f5352Sopenharmony_ci        SLPlayItf self,
1099523f5352Sopenharmony_ci        SLmillisecond mSec
1100523f5352Sopenharmony_ci    );
1101523f5352Sopenharmony_ci    SLresult (*GetPositionUpdatePeriod) (
1102523f5352Sopenharmony_ci        SLPlayItf self,
1103523f5352Sopenharmony_ci        SLmillisecond *pMsec
1104523f5352Sopenharmony_ci    );
1105523f5352Sopenharmony_ci};
1106523f5352Sopenharmony_ci
1107523f5352Sopenharmony_ci/*---------------------------------------------------------------------------*/
1108523f5352Sopenharmony_ci/* Prefetch status interface                                                 */
1109523f5352Sopenharmony_ci/*---------------------------------------------------------------------------*/
1110523f5352Sopenharmony_ci
1111523f5352Sopenharmony_ci#define SL_PREFETCHEVENT_STATUSCHANGE         ((SLuint32) 0x00000001)
1112523f5352Sopenharmony_ci#define SL_PREFETCHEVENT_FILLLEVELCHANGE     ((SLuint32) 0x00000002)
1113523f5352Sopenharmony_ci#define SL_PREFETCHEVENT_ERROR               ((SLuint32) 0x00000003)
1114523f5352Sopenharmony_ci#define SL_PREFETCHEVENT_ERROR_UNRECOVERABLE ((SLuint32) 0x00000004)
1115523f5352Sopenharmony_ci
1116523f5352Sopenharmony_ci
1117523f5352Sopenharmony_ci#define SL_PREFETCHSTATUS_UNDERFLOW            ((SLuint32) 0x00000001)
1118523f5352Sopenharmony_ci#define SL_PREFETCHSTATUS_SUFFICIENTDATA    ((SLuint32) 0x00000002)
1119523f5352Sopenharmony_ci#define SL_PREFETCHSTATUS_OVERFLOW            ((SLuint32) 0x00000003)
1120523f5352Sopenharmony_ci
1121523f5352Sopenharmony_ci
1122523f5352Sopenharmony_ciSL_API extern const SLInterfaceID SL_IID_PREFETCHSTATUS;
1123523f5352Sopenharmony_ci
1124523f5352Sopenharmony_ci
1125523f5352Sopenharmony_ci/** Prefetch status interface methods */
1126523f5352Sopenharmony_ci
1127523f5352Sopenharmony_cistruct SLPrefetchStatusItf_;
1128523f5352Sopenharmony_citypedef const struct SLPrefetchStatusItf_ * const * SLPrefetchStatusItf;
1129523f5352Sopenharmony_ci
1130523f5352Sopenharmony_citypedef void (SLAPIENTRY *slPrefetchCallback) (
1131523f5352Sopenharmony_ci    SLPrefetchStatusItf caller,
1132523f5352Sopenharmony_ci    void *pContext,
1133523f5352Sopenharmony_ci    SLuint32 event
1134523f5352Sopenharmony_ci);
1135523f5352Sopenharmony_ci
1136523f5352Sopenharmony_cistruct SLPrefetchStatusItf_ {
1137523f5352Sopenharmony_ci    SLresult (*GetPrefetchStatus) (
1138523f5352Sopenharmony_ci        SLPrefetchStatusItf self,
1139523f5352Sopenharmony_ci        SLuint32 *pStatus
1140523f5352Sopenharmony_ci    );
1141523f5352Sopenharmony_ci    SLresult (*GetFillLevel) (
1142523f5352Sopenharmony_ci        SLPrefetchStatusItf self,
1143523f5352Sopenharmony_ci        SLpermille *pLevel
1144523f5352Sopenharmony_ci    );
1145523f5352Sopenharmony_ci    SLresult (*RegisterCallback) (
1146523f5352Sopenharmony_ci        SLPrefetchStatusItf self,
1147523f5352Sopenharmony_ci        slPrefetchCallback callback,
1148523f5352Sopenharmony_ci        void *pContext
1149523f5352Sopenharmony_ci    );
1150523f5352Sopenharmony_ci    SLresult (*SetCallbackEventsMask) (
1151523f5352Sopenharmony_ci        SLPrefetchStatusItf self,
1152523f5352Sopenharmony_ci        SLuint32 eventFlags
1153523f5352Sopenharmony_ci    );
1154523f5352Sopenharmony_ci    SLresult (*GetCallbackEventsMask) (
1155523f5352Sopenharmony_ci        SLPrefetchStatusItf self,
1156523f5352Sopenharmony_ci        SLuint32 *pEventFlags
1157523f5352Sopenharmony_ci    );
1158523f5352Sopenharmony_ci    SLresult (*SetFillUpdatePeriod) (
1159523f5352Sopenharmony_ci        SLPrefetchStatusItf self,
1160523f5352Sopenharmony_ci        SLpermille period
1161523f5352Sopenharmony_ci    );
1162523f5352Sopenharmony_ci    SLresult (*GetFillUpdatePeriod) (
1163523f5352Sopenharmony_ci        SLPrefetchStatusItf self,
1164523f5352Sopenharmony_ci        SLpermille *pPeriod
1165523f5352Sopenharmony_ci    );
1166523f5352Sopenharmony_ci    SLresult (*GetError) (
1167523f5352Sopenharmony_ci        SLPrefetchStatusItf self,
1168523f5352Sopenharmony_ci        SLresult *pResult
1169523f5352Sopenharmony_ci    );
1170523f5352Sopenharmony_ci};
1171523f5352Sopenharmony_ci
1172523f5352Sopenharmony_ci/*---------------------------------------------------------------------------*/
1173523f5352Sopenharmony_ci/* Playback Rate interface                                                   */
1174523f5352Sopenharmony_ci/*---------------------------------------------------------------------------*/
1175523f5352Sopenharmony_ci
1176523f5352Sopenharmony_ci#define SL_RATEPROP_RESERVED1                  ((SLuint32) 0x00000001)
1177523f5352Sopenharmony_ci#define SL_RATEPROP_RESERVED2                  ((SLuint32) 0x00000002)
1178523f5352Sopenharmony_ci#define SL_RATEPROP_SILENTAUDIO                ((SLuint32) 0x00000100)
1179523f5352Sopenharmony_ci#define SL_RATEPROP_STAGGEREDAUDIO    ((SLuint32) 0x00000200)
1180523f5352Sopenharmony_ci#define SL_RATEPROP_NOPITCHCORAUDIO    ((SLuint32) 0x00000400)
1181523f5352Sopenharmony_ci#define SL_RATEPROP_PITCHCORAUDIO    ((SLuint32) 0x00000800)
1182523f5352Sopenharmony_ci
1183523f5352Sopenharmony_ci
1184523f5352Sopenharmony_ciSL_API extern const SLInterfaceID SL_IID_PLAYBACKRATE;
1185523f5352Sopenharmony_ci
1186523f5352Sopenharmony_cistruct SLPlaybackRateItf_;
1187523f5352Sopenharmony_citypedef const struct SLPlaybackRateItf_ * const * SLPlaybackRateItf;
1188523f5352Sopenharmony_ci
1189523f5352Sopenharmony_cistruct SLPlaybackRateItf_ {
1190523f5352Sopenharmony_ci    SLresult (*SetRate)(
1191523f5352Sopenharmony_ci        SLPlaybackRateItf self,
1192523f5352Sopenharmony_ci        SLpermille rate
1193523f5352Sopenharmony_ci    );
1194523f5352Sopenharmony_ci    SLresult (*GetRate)(
1195523f5352Sopenharmony_ci        SLPlaybackRateItf self,
1196523f5352Sopenharmony_ci        SLpermille *pRate
1197523f5352Sopenharmony_ci    );
1198523f5352Sopenharmony_ci    SLresult (*SetPropertyConstraints)(
1199523f5352Sopenharmony_ci        SLPlaybackRateItf self,
1200523f5352Sopenharmony_ci        SLuint32 constraints
1201523f5352Sopenharmony_ci    );
1202523f5352Sopenharmony_ci    SLresult (*GetProperties)(
1203523f5352Sopenharmony_ci        SLPlaybackRateItf self,
1204523f5352Sopenharmony_ci        SLuint32 *pProperties
1205523f5352Sopenharmony_ci    );
1206523f5352Sopenharmony_ci    SLresult (*GetCapabilitiesOfRate)(
1207523f5352Sopenharmony_ci        SLPlaybackRateItf self,
1208523f5352Sopenharmony_ci        SLpermille rate,
1209523f5352Sopenharmony_ci        SLuint32 *pCapabilities
1210523f5352Sopenharmony_ci    );
1211523f5352Sopenharmony_ci    SLresult (*GetRateRange) (
1212523f5352Sopenharmony_ci        SLPlaybackRateItf self,
1213523f5352Sopenharmony_ci        SLuint8 index,
1214523f5352Sopenharmony_ci        SLpermille *pMinRate,
1215523f5352Sopenharmony_ci        SLpermille *pMaxRate,
1216523f5352Sopenharmony_ci        SLpermille *pStepSize,
1217523f5352Sopenharmony_ci        SLuint32 *pCapabilities
1218523f5352Sopenharmony_ci    );
1219523f5352Sopenharmony_ci};
1220523f5352Sopenharmony_ci
1221523f5352Sopenharmony_ci/*---------------------------------------------------------------------------*/
1222523f5352Sopenharmony_ci/* Seek Interface                                                            */
1223523f5352Sopenharmony_ci/*---------------------------------------------------------------------------*/
1224523f5352Sopenharmony_ci
1225523f5352Sopenharmony_ci#define SL_SEEKMODE_FAST        ((SLuint32) 0x0001)
1226523f5352Sopenharmony_ci#define SL_SEEKMODE_ACCURATE    ((SLuint32) 0x0002)
1227523f5352Sopenharmony_ci
1228523f5352Sopenharmony_ciSL_API extern const SLInterfaceID SL_IID_SEEK;
1229523f5352Sopenharmony_ci
1230523f5352Sopenharmony_cistruct SLSeekItf_;
1231523f5352Sopenharmony_citypedef const struct SLSeekItf_ * const * SLSeekItf;
1232523f5352Sopenharmony_ci
1233523f5352Sopenharmony_cistruct SLSeekItf_ {
1234523f5352Sopenharmony_ci    SLresult (*SetPosition)(
1235523f5352Sopenharmony_ci        SLSeekItf self,
1236523f5352Sopenharmony_ci        SLmillisecond pos,
1237523f5352Sopenharmony_ci        SLuint32 seekMode
1238523f5352Sopenharmony_ci    );
1239523f5352Sopenharmony_ci    SLresult (*SetLoop)(
1240523f5352Sopenharmony_ci        SLSeekItf self,
1241523f5352Sopenharmony_ci        SLboolean loopEnable,
1242523f5352Sopenharmony_ci        SLmillisecond startPos,
1243523f5352Sopenharmony_ci        SLmillisecond endPos
1244523f5352Sopenharmony_ci    );
1245523f5352Sopenharmony_ci    SLresult (*GetLoop)(
1246523f5352Sopenharmony_ci        SLSeekItf self,
1247523f5352Sopenharmony_ci        SLboolean *pLoopEnabled,
1248523f5352Sopenharmony_ci        SLmillisecond *pStartPos,
1249523f5352Sopenharmony_ci        SLmillisecond *pEndPos
1250523f5352Sopenharmony_ci    );
1251523f5352Sopenharmony_ci};
1252523f5352Sopenharmony_ci
1253523f5352Sopenharmony_ci/*---------------------------------------------------------------------------*/
1254523f5352Sopenharmony_ci/* Standard Recording Interface                                              */
1255523f5352Sopenharmony_ci/*---------------------------------------------------------------------------*/
1256523f5352Sopenharmony_ci
1257523f5352Sopenharmony_ci/** Recording states */
1258523f5352Sopenharmony_ci#define SL_RECORDSTATE_STOPPED     ((SLuint32) 0x00000001)
1259523f5352Sopenharmony_ci#define SL_RECORDSTATE_PAUSED    ((SLuint32) 0x00000002)
1260523f5352Sopenharmony_ci#define SL_RECORDSTATE_RECORDING    ((SLuint32) 0x00000003)
1261523f5352Sopenharmony_ci
1262523f5352Sopenharmony_ci
1263523f5352Sopenharmony_ci/** Record event **/
1264523f5352Sopenharmony_ci#define SL_RECORDEVENT_HEADATLIMIT            ((SLuint32) 0x00000001)
1265523f5352Sopenharmony_ci#define SL_RECORDEVENT_HEADATMARKER            ((SLuint32) 0x00000002)
1266523f5352Sopenharmony_ci#define SL_RECORDEVENT_HEADATNEWPOS            ((SLuint32) 0x00000004)
1267523f5352Sopenharmony_ci#define SL_RECORDEVENT_HEADMOVING            ((SLuint32) 0x00000008)
1268523f5352Sopenharmony_ci#define SL_RECORDEVENT_HEADSTALLED             ((SLuint32) 0x00000010)
1269523f5352Sopenharmony_ci/* Note: SL_RECORDEVENT_BUFFER_INSUFFICIENT is deprecated, use SL_RECORDEVENT_BUFFER_FULL instead. */
1270523f5352Sopenharmony_ci#define SL_RECORDEVENT_BUFFER_INSUFFICIENT  ((SLuint32) 0x00000020)
1271523f5352Sopenharmony_ci#define SL_RECORDEVENT_BUFFER_FULL            ((SLuint32) 0x00000020)
1272523f5352Sopenharmony_ci#define SL_RECORDEVENT_BUFFERQUEUE_STARVED    ((SLuint32) 0x00000040)
1273523f5352Sopenharmony_ci
1274523f5352Sopenharmony_ci
1275523f5352Sopenharmony_ciSL_API extern const SLInterfaceID SL_IID_RECORD;
1276523f5352Sopenharmony_ci
1277523f5352Sopenharmony_cistruct SLRecordItf_;
1278523f5352Sopenharmony_citypedef const struct SLRecordItf_ * const * SLRecordItf;
1279523f5352Sopenharmony_ci
1280523f5352Sopenharmony_citypedef void (SLAPIENTRY *slRecordCallback) (
1281523f5352Sopenharmony_ci    SLRecordItf caller,
1282523f5352Sopenharmony_ci    void *pContext,
1283523f5352Sopenharmony_ci    SLuint32 event
1284523f5352Sopenharmony_ci);
1285523f5352Sopenharmony_ci
1286523f5352Sopenharmony_ci/** Recording interface methods */
1287523f5352Sopenharmony_cistruct SLRecordItf_ {
1288523f5352Sopenharmony_ci    SLresult (*SetRecordState) (
1289523f5352Sopenharmony_ci        SLRecordItf self,
1290523f5352Sopenharmony_ci        SLuint32 state
1291523f5352Sopenharmony_ci    );
1292523f5352Sopenharmony_ci    SLresult (*GetRecordState) (
1293523f5352Sopenharmony_ci        SLRecordItf self,
1294523f5352Sopenharmony_ci        SLuint32 *pState
1295523f5352Sopenharmony_ci    );
1296523f5352Sopenharmony_ci    SLresult (*SetDurationLimit) (
1297523f5352Sopenharmony_ci        SLRecordItf self,
1298523f5352Sopenharmony_ci        SLmillisecond msec
1299523f5352Sopenharmony_ci    );
1300523f5352Sopenharmony_ci    SLresult (*GetPosition) (
1301523f5352Sopenharmony_ci        SLRecordItf self,
1302523f5352Sopenharmony_ci        SLmillisecond *pMsec
1303523f5352Sopenharmony_ci    );
1304523f5352Sopenharmony_ci    SLresult (*RegisterCallback) (
1305523f5352Sopenharmony_ci        SLRecordItf self,
1306523f5352Sopenharmony_ci        slRecordCallback callback,
1307523f5352Sopenharmony_ci        void *pContext
1308523f5352Sopenharmony_ci    );
1309523f5352Sopenharmony_ci    SLresult (*SetCallbackEventsMask) (
1310523f5352Sopenharmony_ci        SLRecordItf self,
1311523f5352Sopenharmony_ci        SLuint32 eventFlags
1312523f5352Sopenharmony_ci    );
1313523f5352Sopenharmony_ci    SLresult (*GetCallbackEventsMask) (
1314523f5352Sopenharmony_ci        SLRecordItf self,
1315523f5352Sopenharmony_ci        SLuint32 *pEventFlags
1316523f5352Sopenharmony_ci    );
1317523f5352Sopenharmony_ci    SLresult (*SetMarkerPosition) (
1318523f5352Sopenharmony_ci        SLRecordItf self,
1319523f5352Sopenharmony_ci        SLmillisecond mSec
1320523f5352Sopenharmony_ci    );
1321523f5352Sopenharmony_ci    SLresult (*ClearMarkerPosition) (
1322523f5352Sopenharmony_ci        SLRecordItf self
1323523f5352Sopenharmony_ci    );
1324523f5352Sopenharmony_ci    SLresult (*GetMarkerPosition) (
1325523f5352Sopenharmony_ci        SLRecordItf self,
1326523f5352Sopenharmony_ci        SLmillisecond *pMsec
1327523f5352Sopenharmony_ci    );
1328523f5352Sopenharmony_ci    SLresult (*SetPositionUpdatePeriod) (
1329523f5352Sopenharmony_ci        SLRecordItf self,
1330523f5352Sopenharmony_ci        SLmillisecond mSec
1331523f5352Sopenharmony_ci    );
1332523f5352Sopenharmony_ci    SLresult (*GetPositionUpdatePeriod) (
1333523f5352Sopenharmony_ci        SLRecordItf self,
1334523f5352Sopenharmony_ci        SLmillisecond *pMsec
1335523f5352Sopenharmony_ci    );
1336523f5352Sopenharmony_ci};
1337523f5352Sopenharmony_ci
1338523f5352Sopenharmony_ci/*---------------------------------------------------------------------------*/
1339523f5352Sopenharmony_ci/* Equalizer interface                                                       */
1340523f5352Sopenharmony_ci/*---------------------------------------------------------------------------*/
1341523f5352Sopenharmony_ci
1342523f5352Sopenharmony_ci#define SL_EQUALIZER_UNDEFINED                ((SLuint16) 0xFFFF)
1343523f5352Sopenharmony_ci
1344523f5352Sopenharmony_ciSL_API extern const SLInterfaceID SL_IID_EQUALIZER;
1345523f5352Sopenharmony_ci
1346523f5352Sopenharmony_cistruct SLEqualizerItf_;
1347523f5352Sopenharmony_citypedef const struct SLEqualizerItf_ * const * SLEqualizerItf;
1348523f5352Sopenharmony_ci
1349523f5352Sopenharmony_cistruct SLEqualizerItf_ {
1350523f5352Sopenharmony_ci    SLresult (*SetEnabled)(
1351523f5352Sopenharmony_ci        SLEqualizerItf self,
1352523f5352Sopenharmony_ci        SLboolean enabled
1353523f5352Sopenharmony_ci    );
1354523f5352Sopenharmony_ci    SLresult (*IsEnabled)(
1355523f5352Sopenharmony_ci        SLEqualizerItf self,
1356523f5352Sopenharmony_ci        SLboolean *pEnabled
1357523f5352Sopenharmony_ci    );
1358523f5352Sopenharmony_ci    SLresult (*GetNumberOfBands)(
1359523f5352Sopenharmony_ci        SLEqualizerItf self,
1360523f5352Sopenharmony_ci        SLuint16 *pAmount
1361523f5352Sopenharmony_ci    );
1362523f5352Sopenharmony_ci    SLresult (*GetBandLevelRange)(
1363523f5352Sopenharmony_ci        SLEqualizerItf self,
1364523f5352Sopenharmony_ci        SLmillibel *pMin,
1365523f5352Sopenharmony_ci        SLmillibel *pMax
1366523f5352Sopenharmony_ci    );
1367523f5352Sopenharmony_ci    SLresult (*SetBandLevel)(
1368523f5352Sopenharmony_ci        SLEqualizerItf self,
1369523f5352Sopenharmony_ci        SLuint16 band,
1370523f5352Sopenharmony_ci        SLmillibel level
1371523f5352Sopenharmony_ci    );
1372523f5352Sopenharmony_ci    SLresult (*GetBandLevel)(
1373523f5352Sopenharmony_ci        SLEqualizerItf self,
1374523f5352Sopenharmony_ci        SLuint16 band,
1375523f5352Sopenharmony_ci        SLmillibel *pLevel
1376523f5352Sopenharmony_ci    );
1377523f5352Sopenharmony_ci    SLresult (*GetCenterFreq)(
1378523f5352Sopenharmony_ci        SLEqualizerItf self,
1379523f5352Sopenharmony_ci        SLuint16 band,
1380523f5352Sopenharmony_ci        SLmilliHertz *pCenter
1381523f5352Sopenharmony_ci    );
1382523f5352Sopenharmony_ci    SLresult (*GetBandFreqRange)(
1383523f5352Sopenharmony_ci        SLEqualizerItf self,
1384523f5352Sopenharmony_ci        SLuint16 band,
1385523f5352Sopenharmony_ci        SLmilliHertz *pMin,
1386523f5352Sopenharmony_ci        SLmilliHertz *pMax
1387523f5352Sopenharmony_ci    );
1388523f5352Sopenharmony_ci    SLresult (*GetBand)(
1389523f5352Sopenharmony_ci        SLEqualizerItf self,
1390523f5352Sopenharmony_ci        SLmilliHertz frequency,
1391523f5352Sopenharmony_ci        SLuint16 *pBand
1392523f5352Sopenharmony_ci    );
1393523f5352Sopenharmony_ci    SLresult (*GetCurrentPreset)(
1394523f5352Sopenharmony_ci        SLEqualizerItf self,
1395523f5352Sopenharmony_ci        SLuint16 *pPreset
1396523f5352Sopenharmony_ci    );
1397523f5352Sopenharmony_ci    SLresult (*UsePreset)(
1398523f5352Sopenharmony_ci        SLEqualizerItf self,
1399523f5352Sopenharmony_ci        SLuint16 index
1400523f5352Sopenharmony_ci    );
1401523f5352Sopenharmony_ci    SLresult (*GetNumberOfPresets)(
1402523f5352Sopenharmony_ci        SLEqualizerItf self,
1403523f5352Sopenharmony_ci        SLuint16 *pNumPresets
1404523f5352Sopenharmony_ci    );
1405523f5352Sopenharmony_ci    SLresult (*GetPresetName)(
1406523f5352Sopenharmony_ci        SLEqualizerItf self,
1407523f5352Sopenharmony_ci        SLuint16 index,
1408523f5352Sopenharmony_ci        SLuint16 * pSize,
1409523f5352Sopenharmony_ci        SLchar * pName
1410523f5352Sopenharmony_ci    );
1411523f5352Sopenharmony_ci};
1412523f5352Sopenharmony_ci
1413523f5352Sopenharmony_ci/*---------------------------------------------------------------------------*/
1414523f5352Sopenharmony_ci/* Volume Interface                                                           */
1415523f5352Sopenharmony_ci/* --------------------------------------------------------------------------*/
1416523f5352Sopenharmony_ci
1417523f5352Sopenharmony_ciSL_API extern const SLInterfaceID SL_IID_VOLUME;
1418523f5352Sopenharmony_ci
1419523f5352Sopenharmony_cistruct SLVolumeItf_;
1420523f5352Sopenharmony_citypedef const struct SLVolumeItf_ * const * SLVolumeItf;
1421523f5352Sopenharmony_ci
1422523f5352Sopenharmony_cistruct SLVolumeItf_ {
1423523f5352Sopenharmony_ci    SLresult (*SetVolumeLevel) (
1424523f5352Sopenharmony_ci        SLVolumeItf self,
1425523f5352Sopenharmony_ci        SLmillibel level
1426523f5352Sopenharmony_ci    );
1427523f5352Sopenharmony_ci    SLresult (*GetVolumeLevel) (
1428523f5352Sopenharmony_ci        SLVolumeItf self,
1429523f5352Sopenharmony_ci        SLmillibel *pLevel
1430523f5352Sopenharmony_ci    );
1431523f5352Sopenharmony_ci    SLresult (*GetMaxVolumeLevel) (
1432523f5352Sopenharmony_ci        SLVolumeItf  self,
1433523f5352Sopenharmony_ci        SLmillibel *pMaxLevel
1434523f5352Sopenharmony_ci    );
1435523f5352Sopenharmony_ci    SLresult (*SetMute) (
1436523f5352Sopenharmony_ci        SLVolumeItf self,
1437523f5352Sopenharmony_ci        SLboolean mute
1438523f5352Sopenharmony_ci    );
1439523f5352Sopenharmony_ci    SLresult (*GetMute) (
1440523f5352Sopenharmony_ci        SLVolumeItf self,
1441523f5352Sopenharmony_ci        SLboolean *pMute
1442523f5352Sopenharmony_ci    );
1443523f5352Sopenharmony_ci    SLresult (*EnableStereoPosition) (
1444523f5352Sopenharmony_ci        SLVolumeItf self,
1445523f5352Sopenharmony_ci        SLboolean enable
1446523f5352Sopenharmony_ci    );
1447523f5352Sopenharmony_ci    SLresult (*IsEnabledStereoPosition) (
1448523f5352Sopenharmony_ci        SLVolumeItf self,
1449523f5352Sopenharmony_ci        SLboolean *pEnable
1450523f5352Sopenharmony_ci    );
1451523f5352Sopenharmony_ci    SLresult (*SetStereoPosition) (
1452523f5352Sopenharmony_ci        SLVolumeItf self,
1453523f5352Sopenharmony_ci        SLpermille stereoPosition
1454523f5352Sopenharmony_ci    );
1455523f5352Sopenharmony_ci    SLresult (*GetStereoPosition) (
1456523f5352Sopenharmony_ci        SLVolumeItf self,
1457523f5352Sopenharmony_ci        SLpermille *pStereoPosition
1458523f5352Sopenharmony_ci    );
1459523f5352Sopenharmony_ci};
1460523f5352Sopenharmony_ci
1461523f5352Sopenharmony_ci
1462523f5352Sopenharmony_ci/*---------------------------------------------------------------------------*/
1463523f5352Sopenharmony_ci/* Device Volume Interface                                                   */
1464523f5352Sopenharmony_ci/* --------------------------------------------------------------------------*/
1465523f5352Sopenharmony_ci
1466523f5352Sopenharmony_ciSL_API extern const SLInterfaceID SL_IID_DEVICEVOLUME;
1467523f5352Sopenharmony_ci
1468523f5352Sopenharmony_cistruct SLDeviceVolumeItf_;
1469523f5352Sopenharmony_citypedef const struct SLDeviceVolumeItf_ * const * SLDeviceVolumeItf;
1470523f5352Sopenharmony_ci
1471523f5352Sopenharmony_cistruct SLDeviceVolumeItf_ {
1472523f5352Sopenharmony_ci    SLresult (*GetVolumeScale) (
1473523f5352Sopenharmony_ci        SLDeviceVolumeItf self,
1474523f5352Sopenharmony_ci        SLuint32 deviceID,
1475523f5352Sopenharmony_ci        SLint32 *pMinValue,
1476523f5352Sopenharmony_ci        SLint32 *pMaxValue,
1477523f5352Sopenharmony_ci        SLboolean *pIsMillibelScale
1478523f5352Sopenharmony_ci    );
1479523f5352Sopenharmony_ci    SLresult (*SetVolume) (
1480523f5352Sopenharmony_ci        SLDeviceVolumeItf self,
1481523f5352Sopenharmony_ci        SLuint32 deviceID,
1482523f5352Sopenharmony_ci        SLint32 volume
1483523f5352Sopenharmony_ci    );
1484523f5352Sopenharmony_ci    SLresult (*GetVolume) (
1485523f5352Sopenharmony_ci        SLDeviceVolumeItf self,
1486523f5352Sopenharmony_ci        SLuint32 deviceID,
1487523f5352Sopenharmony_ci        SLint32 *pVolume
1488523f5352Sopenharmony_ci    );
1489523f5352Sopenharmony_ci};
1490523f5352Sopenharmony_ci
1491523f5352Sopenharmony_ci
1492523f5352Sopenharmony_ci/*---------------------------------------------------------------------------*/
1493523f5352Sopenharmony_ci/* Buffer Queue Interface                                                    */
1494523f5352Sopenharmony_ci/*---------------------------------------------------------------------------*/
1495523f5352Sopenharmony_ci/** Flags for buffer queue events */
1496523f5352Sopenharmony_ci#define SL_BUFFERQUEUEEVENT_PROCESSED    ((SLuint32) 0x00000001)
1497523f5352Sopenharmony_ci#define SL_BUFFERQUEUEEVENT_UNREALIZED    ((SLuint32) 0x00000002)
1498523f5352Sopenharmony_ci#define SL_BUFFERQUEUEEVENT_CLEARED        ((SLuint32) 0x00000004)
1499523f5352Sopenharmony_ci#define SL_BUFFERQUEUEEVENT_STOPPED        ((SLuint32) 0x00000008)
1500523f5352Sopenharmony_ci#define SL_BUFFERQUEUEEVENT_ERROR        ((SLuint32) 0x00000010)
1501523f5352Sopenharmony_ci#define SL_BUFFERQUEUEEVENT_CONTENT_END    ((SLuint32) 0x00000020)
1502523f5352Sopenharmony_ci
1503523f5352Sopenharmony_ciSL_API extern const SLInterfaceID SL_IID_BUFFERQUEUE;
1504523f5352Sopenharmony_ci
1505523f5352Sopenharmony_cistruct SLBufferQueueItf_;
1506523f5352Sopenharmony_citypedef const struct SLBufferQueueItf_ * const * SLBufferQueueItf;
1507523f5352Sopenharmony_ci
1508523f5352Sopenharmony_citypedef void (SLAPIENTRY *slBufferQueueCallback) (
1509523f5352Sopenharmony_ci    SLBufferQueueItf caller,
1510523f5352Sopenharmony_ci    SLuint32 eventFlags,
1511523f5352Sopenharmony_ci    const void *pBuffer,
1512523f5352Sopenharmony_ci    SLuint32 bufferSize,
1513523f5352Sopenharmony_ci    SLuint32 dataUsed,
1514523f5352Sopenharmony_ci    void *pContext
1515523f5352Sopenharmony_ci);
1516523f5352Sopenharmony_ci
1517523f5352Sopenharmony_ci
1518523f5352Sopenharmony_ci/** Buffer queue state **/
1519523f5352Sopenharmony_ci
1520523f5352Sopenharmony_citypedef struct SLBufferQueueState_ {
1521523f5352Sopenharmony_ci    SLuint32    count;
1522523f5352Sopenharmony_ci    SLuint32    index;
1523523f5352Sopenharmony_ci} SLBufferQueueState;
1524523f5352Sopenharmony_ci
1525523f5352Sopenharmony_ci
1526523f5352Sopenharmony_cistruct SLBufferQueueItf_ {
1527523f5352Sopenharmony_ci    SLresult (*Enqueue) (
1528523f5352Sopenharmony_ci        SLBufferQueueItf self,
1529523f5352Sopenharmony_ci        const void *pBuffer,
1530523f5352Sopenharmony_ci        SLuint32 size,
1531523f5352Sopenharmony_ci        SLboolean isLastBuffer
1532523f5352Sopenharmony_ci    );
1533523f5352Sopenharmony_ci    SLresult (*Clear) (
1534523f5352Sopenharmony_ci        SLBufferQueueItf self
1535523f5352Sopenharmony_ci    );
1536523f5352Sopenharmony_ci    SLresult (*GetState) (
1537523f5352Sopenharmony_ci        SLBufferQueueItf self,
1538523f5352Sopenharmony_ci        SLBufferQueueState *pState
1539523f5352Sopenharmony_ci    );
1540523f5352Sopenharmony_ci    SLresult (*RegisterCallback) (
1541523f5352Sopenharmony_ci        SLBufferQueueItf self,
1542523f5352Sopenharmony_ci        slBufferQueueCallback callback,
1543523f5352Sopenharmony_ci        void* pContext
1544523f5352Sopenharmony_ci    );
1545523f5352Sopenharmony_ci    SLresult (*SetCallbackEventsMask) (
1546523f5352Sopenharmony_ci        SLBufferQueueItf self,
1547523f5352Sopenharmony_ci        SLuint32 eventFlags
1548523f5352Sopenharmony_ci    );
1549523f5352Sopenharmony_ci    SLresult (*GetCallbackEventsMask) (
1550523f5352Sopenharmony_ci        SLBufferQueueItf self,
1551523f5352Sopenharmony_ci        SLuint32 *pEventFlags
1552523f5352Sopenharmony_ci    );
1553523f5352Sopenharmony_ci
1554523f5352Sopenharmony_ci};
1555523f5352Sopenharmony_ci
1556523f5352Sopenharmony_ci/*---------------------------------------------------------------------------*/
1557523f5352Sopenharmony_ci/* ConfigExtension                                                           */
1558523f5352Sopenharmony_ci/*---------------------------------------------------------------------------*/
1559523f5352Sopenharmony_ciSL_API extern const SLInterfaceID SL_IID_CONFIGEXTENSION;
1560523f5352Sopenharmony_ci
1561523f5352Sopenharmony_cistruct SLConfigExtensionsItf_;
1562523f5352Sopenharmony_citypedef const struct SLConfigExtensionsItf_
1563523f5352Sopenharmony_ci    * const * SLConfigExtensionsItf;
1564523f5352Sopenharmony_ci
1565523f5352Sopenharmony_cistruct SLConfigExtensionsItf_ {
1566523f5352Sopenharmony_ci    SLresult (*SetConfiguration) (
1567523f5352Sopenharmony_ci        SLConfigExtensionsItf self,
1568523f5352Sopenharmony_ci        const SLchar * pConfigKey,
1569523f5352Sopenharmony_ci        SLuint32 valueSize,
1570523f5352Sopenharmony_ci        const void * pConfigValue
1571523f5352Sopenharmony_ci    );
1572523f5352Sopenharmony_ci    SLresult (*GetConfiguration) (
1573523f5352Sopenharmony_ci        SLConfigExtensionsItf self,
1574523f5352Sopenharmony_ci        const SLchar * pConfigKey,
1575523f5352Sopenharmony_ci        SLuint32 * pValueSize,
1576523f5352Sopenharmony_ci        void * pConfigValue
1577523f5352Sopenharmony_ci    );
1578523f5352Sopenharmony_ci};
1579523f5352Sopenharmony_ci
1580523f5352Sopenharmony_ci
1581523f5352Sopenharmony_ci/*---------------------------------------------------------------------------*/
1582523f5352Sopenharmony_ci/* PresetReverb                                                              */
1583523f5352Sopenharmony_ci/*---------------------------------------------------------------------------*/
1584523f5352Sopenharmony_ci
1585523f5352Sopenharmony_ci#define SL_REVERBPRESET_NONE        ((SLuint16) 0x0000)
1586523f5352Sopenharmony_ci#define SL_REVERBPRESET_SMALLROOM    ((SLuint16) 0x0001)
1587523f5352Sopenharmony_ci#define SL_REVERBPRESET_MEDIUMROOM    ((SLuint16) 0x0002)
1588523f5352Sopenharmony_ci#define SL_REVERBPRESET_LARGEROOM    ((SLuint16) 0x0003)
1589523f5352Sopenharmony_ci#define SL_REVERBPRESET_MEDIUMHALL    ((SLuint16) 0x0004)
1590523f5352Sopenharmony_ci#define SL_REVERBPRESET_LARGEHALL    ((SLuint16) 0x0005)
1591523f5352Sopenharmony_ci#define SL_REVERBPRESET_PLATE         ((SLuint16) 0x0006)
1592523f5352Sopenharmony_ci
1593523f5352Sopenharmony_ci
1594523f5352Sopenharmony_ciSL_API extern const SLInterfaceID SL_IID_PRESETREVERB;
1595523f5352Sopenharmony_ci
1596523f5352Sopenharmony_cistruct SLPresetReverbItf_;
1597523f5352Sopenharmony_citypedef const struct SLPresetReverbItf_ * const * SLPresetReverbItf;
1598523f5352Sopenharmony_ci
1599523f5352Sopenharmony_cistruct SLPresetReverbItf_ {
1600523f5352Sopenharmony_ci    SLresult (*SetPreset) (
1601523f5352Sopenharmony_ci        SLPresetReverbItf self,
1602523f5352Sopenharmony_ci        SLuint16 preset
1603523f5352Sopenharmony_ci    );
1604523f5352Sopenharmony_ci    SLresult (*GetPreset) (
1605523f5352Sopenharmony_ci        SLPresetReverbItf self,
1606523f5352Sopenharmony_ci        SLuint16 *pPreset
1607523f5352Sopenharmony_ci    );
1608523f5352Sopenharmony_ci};
1609523f5352Sopenharmony_ci
1610523f5352Sopenharmony_ci
1611523f5352Sopenharmony_ci/*---------------------------------------------------------------------------*/
1612523f5352Sopenharmony_ci/* EnvironmentalReverb                                                       */
1613523f5352Sopenharmony_ci/*---------------------------------------------------------------------------*/
1614523f5352Sopenharmony_ci
1615523f5352Sopenharmony_ci#define SL_I3DL2_ENVIRONMENT_PRESET_DEFAULT \
1616523f5352Sopenharmony_ci    { SL_MILLIBEL_MIN,    0,  1000,   500, SL_MILLIBEL_MIN,  20, SL_MILLIBEL_MIN,  40, 1000,1000 }
1617523f5352Sopenharmony_ci#define SL_I3DL2_ENVIRONMENT_PRESET_GENERIC \
1618523f5352Sopenharmony_ci    { -1000, -100, 1490,  830, -2602,   7,   200,  11, 1000,1000 }
1619523f5352Sopenharmony_ci#define SL_I3DL2_ENVIRONMENT_PRESET_PADDEDCELL \
1620523f5352Sopenharmony_ci    { -1000,-6000,  170,  100, -1204,   1,   207,   2, 1000,1000 }
1621523f5352Sopenharmony_ci#define SL_I3DL2_ENVIRONMENT_PRESET_ROOM \
1622523f5352Sopenharmony_ci    { -1000, -454,  400,  830, -1646,   2,    53,   3, 1000,1000 }
1623523f5352Sopenharmony_ci#define SL_I3DL2_ENVIRONMENT_PRESET_BATHROOM \
1624523f5352Sopenharmony_ci    { -1000,-1200, 1490,  540,  -370,   7,  1030,  11, 1000, 600 }
1625523f5352Sopenharmony_ci#define SL_I3DL2_ENVIRONMENT_PRESET_LIVINGROOM \
1626523f5352Sopenharmony_ci    { -1000,-6000,  500,  100, -1376,   3, -1104,   4, 1000,1000 }
1627523f5352Sopenharmony_ci#define SL_I3DL2_ENVIRONMENT_PRESET_STONEROOM \
1628523f5352Sopenharmony_ci    { -1000, -300, 2310,  640,  -711,  12,    83,  17, 1000,1000 }
1629523f5352Sopenharmony_ci#define SL_I3DL2_ENVIRONMENT_PRESET_AUDITORIUM \
1630523f5352Sopenharmony_ci    { -1000, -476, 4320,  590,  -789,  20,  -289,  30, 1000,1000 }
1631523f5352Sopenharmony_ci#define SL_I3DL2_ENVIRONMENT_PRESET_CONCERTHALL \
1632523f5352Sopenharmony_ci    { -1000, -500, 3920,  700, -1230,  20,    -2,  29, 1000,1000 }
1633523f5352Sopenharmony_ci#define SL_I3DL2_ENVIRONMENT_PRESET_CAVE \
1634523f5352Sopenharmony_ci    { -1000,    0, 2910, 1300,  -602,  15,  -302,  22, 1000,1000 }
1635523f5352Sopenharmony_ci#define SL_I3DL2_ENVIRONMENT_PRESET_ARENA \
1636523f5352Sopenharmony_ci    { -1000, -698, 7240,  330, -1166,  20,    16,  30, 1000,1000 }
1637523f5352Sopenharmony_ci#define SL_I3DL2_ENVIRONMENT_PRESET_HANGAR \
1638523f5352Sopenharmony_ci    { -1000,-1000, 10050,  230,  -602,  20,   198,  30, 1000,1000 }
1639523f5352Sopenharmony_ci#define SL_I3DL2_ENVIRONMENT_PRESET_CARPETEDHALLWAY \
1640523f5352Sopenharmony_ci    { -1000,-4000,  300,  100, -1831,   2, -1630,  30, 1000,1000 }
1641523f5352Sopenharmony_ci#define SL_I3DL2_ENVIRONMENT_PRESET_HALLWAY \
1642523f5352Sopenharmony_ci    { -1000, -300, 1490,  590, -1219,   7,   441,  11, 1000,1000 }
1643523f5352Sopenharmony_ci#define SL_I3DL2_ENVIRONMENT_PRESET_STONECORRIDOR \
1644523f5352Sopenharmony_ci    { -1000, -237, 2700,  790, -1214,  13,   395,  20, 1000,1000 }
1645523f5352Sopenharmony_ci#define SL_I3DL2_ENVIRONMENT_PRESET_ALLEY \
1646523f5352Sopenharmony_ci    { -1000, -270, 1490,  860, -1204,   7,    -4,  11, 1000,1000 }
1647523f5352Sopenharmony_ci#define SL_I3DL2_ENVIRONMENT_PRESET_FOREST \
1648523f5352Sopenharmony_ci    { -1000,-3300, 1490,  540, -2560, 162,  -613,  88,  790,1000 }
1649523f5352Sopenharmony_ci#define SL_I3DL2_ENVIRONMENT_PRESET_CITY \
1650523f5352Sopenharmony_ci    { -1000, -800, 1490,  670, -2273,   7, -2217,  11,  500,1000 }
1651523f5352Sopenharmony_ci#define SL_I3DL2_ENVIRONMENT_PRESET_MOUNTAINS \
1652523f5352Sopenharmony_ci    { -1000,-2500, 1490,  210, -2780, 300, -2014, 100,  270,1000 }
1653523f5352Sopenharmony_ci#define SL_I3DL2_ENVIRONMENT_PRESET_QUARRY \
1654523f5352Sopenharmony_ci    { -1000,-1000, 1490,  830, SL_MILLIBEL_MIN,  61,   500,  25, 1000,1000 }
1655523f5352Sopenharmony_ci#define SL_I3DL2_ENVIRONMENT_PRESET_PLAIN \
1656523f5352Sopenharmony_ci    { -1000,-2000, 1490,  500, -2466, 179, -2514, 100,  210,1000 }
1657523f5352Sopenharmony_ci#define SL_I3DL2_ENVIRONMENT_PRESET_PARKINGLOT \
1658523f5352Sopenharmony_ci    { -1000,    0, 1650, 1500, -1363,   8, -1153,  12, 1000,1000 }
1659523f5352Sopenharmony_ci#define SL_I3DL2_ENVIRONMENT_PRESET_SEWERPIPE \
1660523f5352Sopenharmony_ci    { -1000,-1000, 2810,  140,   429,  14,   648,  21,  800, 600 }
1661523f5352Sopenharmony_ci#define SL_I3DL2_ENVIRONMENT_PRESET_UNDERWATER \
1662523f5352Sopenharmony_ci    { -1000,-4000, 1490,  100,  -449,   7,  1700,  11, 1000,1000 }
1663523f5352Sopenharmony_ci#define SL_I3DL2_ENVIRONMENT_PRESET_SMALLROOM \
1664523f5352Sopenharmony_ci    { -1000,-600, 1100, 830, -400, 5, 500, 10, 1000, 1000 }
1665523f5352Sopenharmony_ci#define SL_I3DL2_ENVIRONMENT_PRESET_MEDIUMROOM \
1666523f5352Sopenharmony_ci    { -1000,-600, 1300, 830, -1000, 20, -200, 20, 1000, 1000 }
1667523f5352Sopenharmony_ci#define SL_I3DL2_ENVIRONMENT_PRESET_LARGEROOM \
1668523f5352Sopenharmony_ci    { -1000,-600, 1500, 830, -1600, 5, -1000, 40, 1000, 1000 }
1669523f5352Sopenharmony_ci#define SL_I3DL2_ENVIRONMENT_PRESET_MEDIUMHALL \
1670523f5352Sopenharmony_ci    { -1000,-600, 1800, 700, -1300, 15, -800, 30, 1000, 1000 }
1671523f5352Sopenharmony_ci#define SL_I3DL2_ENVIRONMENT_PRESET_LARGEHALL \
1672523f5352Sopenharmony_ci    { -1000,-600, 1800, 700, -2000, 30, -1400, 60, 1000, 1000 }
1673523f5352Sopenharmony_ci#define SL_I3DL2_ENVIRONMENT_PRESET_PLATE \
1674523f5352Sopenharmony_ci    { -1000,-200, 1300, 900, 0, 2, 0, 10, 1000, 750 }
1675523f5352Sopenharmony_ci
1676523f5352Sopenharmony_ci
1677523f5352Sopenharmony_citypedef struct SLEnvironmentalReverbSettings_ {
1678523f5352Sopenharmony_ci    SLmillibel    roomLevel;
1679523f5352Sopenharmony_ci    SLmillibel    roomHFLevel;
1680523f5352Sopenharmony_ci    SLmillisecond decayTime;
1681523f5352Sopenharmony_ci    SLpermille    decayHFRatio;
1682523f5352Sopenharmony_ci    SLmillibel    reflectionsLevel;
1683523f5352Sopenharmony_ci    SLmillisecond reflectionsDelay;
1684523f5352Sopenharmony_ci    SLmillibel    reverbLevel;
1685523f5352Sopenharmony_ci    SLmillisecond reverbDelay;
1686523f5352Sopenharmony_ci    SLpermille    diffusion;
1687523f5352Sopenharmony_ci    SLpermille    density;
1688523f5352Sopenharmony_ci} SLEnvironmentalReverbSettings;
1689523f5352Sopenharmony_ci
1690523f5352Sopenharmony_ci
1691523f5352Sopenharmony_ci
1692523f5352Sopenharmony_ci
1693523f5352Sopenharmony_ciSL_API extern const SLInterfaceID SL_IID_ENVIRONMENTALREVERB;
1694523f5352Sopenharmony_ci
1695523f5352Sopenharmony_ci
1696523f5352Sopenharmony_cistruct SLEnvironmentalReverbItf_;
1697523f5352Sopenharmony_citypedef const struct SLEnvironmentalReverbItf_ * const * SLEnvironmentalReverbItf;
1698523f5352Sopenharmony_ci
1699523f5352Sopenharmony_cistruct SLEnvironmentalReverbItf_ {
1700523f5352Sopenharmony_ci    SLresult (*SetRoomLevel) (
1701523f5352Sopenharmony_ci        SLEnvironmentalReverbItf self,
1702523f5352Sopenharmony_ci        SLmillibel room
1703523f5352Sopenharmony_ci    );
1704523f5352Sopenharmony_ci    SLresult (*GetRoomLevel) (
1705523f5352Sopenharmony_ci        SLEnvironmentalReverbItf self,
1706523f5352Sopenharmony_ci        SLmillibel *pRoom
1707523f5352Sopenharmony_ci    );
1708523f5352Sopenharmony_ci    SLresult (*SetRoomHFLevel) (
1709523f5352Sopenharmony_ci        SLEnvironmentalReverbItf self,
1710523f5352Sopenharmony_ci        SLmillibel roomHF
1711523f5352Sopenharmony_ci    );
1712523f5352Sopenharmony_ci    SLresult (*GetRoomHFLevel) (
1713523f5352Sopenharmony_ci        SLEnvironmentalReverbItf self,
1714523f5352Sopenharmony_ci        SLmillibel *pRoomHF
1715523f5352Sopenharmony_ci    );
1716523f5352Sopenharmony_ci    SLresult (*SetDecayTime) (
1717523f5352Sopenharmony_ci        SLEnvironmentalReverbItf self,
1718523f5352Sopenharmony_ci        SLmillisecond decayTime
1719523f5352Sopenharmony_ci    );
1720523f5352Sopenharmony_ci    SLresult (*GetDecayTime) (
1721523f5352Sopenharmony_ci        SLEnvironmentalReverbItf self,
1722523f5352Sopenharmony_ci        SLmillisecond *pDecayTime
1723523f5352Sopenharmony_ci    );
1724523f5352Sopenharmony_ci    SLresult (*SetDecayHFRatio) (
1725523f5352Sopenharmony_ci        SLEnvironmentalReverbItf self,
1726523f5352Sopenharmony_ci        SLpermille decayHFRatio
1727523f5352Sopenharmony_ci    );
1728523f5352Sopenharmony_ci    SLresult (*GetDecayHFRatio) (
1729523f5352Sopenharmony_ci        SLEnvironmentalReverbItf self,
1730523f5352Sopenharmony_ci        SLpermille *pDecayHFRatio
1731523f5352Sopenharmony_ci    );
1732523f5352Sopenharmony_ci    SLresult (*SetReflectionsLevel) (
1733523f5352Sopenharmony_ci        SLEnvironmentalReverbItf self,
1734523f5352Sopenharmony_ci        SLmillibel reflectionsLevel
1735523f5352Sopenharmony_ci    );
1736523f5352Sopenharmony_ci    SLresult (*GetReflectionsLevel) (
1737523f5352Sopenharmony_ci        SLEnvironmentalReverbItf self,
1738523f5352Sopenharmony_ci        SLmillibel *pReflectionsLevel
1739523f5352Sopenharmony_ci    );
1740523f5352Sopenharmony_ci    SLresult (*SetReflectionsDelay) (
1741523f5352Sopenharmony_ci        SLEnvironmentalReverbItf self,
1742523f5352Sopenharmony_ci        SLmillisecond reflectionsDelay
1743523f5352Sopenharmony_ci    );
1744523f5352Sopenharmony_ci    SLresult (*GetReflectionsDelay) (
1745523f5352Sopenharmony_ci        SLEnvironmentalReverbItf self,
1746523f5352Sopenharmony_ci        SLmillisecond *pReflectionsDelay
1747523f5352Sopenharmony_ci    );
1748523f5352Sopenharmony_ci    SLresult (*SetReverbLevel) (
1749523f5352Sopenharmony_ci        SLEnvironmentalReverbItf self,
1750523f5352Sopenharmony_ci        SLmillibel reverbLevel
1751523f5352Sopenharmony_ci    );
1752523f5352Sopenharmony_ci    SLresult (*GetReverbLevel) (
1753523f5352Sopenharmony_ci        SLEnvironmentalReverbItf self,
1754523f5352Sopenharmony_ci        SLmillibel *pReverbLevel
1755523f5352Sopenharmony_ci    );
1756523f5352Sopenharmony_ci    SLresult (*SetReverbDelay) (
1757523f5352Sopenharmony_ci        SLEnvironmentalReverbItf self,
1758523f5352Sopenharmony_ci        SLmillisecond reverbDelay
1759523f5352Sopenharmony_ci    );
1760523f5352Sopenharmony_ci    SLresult (*GetReverbDelay) (
1761523f5352Sopenharmony_ci        SLEnvironmentalReverbItf self,
1762523f5352Sopenharmony_ci        SLmillisecond *pReverbDelay
1763523f5352Sopenharmony_ci    );
1764523f5352Sopenharmony_ci    SLresult (*SetDiffusion) (
1765523f5352Sopenharmony_ci        SLEnvironmentalReverbItf self,
1766523f5352Sopenharmony_ci        SLpermille diffusion
1767523f5352Sopenharmony_ci    );
1768523f5352Sopenharmony_ci    SLresult (*GetDiffusion) (
1769523f5352Sopenharmony_ci        SLEnvironmentalReverbItf self,
1770523f5352Sopenharmony_ci        SLpermille *pDiffusion
1771523f5352Sopenharmony_ci    );
1772523f5352Sopenharmony_ci    SLresult (*SetDensity) (
1773523f5352Sopenharmony_ci        SLEnvironmentalReverbItf self,
1774523f5352Sopenharmony_ci        SLpermille density
1775523f5352Sopenharmony_ci    );
1776523f5352Sopenharmony_ci    SLresult (*GetDensity) (
1777523f5352Sopenharmony_ci        SLEnvironmentalReverbItf self,
1778523f5352Sopenharmony_ci        SLpermille *pDensity
1779523f5352Sopenharmony_ci    );
1780523f5352Sopenharmony_ci    SLresult (*SetEnvironmentalReverbProperties) (
1781523f5352Sopenharmony_ci        SLEnvironmentalReverbItf self,
1782523f5352Sopenharmony_ci        const SLEnvironmentalReverbSettings *pProperties
1783523f5352Sopenharmony_ci    );
1784523f5352Sopenharmony_ci    SLresult (*GetEnvironmentalReverbProperties) (
1785523f5352Sopenharmony_ci        SLEnvironmentalReverbItf self,
1786523f5352Sopenharmony_ci        SLEnvironmentalReverbSettings *pProperties
1787523f5352Sopenharmony_ci    );
1788523f5352Sopenharmony_ci};
1789523f5352Sopenharmony_ci
1790523f5352Sopenharmony_ci/*---------------------------------------------------------------------------*/
1791523f5352Sopenharmony_ci/* Effects Send Interface                                                    */
1792523f5352Sopenharmony_ci/*---------------------------------------------------------------------------*/
1793523f5352Sopenharmony_ci
1794523f5352Sopenharmony_ci
1795523f5352Sopenharmony_ciSL_API extern const SLInterfaceID SL_IID_EFFECTSEND;
1796523f5352Sopenharmony_ci
1797523f5352Sopenharmony_cistruct SLEffectSendItf_;
1798523f5352Sopenharmony_citypedef const struct SLEffectSendItf_ * const * SLEffectSendItf;
1799523f5352Sopenharmony_ci
1800523f5352Sopenharmony_cistruct SLEffectSendItf_ {
1801523f5352Sopenharmony_ci    SLresult (*EnableEffectSend) (
1802523f5352Sopenharmony_ci        SLEffectSendItf self,
1803523f5352Sopenharmony_ci        const void *pAuxEffect,
1804523f5352Sopenharmony_ci        SLboolean enable,
1805523f5352Sopenharmony_ci        SLmillibel initialLevel
1806523f5352Sopenharmony_ci    );
1807523f5352Sopenharmony_ci    SLresult (*IsEnabled) (
1808523f5352Sopenharmony_ci        SLEffectSendItf self,
1809523f5352Sopenharmony_ci        const void * pAuxEffect,
1810523f5352Sopenharmony_ci        SLboolean *pEnable
1811523f5352Sopenharmony_ci    );
1812523f5352Sopenharmony_ci    SLresult (*SetDirectLevel) (
1813523f5352Sopenharmony_ci        SLEffectSendItf self,
1814523f5352Sopenharmony_ci        SLmillibel directLevel
1815523f5352Sopenharmony_ci    );
1816523f5352Sopenharmony_ci    SLresult (*GetDirectLevel) (
1817523f5352Sopenharmony_ci        SLEffectSendItf self,
1818523f5352Sopenharmony_ci        SLmillibel *pDirectLevel
1819523f5352Sopenharmony_ci    );
1820523f5352Sopenharmony_ci    SLresult (*SetSendLevel) (
1821523f5352Sopenharmony_ci        SLEffectSendItf self,
1822523f5352Sopenharmony_ci        const void *pAuxEffect,
1823523f5352Sopenharmony_ci        SLmillibel sendLevel
1824523f5352Sopenharmony_ci    );
1825523f5352Sopenharmony_ci    SLresult (*GetSendLevel)(
1826523f5352Sopenharmony_ci        SLEffectSendItf self,
1827523f5352Sopenharmony_ci        const void *pAuxEffect,
1828523f5352Sopenharmony_ci        SLmillibel *pSendLevel
1829523f5352Sopenharmony_ci    );
1830523f5352Sopenharmony_ci};
1831523f5352Sopenharmony_ci
1832523f5352Sopenharmony_ci
1833523f5352Sopenharmony_ci/*---------------------------------------------------------------------------*/
1834523f5352Sopenharmony_ci/* 3D Grouping Interface                                                     */
1835523f5352Sopenharmony_ci/*---------------------------------------------------------------------------*/
1836523f5352Sopenharmony_ci
1837523f5352Sopenharmony_ci
1838523f5352Sopenharmony_ciSL_API extern const SLInterfaceID SL_IID_3DGROUPING;
1839523f5352Sopenharmony_ci
1840523f5352Sopenharmony_ci
1841523f5352Sopenharmony_cistruct SL3DGroupingItf_ ;
1842523f5352Sopenharmony_citypedef const struct SL3DGroupingItf_ * const * SL3DGroupingItf;
1843523f5352Sopenharmony_ci
1844523f5352Sopenharmony_cistruct SL3DGroupingItf_ {
1845523f5352Sopenharmony_ci    SLresult (*Set3DGroup) (
1846523f5352Sopenharmony_ci        SL3DGroupingItf self,
1847523f5352Sopenharmony_ci        SLObjectItf group
1848523f5352Sopenharmony_ci    );
1849523f5352Sopenharmony_ci    SLresult (*Get3DGroup) (
1850523f5352Sopenharmony_ci        SL3DGroupingItf self,
1851523f5352Sopenharmony_ci        SLObjectItf *pGroup
1852523f5352Sopenharmony_ci    );
1853523f5352Sopenharmony_ci};
1854523f5352Sopenharmony_ci
1855523f5352Sopenharmony_ci/*---------------------------------------------------------------------------*/
1856523f5352Sopenharmony_ci/* 3D Hint Interface                                                         */
1857523f5352Sopenharmony_ci/*---------------------------------------------------------------------------*/
1858523f5352Sopenharmony_ci#define SL_3DHINT_OFF                    ((SLuint16) 0x0000)
1859523f5352Sopenharmony_ci#define SL_3DHINT_QUALITY_LOWEST        ((SLuint16) 0x0001)
1860523f5352Sopenharmony_ci#define SL_3DHINT_QUALITY_LOW            ((SLuint16) 0x4000)
1861523f5352Sopenharmony_ci#define SL_3DHINT_QUALITY_MEDIUM        ((SLuint16) 0x8000)
1862523f5352Sopenharmony_ci#define SL_3DHINT_QUALITY_HIGH            ((SLuint16) 0xC000)
1863523f5352Sopenharmony_ci#define SL_3DHINT_QUALITY_HIGHEST        ((SLuint16) 0xFFFF)
1864523f5352Sopenharmony_ci
1865523f5352Sopenharmony_ciSL_API extern const SLInterfaceID SL_IID_3DHINT;
1866523f5352Sopenharmony_ci
1867523f5352Sopenharmony_cistruct SL3DHintItf_;
1868523f5352Sopenharmony_citypedef const struct SL3DHintItf_ * const * SL3DHintItf;
1869523f5352Sopenharmony_ci
1870523f5352Sopenharmony_cistruct SL3DHintItf_ {
1871523f5352Sopenharmony_ci    SLresult (*SetRenderHint) (
1872523f5352Sopenharmony_ci        SL3DHintItf self,
1873523f5352Sopenharmony_ci        SLuint16 qualityHint
1874523f5352Sopenharmony_ci    );
1875523f5352Sopenharmony_ci    SLresult (*GetRenderHint) (
1876523f5352Sopenharmony_ci        SL3DHintItf self,
1877523f5352Sopenharmony_ci        SLuint16 *pQualityHint
1878523f5352Sopenharmony_ci    );
1879523f5352Sopenharmony_ci};
1880523f5352Sopenharmony_ci
1881523f5352Sopenharmony_ci
1882523f5352Sopenharmony_ci/*---------------------------------------------------------------------------*/
1883523f5352Sopenharmony_ci/* 3D Commit Interface                                                       */
1884523f5352Sopenharmony_ci/*---------------------------------------------------------------------------*/
1885523f5352Sopenharmony_ci
1886523f5352Sopenharmony_ci
1887523f5352Sopenharmony_ciSL_API extern const SLInterfaceID SL_IID_3DCOMMIT;
1888523f5352Sopenharmony_ci
1889523f5352Sopenharmony_cistruct SL3DCommitItf_;
1890523f5352Sopenharmony_citypedef const struct SL3DCommitItf_* const * SL3DCommitItf;
1891523f5352Sopenharmony_ci
1892523f5352Sopenharmony_cistruct SL3DCommitItf_ {
1893523f5352Sopenharmony_ci    SLresult (*Commit) (
1894523f5352Sopenharmony_ci        SL3DCommitItf self
1895523f5352Sopenharmony_ci    );
1896523f5352Sopenharmony_ci    SLresult (*SetDeferred) (
1897523f5352Sopenharmony_ci        SL3DCommitItf self,
1898523f5352Sopenharmony_ci        SLboolean deferred
1899523f5352Sopenharmony_ci    );
1900523f5352Sopenharmony_ci};
1901523f5352Sopenharmony_ci
1902523f5352Sopenharmony_ci
1903523f5352Sopenharmony_ci/*---------------------------------------------------------------------------*/
1904523f5352Sopenharmony_ci/* 3D Location Interface                                                     */
1905523f5352Sopenharmony_ci/*---------------------------------------------------------------------------*/
1906523f5352Sopenharmony_ci
1907523f5352Sopenharmony_citypedef struct SLVec3D_ {
1908523f5352Sopenharmony_ci    SLint32    x;
1909523f5352Sopenharmony_ci    SLint32    y;
1910523f5352Sopenharmony_ci    SLint32    z;
1911523f5352Sopenharmony_ci} SLVec3D;
1912523f5352Sopenharmony_ci
1913523f5352Sopenharmony_ciSL_API extern const SLInterfaceID SL_IID_3DLOCATION;
1914523f5352Sopenharmony_ci
1915523f5352Sopenharmony_cistruct SL3DLocationItf_;
1916523f5352Sopenharmony_citypedef const struct SL3DLocationItf_ * const * SL3DLocationItf;
1917523f5352Sopenharmony_ci
1918523f5352Sopenharmony_cistruct SL3DLocationItf_ {
1919523f5352Sopenharmony_ci    SLresult (*SetLocationCartesian) (
1920523f5352Sopenharmony_ci        SL3DLocationItf self,
1921523f5352Sopenharmony_ci        const SLVec3D *pLocation
1922523f5352Sopenharmony_ci    );
1923523f5352Sopenharmony_ci    SLresult (*SetLocationSpherical) (
1924523f5352Sopenharmony_ci        SL3DLocationItf self,
1925523f5352Sopenharmony_ci        SLmillidegree azimuth,
1926523f5352Sopenharmony_ci        SLmillidegree elevation,
1927523f5352Sopenharmony_ci        SLmillimeter distance
1928523f5352Sopenharmony_ci    );
1929523f5352Sopenharmony_ci    SLresult (*Move) (
1930523f5352Sopenharmony_ci        SL3DLocationItf self,
1931523f5352Sopenharmony_ci        const SLVec3D *pMovement
1932523f5352Sopenharmony_ci    );
1933523f5352Sopenharmony_ci    SLresult (*GetLocationCartesian) (
1934523f5352Sopenharmony_ci        SL3DLocationItf self,
1935523f5352Sopenharmony_ci        SLVec3D *pLocation
1936523f5352Sopenharmony_ci    );
1937523f5352Sopenharmony_ci    SLresult (*SetOrientationVectors) (
1938523f5352Sopenharmony_ci        SL3DLocationItf self,
1939523f5352Sopenharmony_ci        const SLVec3D *pFront,
1940523f5352Sopenharmony_ci        const SLVec3D *pAbove
1941523f5352Sopenharmony_ci    );
1942523f5352Sopenharmony_ci    SLresult (*SetOrientationAngles) (
1943523f5352Sopenharmony_ci        SL3DLocationItf self,
1944523f5352Sopenharmony_ci        SLmillidegree heading,
1945523f5352Sopenharmony_ci        SLmillidegree pitch,
1946523f5352Sopenharmony_ci        SLmillidegree roll
1947523f5352Sopenharmony_ci    );
1948523f5352Sopenharmony_ci    SLresult (*Rotate) (
1949523f5352Sopenharmony_ci        SL3DLocationItf self,
1950523f5352Sopenharmony_ci        SLmillidegree theta,
1951523f5352Sopenharmony_ci        const SLVec3D *pAxis
1952523f5352Sopenharmony_ci    );
1953523f5352Sopenharmony_ci    SLresult (*GetOrientationVectors) (
1954523f5352Sopenharmony_ci        SL3DLocationItf self,
1955523f5352Sopenharmony_ci        SLVec3D *pFront,
1956523f5352Sopenharmony_ci        SLVec3D *pUp
1957523f5352Sopenharmony_ci    );
1958523f5352Sopenharmony_ci};
1959523f5352Sopenharmony_ci
1960523f5352Sopenharmony_ci
1961523f5352Sopenharmony_ci/*---------------------------------------------------------------------------*/
1962523f5352Sopenharmony_ci/* 3D Doppler Interface                                                      */
1963523f5352Sopenharmony_ci/*---------------------------------------------------------------------------*/
1964523f5352Sopenharmony_ci
1965523f5352Sopenharmony_ci
1966523f5352Sopenharmony_ciSL_API extern const SLInterfaceID SL_IID_3DDOPPLER;
1967523f5352Sopenharmony_ci
1968523f5352Sopenharmony_cistruct SL3DDopplerItf_;
1969523f5352Sopenharmony_citypedef const struct SL3DDopplerItf_ * const * SL3DDopplerItf;
1970523f5352Sopenharmony_ci
1971523f5352Sopenharmony_cistruct SL3DDopplerItf_ {
1972523f5352Sopenharmony_ci    SLresult (*SetVelocityCartesian) (
1973523f5352Sopenharmony_ci        SL3DDopplerItf self,
1974523f5352Sopenharmony_ci        const SLVec3D *pVelocity
1975523f5352Sopenharmony_ci    );
1976523f5352Sopenharmony_ci    SLresult (*SetVelocitySpherical) (
1977523f5352Sopenharmony_ci        SL3DDopplerItf self,
1978523f5352Sopenharmony_ci        SLmillidegree azimuth,
1979523f5352Sopenharmony_ci        SLmillidegree elevation,
1980523f5352Sopenharmony_ci        SLmillimeter speed
1981523f5352Sopenharmony_ci    );
1982523f5352Sopenharmony_ci    SLresult (*GetVelocityCartesian) (
1983523f5352Sopenharmony_ci        SL3DDopplerItf self,
1984523f5352Sopenharmony_ci        SLVec3D *pVelocity
1985523f5352Sopenharmony_ci    );
1986523f5352Sopenharmony_ci    SLresult (*SetDopplerFactor) (
1987523f5352Sopenharmony_ci        SL3DDopplerItf self,
1988523f5352Sopenharmony_ci        SLpermille dopplerFactor
1989523f5352Sopenharmony_ci    );
1990523f5352Sopenharmony_ci    SLresult (*GetDopplerFactor) (
1991523f5352Sopenharmony_ci        SL3DDopplerItf self,
1992523f5352Sopenharmony_ci        SLpermille *pDopplerFactor
1993523f5352Sopenharmony_ci    );
1994523f5352Sopenharmony_ci};
1995523f5352Sopenharmony_ci
1996523f5352Sopenharmony_ci/*---------------------------------------------------------------------------*/
1997523f5352Sopenharmony_ci/* 3D Source Interface and associated defines                                */
1998523f5352Sopenharmony_ci/* --------------------------------------------------------------------------*/
1999523f5352Sopenharmony_ci
2000523f5352Sopenharmony_ci#define SL_ROLLOFFMODEL_EXPONENTIAL    ((SLuint32) 0x00000000)
2001523f5352Sopenharmony_ci#define SL_ROLLOFFMODEL_LINEAR        ((SLuint32) 0x00000001)
2002523f5352Sopenharmony_ci
2003523f5352Sopenharmony_ci
2004523f5352Sopenharmony_ciSL_API extern const SLInterfaceID SL_IID_3DSOURCE;
2005523f5352Sopenharmony_ci
2006523f5352Sopenharmony_cistruct SL3DSourceItf_;
2007523f5352Sopenharmony_citypedef const struct SL3DSourceItf_ * const * SL3DSourceItf;
2008523f5352Sopenharmony_ci
2009523f5352Sopenharmony_cistruct SL3DSourceItf_ {
2010523f5352Sopenharmony_ci    SLresult (*SetHeadRelative) (
2011523f5352Sopenharmony_ci        SL3DSourceItf self,
2012523f5352Sopenharmony_ci        SLboolean headRelative
2013523f5352Sopenharmony_ci    );
2014523f5352Sopenharmony_ci    SLresult (*GetHeadRelative) (
2015523f5352Sopenharmony_ci        SL3DSourceItf self,
2016523f5352Sopenharmony_ci        SLboolean *pHeadRelative
2017523f5352Sopenharmony_ci    );
2018523f5352Sopenharmony_ci    SLresult (*SetRolloffDistances) (
2019523f5352Sopenharmony_ci        SL3DSourceItf self,
2020523f5352Sopenharmony_ci        SLmillimeter minDistance,
2021523f5352Sopenharmony_ci        SLmillimeter maxDistance
2022523f5352Sopenharmony_ci    );
2023523f5352Sopenharmony_ci    SLresult (*GetRolloffDistances) (
2024523f5352Sopenharmony_ci        SL3DSourceItf self,
2025523f5352Sopenharmony_ci        SLmillimeter *pMinDistance,
2026523f5352Sopenharmony_ci        SLmillimeter *pMaxDistance
2027523f5352Sopenharmony_ci    );
2028523f5352Sopenharmony_ci    SLresult (*SetRolloffMaxDistanceMute) (
2029523f5352Sopenharmony_ci        SL3DSourceItf self,
2030523f5352Sopenharmony_ci        SLboolean mute
2031523f5352Sopenharmony_ci    );
2032523f5352Sopenharmony_ci    SLresult (*GetRolloffMaxDistanceMute) (
2033523f5352Sopenharmony_ci        SL3DSourceItf self,
2034523f5352Sopenharmony_ci        SLboolean *pMute
2035523f5352Sopenharmony_ci    );
2036523f5352Sopenharmony_ci    SLresult (*SetRolloffFactor) (
2037523f5352Sopenharmony_ci        SL3DSourceItf self,
2038523f5352Sopenharmony_ci        SLpermille rolloffFactor
2039523f5352Sopenharmony_ci    );
2040523f5352Sopenharmony_ci    SLresult (*GetRolloffFactor) (
2041523f5352Sopenharmony_ci        SL3DSourceItf self,
2042523f5352Sopenharmony_ci        SLpermille *pRolloffFactor
2043523f5352Sopenharmony_ci    );
2044523f5352Sopenharmony_ci    SLresult (*SetRoomRolloffFactor) (
2045523f5352Sopenharmony_ci        SL3DSourceItf self,
2046523f5352Sopenharmony_ci        SLpermille roomRolloffFactor
2047523f5352Sopenharmony_ci    );
2048523f5352Sopenharmony_ci    SLresult (*GetRoomRolloffFactor) (
2049523f5352Sopenharmony_ci        SL3DSourceItf self,
2050523f5352Sopenharmony_ci        SLpermille *pRoomRolloffFactor
2051523f5352Sopenharmony_ci    );
2052523f5352Sopenharmony_ci    SLresult (*SetRolloffModel) (
2053523f5352Sopenharmony_ci        SL3DSourceItf self,
2054523f5352Sopenharmony_ci        SLuint8 model
2055523f5352Sopenharmony_ci    );
2056523f5352Sopenharmony_ci    SLresult (*GetRolloffModel) (
2057523f5352Sopenharmony_ci        SL3DSourceItf self,
2058523f5352Sopenharmony_ci        SLuint8 *pModel
2059523f5352Sopenharmony_ci    );
2060523f5352Sopenharmony_ci    SLresult (*SetCone) (
2061523f5352Sopenharmony_ci        SL3DSourceItf self,
2062523f5352Sopenharmony_ci        SLmillidegree innerAngle,
2063523f5352Sopenharmony_ci        SLmillidegree outerAngle,
2064523f5352Sopenharmony_ci        SLmillibel outerLevel
2065523f5352Sopenharmony_ci    );
2066523f5352Sopenharmony_ci    SLresult (*GetCone) (
2067523f5352Sopenharmony_ci        SL3DSourceItf self,
2068523f5352Sopenharmony_ci        SLmillidegree *pInnerAngle,
2069523f5352Sopenharmony_ci        SLmillidegree *pOuterAngle,
2070523f5352Sopenharmony_ci        SLmillibel *pOuterLevel
2071523f5352Sopenharmony_ci    );
2072523f5352Sopenharmony_ci};
2073523f5352Sopenharmony_ci
2074523f5352Sopenharmony_ci/*---------------------------------------------------------------------------*/
2075523f5352Sopenharmony_ci/* 3D Macroscopic Interface                                                  */
2076523f5352Sopenharmony_ci/* --------------------------------------------------------------------------*/
2077523f5352Sopenharmony_ci
2078523f5352Sopenharmony_ciSL_API extern const SLInterfaceID SL_IID_3DMACROSCOPIC;
2079523f5352Sopenharmony_ci
2080523f5352Sopenharmony_cistruct SL3DMacroscopicItf_;
2081523f5352Sopenharmony_citypedef const struct SL3DMacroscopicItf_ * const * SL3DMacroscopicItf;
2082523f5352Sopenharmony_ci
2083523f5352Sopenharmony_cistruct SL3DMacroscopicItf_ {
2084523f5352Sopenharmony_ci    SLresult (*SetSize) (
2085523f5352Sopenharmony_ci        SL3DMacroscopicItf self,
2086523f5352Sopenharmony_ci        SLmillimeter width,
2087523f5352Sopenharmony_ci        SLmillimeter height,
2088523f5352Sopenharmony_ci        SLmillimeter depth
2089523f5352Sopenharmony_ci    );
2090523f5352Sopenharmony_ci    SLresult (*GetSize) (
2091523f5352Sopenharmony_ci        SL3DMacroscopicItf self,
2092523f5352Sopenharmony_ci        SLmillimeter *pWidth,
2093523f5352Sopenharmony_ci        SLmillimeter *pHeight,
2094523f5352Sopenharmony_ci        SLmillimeter *pDepth
2095523f5352Sopenharmony_ci    );
2096523f5352Sopenharmony_ci    SLresult (*SetOrientationAngles) (
2097523f5352Sopenharmony_ci        SL3DMacroscopicItf self,
2098523f5352Sopenharmony_ci        SLmillidegree heading,
2099523f5352Sopenharmony_ci        SLmillidegree pitch,
2100523f5352Sopenharmony_ci        SLmillidegree roll
2101523f5352Sopenharmony_ci    );
2102523f5352Sopenharmony_ci    SLresult (*SetOrientationVectors) (
2103523f5352Sopenharmony_ci        SL3DMacroscopicItf self,
2104523f5352Sopenharmony_ci        const SLVec3D *pFront,
2105523f5352Sopenharmony_ci        const SLVec3D *pAbove
2106523f5352Sopenharmony_ci    );
2107523f5352Sopenharmony_ci    SLresult (*Rotate) (
2108523f5352Sopenharmony_ci        SL3DMacroscopicItf self,
2109523f5352Sopenharmony_ci        SLmillidegree theta,
2110523f5352Sopenharmony_ci        const SLVec3D *pAxis
2111523f5352Sopenharmony_ci    );
2112523f5352Sopenharmony_ci    SLresult (*GetOrientationVectors) (
2113523f5352Sopenharmony_ci        SL3DMacroscopicItf self,
2114523f5352Sopenharmony_ci        SLVec3D *pFront,
2115523f5352Sopenharmony_ci        SLVec3D *pUp
2116523f5352Sopenharmony_ci    );
2117523f5352Sopenharmony_ci};
2118523f5352Sopenharmony_ci
2119523f5352Sopenharmony_ci/*---------------------------------------------------------------------------*/
2120523f5352Sopenharmony_ci/* Mute Solo Interface                                                       */
2121523f5352Sopenharmony_ci/* --------------------------------------------------------------------------*/
2122523f5352Sopenharmony_ci
2123523f5352Sopenharmony_ci
2124523f5352Sopenharmony_ciSL_API extern const SLInterfaceID SL_IID_MUTESOLO;
2125523f5352Sopenharmony_ci
2126523f5352Sopenharmony_cistruct SLMuteSoloItf_;
2127523f5352Sopenharmony_citypedef const struct SLMuteSoloItf_ * const * SLMuteSoloItf;
2128523f5352Sopenharmony_ci
2129523f5352Sopenharmony_cistruct SLMuteSoloItf_ {
2130523f5352Sopenharmony_ci    SLresult (*SetChannelMute) (
2131523f5352Sopenharmony_ci        SLMuteSoloItf self,
2132523f5352Sopenharmony_ci        SLuint8 chan,
2133523f5352Sopenharmony_ci        SLboolean mute
2134523f5352Sopenharmony_ci    );
2135523f5352Sopenharmony_ci    SLresult (*GetChannelMute) (
2136523f5352Sopenharmony_ci        SLMuteSoloItf self,
2137523f5352Sopenharmony_ci        SLuint8 chan,
2138523f5352Sopenharmony_ci        SLboolean *pMute
2139523f5352Sopenharmony_ci    );
2140523f5352Sopenharmony_ci    SLresult (*SetChannelSolo) (
2141523f5352Sopenharmony_ci        SLMuteSoloItf self,
2142523f5352Sopenharmony_ci        SLuint8 chan,
2143523f5352Sopenharmony_ci        SLboolean solo
2144523f5352Sopenharmony_ci    );
2145523f5352Sopenharmony_ci    SLresult (*GetChannelSolo) (
2146523f5352Sopenharmony_ci        SLMuteSoloItf self,
2147523f5352Sopenharmony_ci        SLuint8 chan,
2148523f5352Sopenharmony_ci        SLboolean *pSolo
2149523f5352Sopenharmony_ci    );
2150523f5352Sopenharmony_ci    SLresult (*GetNumChannels) (
2151523f5352Sopenharmony_ci        SLMuteSoloItf self,
2152523f5352Sopenharmony_ci        SLuint8 *pNumChannels
2153523f5352Sopenharmony_ci    );
2154523f5352Sopenharmony_ci};
2155523f5352Sopenharmony_ci
2156523f5352Sopenharmony_ci
2157523f5352Sopenharmony_ci/*---------------------------------------------------------------------------*/
2158523f5352Sopenharmony_ci/* Dynamic Interface Management Interface and associated types and macros    */
2159523f5352Sopenharmony_ci/* --------------------------------------------------------------------------*/
2160523f5352Sopenharmony_ci
2161523f5352Sopenharmony_ci#define SL_DYNAMIC_ITF_EVENT_RUNTIME_ERROR            ((SLuint32) 0x00000001)
2162523f5352Sopenharmony_ci#define SL_DYNAMIC_ITF_EVENT_ASYNC_TERMINATION        ((SLuint32) 0x00000002)
2163523f5352Sopenharmony_ci#define SL_DYNAMIC_ITF_EVENT_RESOURCES_LOST            ((SLuint32) 0x00000003)
2164523f5352Sopenharmony_ci#define SL_DYNAMIC_ITF_EVENT_RESOURCES_LOST_PERMANENTLY    ((SLuint32) 0x00000004)
2165523f5352Sopenharmony_ci#define SL_DYNAMIC_ITF_EVENT_RESOURCES_AVAILABLE        ((SLuint32) 0x00000005)
2166523f5352Sopenharmony_ci
2167523f5352Sopenharmony_ci
2168523f5352Sopenharmony_ci
2169523f5352Sopenharmony_ci
2170523f5352Sopenharmony_ciSL_API extern const SLInterfaceID SL_IID_DYNAMICINTERFACEMANAGEMENT;
2171523f5352Sopenharmony_ci
2172523f5352Sopenharmony_cistruct SLDynamicInterfaceManagementItf_;
2173523f5352Sopenharmony_citypedef const struct SLDynamicInterfaceManagementItf_ * const * SLDynamicInterfaceManagementItf;
2174523f5352Sopenharmony_ci
2175523f5352Sopenharmony_citypedef void (SLAPIENTRY *slDynamicInterfaceManagementCallback) (
2176523f5352Sopenharmony_ci    SLDynamicInterfaceManagementItf caller,
2177523f5352Sopenharmony_ci    void * pContext,
2178523f5352Sopenharmony_ci    SLuint32 event,
2179523f5352Sopenharmony_ci    SLresult result,
2180523f5352Sopenharmony_ci    const SLInterfaceID iid
2181523f5352Sopenharmony_ci);
2182523f5352Sopenharmony_ci
2183523f5352Sopenharmony_ci
2184523f5352Sopenharmony_cistruct SLDynamicInterfaceManagementItf_ {
2185523f5352Sopenharmony_ci    SLresult (*AddInterface) (
2186523f5352Sopenharmony_ci        SLDynamicInterfaceManagementItf self,
2187523f5352Sopenharmony_ci        const SLInterfaceID iid,
2188523f5352Sopenharmony_ci        SLboolean async
2189523f5352Sopenharmony_ci    );
2190523f5352Sopenharmony_ci    SLresult (*RemoveInterface) (
2191523f5352Sopenharmony_ci        SLDynamicInterfaceManagementItf self,
2192523f5352Sopenharmony_ci        const SLInterfaceID iid
2193523f5352Sopenharmony_ci    );
2194523f5352Sopenharmony_ci    SLresult (*ResumeInterface) (
2195523f5352Sopenharmony_ci        SLDynamicInterfaceManagementItf self,
2196523f5352Sopenharmony_ci        const SLInterfaceID iid,
2197523f5352Sopenharmony_ci        SLboolean async
2198523f5352Sopenharmony_ci    );
2199523f5352Sopenharmony_ci    SLresult (*RegisterCallback) (
2200523f5352Sopenharmony_ci        SLDynamicInterfaceManagementItf self,
2201523f5352Sopenharmony_ci        slDynamicInterfaceManagementCallback callback,
2202523f5352Sopenharmony_ci        void * pContext
2203523f5352Sopenharmony_ci    );
2204523f5352Sopenharmony_ci};
2205523f5352Sopenharmony_ci
2206523f5352Sopenharmony_ci/*---------------------------------------------------------------------------*/
2207523f5352Sopenharmony_ci/* Midi Message Interface and associated types                               */
2208523f5352Sopenharmony_ci/* --------------------------------------------------------------------------*/
2209523f5352Sopenharmony_ci
2210523f5352Sopenharmony_ci#define SL_MIDIMESSAGETYPE_NOTE_ON_OFF        ((SLuint32) 0x00000001)
2211523f5352Sopenharmony_ci#define SL_MIDIMESSAGETYPE_POLY_PRESSURE    ((SLuint32) 0x00000002)
2212523f5352Sopenharmony_ci#define SL_MIDIMESSAGETYPE_CONTROL_CHANGE    ((SLuint32) 0x00000003)
2213523f5352Sopenharmony_ci#define SL_MIDIMESSAGETYPE_PROGRAM_CHANGE    ((SLuint32) 0x00000004)
2214523f5352Sopenharmony_ci#define SL_MIDIMESSAGETYPE_CHANNEL_PRESSURE    ((SLuint32) 0x00000005)
2215523f5352Sopenharmony_ci#define SL_MIDIMESSAGETYPE_PITCH_BEND        ((SLuint32) 0x00000006)
2216523f5352Sopenharmony_ci#define SL_MIDIMESSAGETYPE_SYSTEM_MESSAGE    ((SLuint32) 0x00000007)
2217523f5352Sopenharmony_ci
2218523f5352Sopenharmony_ci
2219523f5352Sopenharmony_ciSL_API extern const SLInterfaceID SL_IID_MIDIMESSAGE;
2220523f5352Sopenharmony_ci
2221523f5352Sopenharmony_cistruct SLMIDIMessageItf_;
2222523f5352Sopenharmony_citypedef const struct SLMIDIMessageItf_ * const * SLMIDIMessageItf;
2223523f5352Sopenharmony_ci
2224523f5352Sopenharmony_citypedef void (SLAPIENTRY *slMetaEventCallback) (
2225523f5352Sopenharmony_ci    SLMIDIMessageItf caller,
2226523f5352Sopenharmony_ci    void *pContext,
2227523f5352Sopenharmony_ci    SLuint8 type,
2228523f5352Sopenharmony_ci    SLuint32 length,
2229523f5352Sopenharmony_ci    const SLuint8 *pData,
2230523f5352Sopenharmony_ci    SLuint32 tick,
2231523f5352Sopenharmony_ci    SLuint16 track
2232523f5352Sopenharmony_ci);
2233523f5352Sopenharmony_ci
2234523f5352Sopenharmony_citypedef void (SLAPIENTRY *slMIDIMessageCallback) (
2235523f5352Sopenharmony_ci    SLMIDIMessageItf caller,
2236523f5352Sopenharmony_ci    void *pContext,
2237523f5352Sopenharmony_ci    SLuint8 statusByte,
2238523f5352Sopenharmony_ci    SLuint32 length,
2239523f5352Sopenharmony_ci    const SLuint8 *pData,
2240523f5352Sopenharmony_ci    SLuint32 tick,
2241523f5352Sopenharmony_ci    SLuint16 track
2242523f5352Sopenharmony_ci);
2243523f5352Sopenharmony_ci
2244523f5352Sopenharmony_cistruct SLMIDIMessageItf_ {
2245523f5352Sopenharmony_ci    SLresult (*SendMessage) (
2246523f5352Sopenharmony_ci        SLMIDIMessageItf self,
2247523f5352Sopenharmony_ci        const SLuint8 *pData,
2248523f5352Sopenharmony_ci        SLuint32 length
2249523f5352Sopenharmony_ci    );
2250523f5352Sopenharmony_ci    SLresult (*RegisterMetaEventCallback) (
2251523f5352Sopenharmony_ci        SLMIDIMessageItf self,
2252523f5352Sopenharmony_ci        slMetaEventCallback callback,
2253523f5352Sopenharmony_ci        void *pContext
2254523f5352Sopenharmony_ci    );
2255523f5352Sopenharmony_ci    SLresult (*RegisterMIDIMessageCallback) (
2256523f5352Sopenharmony_ci        SLMIDIMessageItf self,
2257523f5352Sopenharmony_ci        slMIDIMessageCallback callback,
2258523f5352Sopenharmony_ci        void *pContext
2259523f5352Sopenharmony_ci    );
2260523f5352Sopenharmony_ci    SLresult (*AddMIDIMessageCallbackFilter) (
2261523f5352Sopenharmony_ci        SLMIDIMessageItf self,
2262523f5352Sopenharmony_ci        SLuint32 messageType
2263523f5352Sopenharmony_ci    );
2264523f5352Sopenharmony_ci    SLresult (*ClearMIDIMessageCallbackFilter) (
2265523f5352Sopenharmony_ci        SLMIDIMessageItf self
2266523f5352Sopenharmony_ci    );
2267523f5352Sopenharmony_ci};
2268523f5352Sopenharmony_ci
2269523f5352Sopenharmony_ci
2270523f5352Sopenharmony_ci/*---------------------------------------------------------------------------*/
2271523f5352Sopenharmony_ci/* Midi Mute Solo interface                                                  */
2272523f5352Sopenharmony_ci/* --------------------------------------------------------------------------*/
2273523f5352Sopenharmony_ci
2274523f5352Sopenharmony_ci
2275523f5352Sopenharmony_ciSL_API extern const SLInterfaceID SL_IID_MIDIMUTESOLO;
2276523f5352Sopenharmony_ci
2277523f5352Sopenharmony_cistruct SLMIDIMuteSoloItf_;
2278523f5352Sopenharmony_citypedef const struct SLMIDIMuteSoloItf_ * const * SLMIDIMuteSoloItf;
2279523f5352Sopenharmony_ci
2280523f5352Sopenharmony_cistruct SLMIDIMuteSoloItf_ {
2281523f5352Sopenharmony_ci    SLresult (*SetChannelMute) (
2282523f5352Sopenharmony_ci        SLMIDIMuteSoloItf self,
2283523f5352Sopenharmony_ci        SLuint8 channel,
2284523f5352Sopenharmony_ci        SLboolean mute
2285523f5352Sopenharmony_ci    );
2286523f5352Sopenharmony_ci    SLresult (*GetChannelMute) (
2287523f5352Sopenharmony_ci        SLMIDIMuteSoloItf self,
2288523f5352Sopenharmony_ci        SLuint8 channel,
2289523f5352Sopenharmony_ci        SLboolean *pMute
2290523f5352Sopenharmony_ci    );
2291523f5352Sopenharmony_ci    SLresult (*SetChannelSolo) (
2292523f5352Sopenharmony_ci        SLMIDIMuteSoloItf self,
2293523f5352Sopenharmony_ci        SLuint8 channel,
2294523f5352Sopenharmony_ci        SLboolean solo
2295523f5352Sopenharmony_ci    );
2296523f5352Sopenharmony_ci    SLresult (*GetChannelSolo) (
2297523f5352Sopenharmony_ci        SLMIDIMuteSoloItf self,
2298523f5352Sopenharmony_ci        SLuint8 channel,
2299523f5352Sopenharmony_ci        SLboolean *pSolo
2300523f5352Sopenharmony_ci    );
2301523f5352Sopenharmony_ci    SLresult (*GetTrackCount) (
2302523f5352Sopenharmony_ci        SLMIDIMuteSoloItf self,
2303523f5352Sopenharmony_ci        SLuint16 *pCount
2304523f5352Sopenharmony_ci    );
2305523f5352Sopenharmony_ci    SLresult (*SetTrackMute) (
2306523f5352Sopenharmony_ci        SLMIDIMuteSoloItf self,
2307523f5352Sopenharmony_ci        SLuint16 track,
2308523f5352Sopenharmony_ci        SLboolean mute
2309523f5352Sopenharmony_ci    );
2310523f5352Sopenharmony_ci    SLresult (*GetTrackMute) (
2311523f5352Sopenharmony_ci        SLMIDIMuteSoloItf self,
2312523f5352Sopenharmony_ci        SLuint16 track,
2313523f5352Sopenharmony_ci        SLboolean *pMute
2314523f5352Sopenharmony_ci    );
2315523f5352Sopenharmony_ci    SLresult (*SetTrackSolo) (
2316523f5352Sopenharmony_ci        SLMIDIMuteSoloItf self,
2317523f5352Sopenharmony_ci        SLuint16 track,
2318523f5352Sopenharmony_ci        SLboolean solo
2319523f5352Sopenharmony_ci    );
2320523f5352Sopenharmony_ci    SLresult (*GetTrackSolo) (
2321523f5352Sopenharmony_ci        SLMIDIMuteSoloItf self,
2322523f5352Sopenharmony_ci        SLuint16 track,
2323523f5352Sopenharmony_ci        SLboolean *pSolo
2324523f5352Sopenharmony_ci    );
2325523f5352Sopenharmony_ci};
2326523f5352Sopenharmony_ci
2327523f5352Sopenharmony_ci
2328523f5352Sopenharmony_ci/*---------------------------------------------------------------------------*/
2329523f5352Sopenharmony_ci/* Midi Tempo interface                                                      */
2330523f5352Sopenharmony_ci/* --------------------------------------------------------------------------*/
2331523f5352Sopenharmony_ci
2332523f5352Sopenharmony_ci
2333523f5352Sopenharmony_ciSL_API extern const SLInterfaceID SL_IID_MIDITEMPO;
2334523f5352Sopenharmony_ci
2335523f5352Sopenharmony_cistruct SLMIDITempoItf_;
2336523f5352Sopenharmony_citypedef const struct SLMIDITempoItf_ * const * SLMIDITempoItf;
2337523f5352Sopenharmony_ci
2338523f5352Sopenharmony_cistruct SLMIDITempoItf_ {
2339523f5352Sopenharmony_ci    SLresult (*SetTicksPerQuarterNote) (
2340523f5352Sopenharmony_ci        SLMIDITempoItf self,
2341523f5352Sopenharmony_ci        SLuint32 tpqn
2342523f5352Sopenharmony_ci    );
2343523f5352Sopenharmony_ci    SLresult (*GetTicksPerQuarterNote) (
2344523f5352Sopenharmony_ci        SLMIDITempoItf self,
2345523f5352Sopenharmony_ci        SLuint32 *pTpqn
2346523f5352Sopenharmony_ci    );
2347523f5352Sopenharmony_ci    SLresult (*SetMicrosecondsPerQuarterNote) (
2348523f5352Sopenharmony_ci        SLMIDITempoItf self,
2349523f5352Sopenharmony_ci        SLmicrosecond uspqn
2350523f5352Sopenharmony_ci    );
2351523f5352Sopenharmony_ci    SLresult (*GetMicrosecondsPerQuarterNote) (
2352523f5352Sopenharmony_ci        SLMIDITempoItf self,
2353523f5352Sopenharmony_ci        SLmicrosecond *uspqn
2354523f5352Sopenharmony_ci    );
2355523f5352Sopenharmony_ci};
2356523f5352Sopenharmony_ci
2357523f5352Sopenharmony_ci
2358523f5352Sopenharmony_ci/*---------------------------------------------------------------------------*/
2359523f5352Sopenharmony_ci/* Midi Time interface                                                       */
2360523f5352Sopenharmony_ci/* --------------------------------------------------------------------------*/
2361523f5352Sopenharmony_ci
2362523f5352Sopenharmony_ci
2363523f5352Sopenharmony_ciSL_API extern const SLInterfaceID SL_IID_MIDITIME;
2364523f5352Sopenharmony_ci
2365523f5352Sopenharmony_cistruct SLMIDITimeItf_;
2366523f5352Sopenharmony_citypedef const struct SLMIDITimeItf_ * const * SLMIDITimeItf;
2367523f5352Sopenharmony_ci
2368523f5352Sopenharmony_cistruct SLMIDITimeItf_ {
2369523f5352Sopenharmony_ci    SLresult (*GetDuration) (
2370523f5352Sopenharmony_ci        SLMIDITimeItf self,
2371523f5352Sopenharmony_ci        SLuint32 *pDuration
2372523f5352Sopenharmony_ci    );
2373523f5352Sopenharmony_ci    SLresult (*SetPosition) (
2374523f5352Sopenharmony_ci        SLMIDITimeItf self,
2375523f5352Sopenharmony_ci        SLuint32 position
2376523f5352Sopenharmony_ci    );
2377523f5352Sopenharmony_ci    SLresult (*GetPosition) (
2378523f5352Sopenharmony_ci        SLMIDITimeItf self,
2379523f5352Sopenharmony_ci        SLuint32 *pPosition
2380523f5352Sopenharmony_ci    );
2381523f5352Sopenharmony_ci    SLresult (*SetLoopPoints) (
2382523f5352Sopenharmony_ci        SLMIDITimeItf self,
2383523f5352Sopenharmony_ci        SLuint32 startTick,
2384523f5352Sopenharmony_ci        SLuint32 numTicks
2385523f5352Sopenharmony_ci    );
2386523f5352Sopenharmony_ci    SLresult (*GetLoopPoints) (
2387523f5352Sopenharmony_ci        SLMIDITimeItf self,
2388523f5352Sopenharmony_ci        SLuint32 *pStartTick,
2389523f5352Sopenharmony_ci        SLuint32 *pNumTicks
2390523f5352Sopenharmony_ci    );
2391523f5352Sopenharmony_ci};
2392523f5352Sopenharmony_ci
2393523f5352Sopenharmony_ci
2394523f5352Sopenharmony_ci/*---------------------------------------------------------------------------*/
2395523f5352Sopenharmony_ci/* Audio Decoder Capabilities Interface                                      */
2396523f5352Sopenharmony_ci/* --------------------------------------------------------------------------*/
2397523f5352Sopenharmony_ci
2398523f5352Sopenharmony_ci/*Audio Codec related defines*/
2399523f5352Sopenharmony_ci#define SL_AUDIOSTREAMFORMAT_UNDEFINED        ((SLuint32) 0x00000000)
2400523f5352Sopenharmony_ci
2401523f5352Sopenharmony_ci#define SL_RATECONTROLMODE_CONSTANTBITRATE    ((SLuint32) 0x00000001)
2402523f5352Sopenharmony_ci#define SL_RATECONTROLMODE_VARIABLEBITRATE    ((SLuint32) 0x00000002)
2403523f5352Sopenharmony_ci
2404523f5352Sopenharmony_ci#define SL_AUDIOCODEC_PCM         ((SLuint32) 0x00000001)
2405523f5352Sopenharmony_ci#define SL_AUDIOCODEC_MP3         ((SLuint32) 0x00000002)
2406523f5352Sopenharmony_ci#define SL_AUDIOCODEC_AMR         ((SLuint32) 0x00000003)
2407523f5352Sopenharmony_ci#define SL_AUDIOCODEC_AMRWB       ((SLuint32) 0x00000004)
2408523f5352Sopenharmony_ci#define SL_AUDIOCODEC_AMRWBPLUS   ((SLuint32) 0x00000005)
2409523f5352Sopenharmony_ci#define SL_AUDIOCODEC_AAC         ((SLuint32) 0x00000006)
2410523f5352Sopenharmony_ci#define SL_AUDIOCODEC_WMA         ((SLuint32) 0x00000007)
2411523f5352Sopenharmony_ci#define SL_AUDIOCODEC_REAL        ((SLuint32) 0x00000008)
2412523f5352Sopenharmony_ci#define SL_AUDIOCODEC_VORBIS      ((SLuint32) 0x00000009)
2413523f5352Sopenharmony_ci
2414523f5352Sopenharmony_ci#define SL_AUDIOPROFILE_PCM                   ((SLuint32) 0x00000001)
2415523f5352Sopenharmony_ci
2416523f5352Sopenharmony_ci#define SL_AUDIOPROFILE_MPEG1_L3              ((SLuint32) 0x00000001)
2417523f5352Sopenharmony_ci#define SL_AUDIOPROFILE_MPEG2_L3              ((SLuint32) 0x00000002)
2418523f5352Sopenharmony_ci#define SL_AUDIOPROFILE_MPEG25_L3             ((SLuint32) 0x00000003)
2419523f5352Sopenharmony_ci
2420523f5352Sopenharmony_ci#define SL_AUDIOCHANMODE_MP3_MONO             ((SLuint32) 0x00000001)
2421523f5352Sopenharmony_ci#define SL_AUDIOCHANMODE_MP3_STEREO           ((SLuint32) 0x00000002)
2422523f5352Sopenharmony_ci#define SL_AUDIOCHANMODE_MP3_JOINTSTEREO      ((SLuint32) 0x00000003)
2423523f5352Sopenharmony_ci#define SL_AUDIOCHANMODE_MP3_DUAL             ((SLuint32) 0x00000004)
2424523f5352Sopenharmony_ci
2425523f5352Sopenharmony_ci#define SL_AUDIOPROFILE_AMR            ((SLuint32) 0x00000001)
2426523f5352Sopenharmony_ci
2427523f5352Sopenharmony_ci#define SL_AUDIOSTREAMFORMAT_CONFORMANCE    ((SLuint32) 0x00000001)
2428523f5352Sopenharmony_ci#define SL_AUDIOSTREAMFORMAT_IF1            ((SLuint32) 0x00000002)
2429523f5352Sopenharmony_ci#define SL_AUDIOSTREAMFORMAT_IF2            ((SLuint32) 0x00000003)
2430523f5352Sopenharmony_ci#define SL_AUDIOSTREAMFORMAT_FSF            ((SLuint32) 0x00000004)
2431523f5352Sopenharmony_ci#define SL_AUDIOSTREAMFORMAT_RTPPAYLOAD    ((SLuint32) 0x00000005)
2432523f5352Sopenharmony_ci#define SL_AUDIOSTREAMFORMAT_ITU            ((SLuint32) 0x00000006)
2433523f5352Sopenharmony_ci
2434523f5352Sopenharmony_ci#define SL_AUDIOPROFILE_AMRWB            ((SLuint32) 0x00000001)
2435523f5352Sopenharmony_ci
2436523f5352Sopenharmony_ci#define SL_AUDIOPROFILE_AMRWBPLUS        ((SLuint32) 0x00000001)
2437523f5352Sopenharmony_ci
2438523f5352Sopenharmony_ci#define SL_AUDIOPROFILE_AAC_AAC            ((SLuint32) 0x00000001)
2439523f5352Sopenharmony_ci
2440523f5352Sopenharmony_ci#define SL_AUDIOMODE_AAC_MAIN            ((SLuint32) 0x00000001)
2441523f5352Sopenharmony_ci#define SL_AUDIOMODE_AAC_LC            ((SLuint32) 0x00000002)
2442523f5352Sopenharmony_ci#define SL_AUDIOMODE_AAC_SSR            ((SLuint32) 0x00000003)
2443523f5352Sopenharmony_ci#define SL_AUDIOMODE_AAC_LTP            ((SLuint32) 0x00000004)
2444523f5352Sopenharmony_ci#define SL_AUDIOMODE_AAC_HE            ((SLuint32) 0x00000005)
2445523f5352Sopenharmony_ci#define SL_AUDIOMODE_AAC_SCALABLE        ((SLuint32) 0x00000006)
2446523f5352Sopenharmony_ci#define SL_AUDIOMODE_AAC_ERLC            ((SLuint32) 0x00000007)
2447523f5352Sopenharmony_ci#define SL_AUDIOMODE_AAC_LD            ((SLuint32) 0x00000008)
2448523f5352Sopenharmony_ci#define SL_AUDIOMODE_AAC_HE_PS            ((SLuint32) 0x00000009)
2449523f5352Sopenharmony_ci#define SL_AUDIOMODE_AAC_HE_MPS            ((SLuint32) 0x0000000A)
2450523f5352Sopenharmony_ci
2451523f5352Sopenharmony_ci#define SL_AUDIOSTREAMFORMAT_MP2ADTS        ((SLuint32) 0x00000001)
2452523f5352Sopenharmony_ci#define SL_AUDIOSTREAMFORMAT_MP4ADTS        ((SLuint32) 0x00000002)
2453523f5352Sopenharmony_ci#define SL_AUDIOSTREAMFORMAT_MP4LOAS        ((SLuint32) 0x00000003)
2454523f5352Sopenharmony_ci#define SL_AUDIOSTREAMFORMAT_MP4LATM        ((SLuint32) 0x00000004)
2455523f5352Sopenharmony_ci#define SL_AUDIOSTREAMFORMAT_ADIF        ((SLuint32) 0x00000005)
2456523f5352Sopenharmony_ci#define SL_AUDIOSTREAMFORMAT_MP4FF        ((SLuint32) 0x00000006)
2457523f5352Sopenharmony_ci#define SL_AUDIOSTREAMFORMAT_RAW            ((SLuint32) 0x00000007)
2458523f5352Sopenharmony_ci
2459523f5352Sopenharmony_ci#define SL_AUDIOPROFILE_WMA7        ((SLuint32) 0x00000001)
2460523f5352Sopenharmony_ci#define SL_AUDIOPROFILE_WMA8        ((SLuint32) 0x00000002)
2461523f5352Sopenharmony_ci#define SL_AUDIOPROFILE_WMA9        ((SLuint32) 0x00000003)
2462523f5352Sopenharmony_ci#define SL_AUDIOPROFILE_WMA10        ((SLuint32) 0x00000004)
2463523f5352Sopenharmony_ci
2464523f5352Sopenharmony_ci#define SL_AUDIOMODE_WMA_LEVEL1        ((SLuint32) 0x00000001)
2465523f5352Sopenharmony_ci#define SL_AUDIOMODE_WMA_LEVEL2        ((SLuint32) 0x00000002)
2466523f5352Sopenharmony_ci#define SL_AUDIOMODE_WMA_LEVEL3        ((SLuint32) 0x00000003)
2467523f5352Sopenharmony_ci#define SL_AUDIOMODE_WMA_LEVEL4        ((SLuint32) 0x00000004)
2468523f5352Sopenharmony_ci#define SL_AUDIOMODE_WMAPRO_LEVELM0    ((SLuint32) 0x00000005)
2469523f5352Sopenharmony_ci#define SL_AUDIOMODE_WMAPRO_LEVELM1    ((SLuint32) 0x00000006)
2470523f5352Sopenharmony_ci#define SL_AUDIOMODE_WMAPRO_LEVELM2    ((SLuint32) 0x00000007)
2471523f5352Sopenharmony_ci#define SL_AUDIOMODE_WMAPRO_LEVELM3    ((SLuint32) 0x00000008)
2472523f5352Sopenharmony_ci
2473523f5352Sopenharmony_ci#define SL_AUDIOPROFILE_REALAUDIO        ((SLuint32) 0x00000001)
2474523f5352Sopenharmony_ci
2475523f5352Sopenharmony_ci#define SL_AUDIOMODE_REALAUDIO_G2        ((SLuint32) 0x00000001)
2476523f5352Sopenharmony_ci#define SL_AUDIOMODE_REALAUDIO_8            ((SLuint32) 0x00000002)
2477523f5352Sopenharmony_ci#define SL_AUDIOMODE_REALAUDIO_10        ((SLuint32) 0x00000003)
2478523f5352Sopenharmony_ci#define SL_AUDIOMODE_REALAUDIO_SURROUND    ((SLuint32) 0x00000004)
2479523f5352Sopenharmony_ci
2480523f5352Sopenharmony_citypedef struct SLAudioCodecDescriptor_ {
2481523f5352Sopenharmony_ci    SLuint32      maxChannels;
2482523f5352Sopenharmony_ci    SLuint32      minBitsPerSample;
2483523f5352Sopenharmony_ci    SLuint32      maxBitsPerSample;
2484523f5352Sopenharmony_ci    SLmilliHertz  minSampleRate;
2485523f5352Sopenharmony_ci    SLmilliHertz  maxSampleRate;
2486523f5352Sopenharmony_ci    SLboolean     isFreqRangeContinuous;
2487523f5352Sopenharmony_ci    SLmilliHertz *pSampleRatesSupported;
2488523f5352Sopenharmony_ci    SLuint32      numSampleRatesSupported;
2489523f5352Sopenharmony_ci    SLuint32      minBitRate;
2490523f5352Sopenharmony_ci    SLuint32      maxBitRate;
2491523f5352Sopenharmony_ci    SLboolean     isBitrateRangeContinuous;
2492523f5352Sopenharmony_ci    SLuint32     *pBitratesSupported;
2493523f5352Sopenharmony_ci    SLuint32      numBitratesSupported;
2494523f5352Sopenharmony_ci    SLuint32      profileSetting;
2495523f5352Sopenharmony_ci    SLuint32      modeSetting;
2496523f5352Sopenharmony_ci    SLuint32      streamFormat;
2497523f5352Sopenharmony_ci} SLAudioCodecDescriptor;
2498523f5352Sopenharmony_ci
2499523f5352Sopenharmony_ciSL_API extern const SLInterfaceID SL_IID_AUDIODECODERCAPABILITIES;
2500523f5352Sopenharmony_ci
2501523f5352Sopenharmony_cistruct SLAudioDecoderCapabilitiesItf_;
2502523f5352Sopenharmony_citypedef const struct SLAudioDecoderCapabilitiesItf_ * const * SLAudioDecoderCapabilitiesItf;
2503523f5352Sopenharmony_ci
2504523f5352Sopenharmony_cistruct SLAudioDecoderCapabilitiesItf_ {
2505523f5352Sopenharmony_ci    SLresult (*GetAudioDecoders) (
2506523f5352Sopenharmony_ci        SLAudioDecoderCapabilitiesItf self,
2507523f5352Sopenharmony_ci        SLuint32 * pNumDecoders ,
2508523f5352Sopenharmony_ci        SLuint32 *pDecoderIds
2509523f5352Sopenharmony_ci    );
2510523f5352Sopenharmony_ci    SLresult (*GetAudioDecoderCapabilities) (
2511523f5352Sopenharmony_ci        SLAudioDecoderCapabilitiesItf self,
2512523f5352Sopenharmony_ci        SLuint32 decoderId,
2513523f5352Sopenharmony_ci        SLuint32 *pIndex,
2514523f5352Sopenharmony_ci        SLAudioCodecDescriptor *pDescriptor
2515523f5352Sopenharmony_ci    );
2516523f5352Sopenharmony_ci};
2517523f5352Sopenharmony_ci
2518523f5352Sopenharmony_ci
2519523f5352Sopenharmony_ci
2520523f5352Sopenharmony_ci
2521523f5352Sopenharmony_ci/*---------------------------------------------------------------------------*/
2522523f5352Sopenharmony_ci/* Audio Encoder Capabilities Interface                                      */
2523523f5352Sopenharmony_ci/* --------------------------------------------------------------------------*/
2524523f5352Sopenharmony_ci
2525523f5352Sopenharmony_ci/* Structure used when setting audio encoding parameters */
2526523f5352Sopenharmony_ci
2527523f5352Sopenharmony_citypedef struct SLAudioEncoderSettings_ {
2528523f5352Sopenharmony_ci    SLuint32 encoderId;
2529523f5352Sopenharmony_ci    SLuint32 channelsIn;
2530523f5352Sopenharmony_ci    SLuint32 channelsOut;
2531523f5352Sopenharmony_ci    SLmilliHertz sampleRate;
2532523f5352Sopenharmony_ci    SLuint32 bitRate;
2533523f5352Sopenharmony_ci    SLuint32 bitsPerSample;
2534523f5352Sopenharmony_ci    SLuint32 rateControl;
2535523f5352Sopenharmony_ci    SLuint32 profileSetting;
2536523f5352Sopenharmony_ci    SLuint32 levelSetting;
2537523f5352Sopenharmony_ci    SLuint32 channelMode;
2538523f5352Sopenharmony_ci    SLuint32 streamFormat;
2539523f5352Sopenharmony_ci    SLuint32 encodeOptions;
2540523f5352Sopenharmony_ci    SLuint32 blockAlignment;
2541523f5352Sopenharmony_ci} SLAudioEncoderSettings;
2542523f5352Sopenharmony_ci
2543523f5352Sopenharmony_ciSL_API extern const SLInterfaceID SL_IID_AUDIOENCODERCAPABILITIES;
2544523f5352Sopenharmony_ci
2545523f5352Sopenharmony_cistruct SLAudioEncoderCapabilitiesItf_;
2546523f5352Sopenharmony_citypedef const struct SLAudioEncoderCapabilitiesItf_ * const * SLAudioEncoderCapabilitiesItf;
2547523f5352Sopenharmony_ci
2548523f5352Sopenharmony_cistruct SLAudioEncoderCapabilitiesItf_ {
2549523f5352Sopenharmony_ci    SLresult (*GetAudioEncoders) (
2550523f5352Sopenharmony_ci        SLAudioEncoderCapabilitiesItf self,
2551523f5352Sopenharmony_ci        SLuint32 *pNumEncoders ,
2552523f5352Sopenharmony_ci        SLuint32 *pEncoderIds
2553523f5352Sopenharmony_ci    );
2554523f5352Sopenharmony_ci    SLresult (*GetAudioEncoderCapabilities) (
2555523f5352Sopenharmony_ci        SLAudioEncoderCapabilitiesItf self,
2556523f5352Sopenharmony_ci        SLuint32 encoderId,
2557523f5352Sopenharmony_ci        SLuint32 *pIndex,
2558523f5352Sopenharmony_ci        SLAudioCodecDescriptor * pDescriptor
2559523f5352Sopenharmony_ci    );
2560523f5352Sopenharmony_ci};
2561523f5352Sopenharmony_ci
2562523f5352Sopenharmony_ci
2563523f5352Sopenharmony_ci/*---------------------------------------------------------------------------*/
2564523f5352Sopenharmony_ci/* Audio Encoder Interface                                                   */
2565523f5352Sopenharmony_ci/* --------------------------------------------------------------------------*/
2566523f5352Sopenharmony_ci
2567523f5352Sopenharmony_ci
2568523f5352Sopenharmony_ciSL_API extern const SLInterfaceID SL_IID_AUDIOENCODER;
2569523f5352Sopenharmony_ci
2570523f5352Sopenharmony_cistruct SLAudioEncoderItf_;
2571523f5352Sopenharmony_citypedef const struct SLAudioEncoderItf_ * const * SLAudioEncoderItf;
2572523f5352Sopenharmony_ci
2573523f5352Sopenharmony_cistruct SLAudioEncoderItf_ {
2574523f5352Sopenharmony_ci    SLresult (*SetEncoderSettings) (
2575523f5352Sopenharmony_ci        SLAudioEncoderItf        self,
2576523f5352Sopenharmony_ci        SLAudioEncoderSettings     *pSettings
2577523f5352Sopenharmony_ci    );
2578523f5352Sopenharmony_ci    SLresult (*GetEncoderSettings) (
2579523f5352Sopenharmony_ci        SLAudioEncoderItf        self,
2580523f5352Sopenharmony_ci        SLAudioEncoderSettings    *pSettings
2581523f5352Sopenharmony_ci    );
2582523f5352Sopenharmony_ci};
2583523f5352Sopenharmony_ci
2584523f5352Sopenharmony_ci
2585523f5352Sopenharmony_ci/*---------------------------------------------------------------------------*/
2586523f5352Sopenharmony_ci/* Bass Boost Interface                                                      */
2587523f5352Sopenharmony_ci/* --------------------------------------------------------------------------*/
2588523f5352Sopenharmony_ci
2589523f5352Sopenharmony_ci
2590523f5352Sopenharmony_ciSL_API extern const SLInterfaceID SL_IID_BASSBOOST;
2591523f5352Sopenharmony_ci
2592523f5352Sopenharmony_cistruct SLBassBoostItf_;
2593523f5352Sopenharmony_citypedef const struct SLBassBoostItf_ * const * SLBassBoostItf;
2594523f5352Sopenharmony_ci
2595523f5352Sopenharmony_cistruct SLBassBoostItf_ {
2596523f5352Sopenharmony_ci    SLresult (*SetEnabled)(
2597523f5352Sopenharmony_ci        SLBassBoostItf self,
2598523f5352Sopenharmony_ci        SLboolean enabled
2599523f5352Sopenharmony_ci    );
2600523f5352Sopenharmony_ci    SLresult (*IsEnabled)(
2601523f5352Sopenharmony_ci        SLBassBoostItf self,
2602523f5352Sopenharmony_ci        SLboolean *pEnabled
2603523f5352Sopenharmony_ci    );
2604523f5352Sopenharmony_ci    SLresult (*SetStrength)(
2605523f5352Sopenharmony_ci        SLBassBoostItf self,
2606523f5352Sopenharmony_ci        SLpermille strength
2607523f5352Sopenharmony_ci    );
2608523f5352Sopenharmony_ci    SLresult (*GetRoundedStrength)(
2609523f5352Sopenharmony_ci        SLBassBoostItf self,
2610523f5352Sopenharmony_ci        SLpermille *pStrength
2611523f5352Sopenharmony_ci    );
2612523f5352Sopenharmony_ci    SLresult (*IsStrengthSupported)(
2613523f5352Sopenharmony_ci        SLBassBoostItf self,
2614523f5352Sopenharmony_ci        SLboolean *pSupported
2615523f5352Sopenharmony_ci    );
2616523f5352Sopenharmony_ci};
2617523f5352Sopenharmony_ci
2618523f5352Sopenharmony_ci/*---------------------------------------------------------------------------*/
2619523f5352Sopenharmony_ci/* Pitch Interface                                                           */
2620523f5352Sopenharmony_ci/* --------------------------------------------------------------------------*/
2621523f5352Sopenharmony_ci
2622523f5352Sopenharmony_ci
2623523f5352Sopenharmony_ciSL_API extern const SLInterfaceID SL_IID_PITCH;
2624523f5352Sopenharmony_ci
2625523f5352Sopenharmony_cistruct SLPitchItf_;
2626523f5352Sopenharmony_citypedef const struct SLPitchItf_ * const * SLPitchItf;
2627523f5352Sopenharmony_ci
2628523f5352Sopenharmony_cistruct SLPitchItf_ {
2629523f5352Sopenharmony_ci    SLresult (*SetPitch) (
2630523f5352Sopenharmony_ci        SLPitchItf self,
2631523f5352Sopenharmony_ci        SLpermille pitch
2632523f5352Sopenharmony_ci    );
2633523f5352Sopenharmony_ci    SLresult (*GetPitch) (
2634523f5352Sopenharmony_ci        SLPitchItf self,
2635523f5352Sopenharmony_ci        SLpermille *pPitch
2636523f5352Sopenharmony_ci    );
2637523f5352Sopenharmony_ci    SLresult (*GetPitchCapabilities) (
2638523f5352Sopenharmony_ci        SLPitchItf self,
2639523f5352Sopenharmony_ci        SLpermille *pMinPitch,
2640523f5352Sopenharmony_ci        SLpermille *pMaxPitch
2641523f5352Sopenharmony_ci    );
2642523f5352Sopenharmony_ci};
2643523f5352Sopenharmony_ci
2644523f5352Sopenharmony_ci
2645523f5352Sopenharmony_ci/*---------------------------------------------------------------------------*/
2646523f5352Sopenharmony_ci/* Rate Pitch Interface                                                      */
2647523f5352Sopenharmony_ci/* RatePitchItf is an interface for controlling the rate a sound is played   */
2648523f5352Sopenharmony_ci/* back. A change in rate will cause a change in pitch.                      */
2649523f5352Sopenharmony_ci/* --------------------------------------------------------------------------*/
2650523f5352Sopenharmony_ci
2651523f5352Sopenharmony_ci
2652523f5352Sopenharmony_ciSL_API extern const SLInterfaceID SL_IID_RATEPITCH;
2653523f5352Sopenharmony_ci
2654523f5352Sopenharmony_cistruct SLRatePitchItf_;
2655523f5352Sopenharmony_citypedef const struct SLRatePitchItf_ * const * SLRatePitchItf;
2656523f5352Sopenharmony_ci
2657523f5352Sopenharmony_cistruct SLRatePitchItf_ {
2658523f5352Sopenharmony_ci    SLresult (*SetRate) (
2659523f5352Sopenharmony_ci        SLRatePitchItf self,
2660523f5352Sopenharmony_ci        SLpermille rate
2661523f5352Sopenharmony_ci    );
2662523f5352Sopenharmony_ci    SLresult (*GetRate) (
2663523f5352Sopenharmony_ci        SLRatePitchItf self,
2664523f5352Sopenharmony_ci        SLpermille *pRate
2665523f5352Sopenharmony_ci    );
2666523f5352Sopenharmony_ci    SLresult (*GetRatePitchCapabilities) (
2667523f5352Sopenharmony_ci        SLRatePitchItf self,
2668523f5352Sopenharmony_ci        SLpermille *pMinRate,
2669523f5352Sopenharmony_ci        SLpermille *pMaxRate
2670523f5352Sopenharmony_ci    );
2671523f5352Sopenharmony_ci};
2672523f5352Sopenharmony_ci
2673523f5352Sopenharmony_ci
2674523f5352Sopenharmony_ci/*---------------------------------------------------------------------------*/
2675523f5352Sopenharmony_ci/* Virtualizer Interface                                                      */
2676523f5352Sopenharmony_ci/* --------------------------------------------------------------------------*/
2677523f5352Sopenharmony_ci
2678523f5352Sopenharmony_ci
2679523f5352Sopenharmony_ciSL_API extern const SLInterfaceID SL_IID_VIRTUALIZER;
2680523f5352Sopenharmony_ci
2681523f5352Sopenharmony_cistruct SLVirtualizerItf_;
2682523f5352Sopenharmony_citypedef const struct SLVirtualizerItf_ * const * SLVirtualizerItf;
2683523f5352Sopenharmony_ci
2684523f5352Sopenharmony_cistruct SLVirtualizerItf_ {
2685523f5352Sopenharmony_ci    SLresult (*SetEnabled)(
2686523f5352Sopenharmony_ci        SLVirtualizerItf self,
2687523f5352Sopenharmony_ci        SLboolean enabled
2688523f5352Sopenharmony_ci    );
2689523f5352Sopenharmony_ci    SLresult (*IsEnabled)(
2690523f5352Sopenharmony_ci        SLVirtualizerItf self,
2691523f5352Sopenharmony_ci        SLboolean *pEnabled
2692523f5352Sopenharmony_ci    );
2693523f5352Sopenharmony_ci    SLresult (*SetStrength)(
2694523f5352Sopenharmony_ci        SLVirtualizerItf self,
2695523f5352Sopenharmony_ci        SLpermille strength
2696523f5352Sopenharmony_ci    );
2697523f5352Sopenharmony_ci    SLresult (*GetRoundedStrength)(
2698523f5352Sopenharmony_ci        SLVirtualizerItf self,
2699523f5352Sopenharmony_ci        SLpermille *pStrength
2700523f5352Sopenharmony_ci    );
2701523f5352Sopenharmony_ci    SLresult (*IsStrengthSupported)(
2702523f5352Sopenharmony_ci        SLVirtualizerItf self,
2703523f5352Sopenharmony_ci        SLboolean *pSupported
2704523f5352Sopenharmony_ci    );
2705523f5352Sopenharmony_ci};
2706523f5352Sopenharmony_ci
2707523f5352Sopenharmony_ci/*---------------------------------------------------------------------------*/
2708523f5352Sopenharmony_ci/* Visualization Interface                                                   */
2709523f5352Sopenharmony_ci/* --------------------------------------------------------------------------*/
2710523f5352Sopenharmony_ci
2711523f5352Sopenharmony_ci
2712523f5352Sopenharmony_ciSL_API extern const SLInterfaceID SL_IID_VISUALIZATION;
2713523f5352Sopenharmony_ci
2714523f5352Sopenharmony_cistruct SLVisualizationItf_;
2715523f5352Sopenharmony_citypedef const struct SLVisualizationItf_ * const * SLVisualizationItf;
2716523f5352Sopenharmony_ci
2717523f5352Sopenharmony_citypedef void (SLAPIENTRY *slVisualizationCallback) (
2718523f5352Sopenharmony_ci    void *pContext,
2719523f5352Sopenharmony_ci    const SLuint8 waveform[],
2720523f5352Sopenharmony_ci    const SLuint8 fft[],
2721523f5352Sopenharmony_ci    SLmilliHertz samplerate
2722523f5352Sopenharmony_ci);
2723523f5352Sopenharmony_ci
2724523f5352Sopenharmony_cistruct SLVisualizationItf_{
2725523f5352Sopenharmony_ci    SLresult (*RegisterVisualizationCallback)(
2726523f5352Sopenharmony_ci        SLVisualizationItf self,
2727523f5352Sopenharmony_ci        slVisualizationCallback callback,
2728523f5352Sopenharmony_ci        void *pContext,
2729523f5352Sopenharmony_ci        SLmilliHertz rate
2730523f5352Sopenharmony_ci    );
2731523f5352Sopenharmony_ci    SLresult (*GetMaxRate)(
2732523f5352Sopenharmony_ci        SLVisualizationItf self,
2733523f5352Sopenharmony_ci        SLmilliHertz* pRate
2734523f5352Sopenharmony_ci    );
2735523f5352Sopenharmony_ci};
2736523f5352Sopenharmony_ci
2737523f5352Sopenharmony_ci
2738523f5352Sopenharmony_ci/*---------------------------------------------------------------------------*/
2739523f5352Sopenharmony_ci/* Engine Interface                                                          */
2740523f5352Sopenharmony_ci/* --------------------------------------------------------------------------*/
2741523f5352Sopenharmony_ci
2742523f5352Sopenharmony_ci
2743523f5352Sopenharmony_ciSL_API extern const SLInterfaceID SL_IID_ENGINE;
2744523f5352Sopenharmony_ci
2745523f5352Sopenharmony_cistruct SLEngineItf_;
2746523f5352Sopenharmony_citypedef const struct SLEngineItf_ * const * SLEngineItf;
2747523f5352Sopenharmony_ci
2748523f5352Sopenharmony_ci
2749523f5352Sopenharmony_cistruct SLEngineItf_ {
2750523f5352Sopenharmony_ci
2751523f5352Sopenharmony_ci    SLresult (*CreateLEDDevice) (
2752523f5352Sopenharmony_ci        SLEngineItf self,
2753523f5352Sopenharmony_ci        SLObjectItf * pDevice,
2754523f5352Sopenharmony_ci        SLuint32 deviceID,
2755523f5352Sopenharmony_ci        SLuint32 numInterfaces,
2756523f5352Sopenharmony_ci        const SLInterfaceID * pInterfaceIds,
2757523f5352Sopenharmony_ci        const SLboolean * pInterfaceRequired
2758523f5352Sopenharmony_ci    );
2759523f5352Sopenharmony_ci    SLresult (*CreateVibraDevice) (
2760523f5352Sopenharmony_ci        SLEngineItf self,
2761523f5352Sopenharmony_ci        SLObjectItf * pDevice,
2762523f5352Sopenharmony_ci        SLuint32 deviceID,
2763523f5352Sopenharmony_ci        SLuint32 numInterfaces,
2764523f5352Sopenharmony_ci        const SLInterfaceID * pInterfaceIds,
2765523f5352Sopenharmony_ci        const SLboolean * pInterfaceRequired
2766523f5352Sopenharmony_ci    );
2767523f5352Sopenharmony_ci    SLresult (*CreateAudioPlayer) (
2768523f5352Sopenharmony_ci        SLEngineItf self,
2769523f5352Sopenharmony_ci        SLObjectItf * pPlayer,
2770523f5352Sopenharmony_ci        const SLDataSource *pAudioSrc,
2771523f5352Sopenharmony_ci        const SLDataSink *pAudioSnk,
2772523f5352Sopenharmony_ci        SLuint32 numInterfaces,
2773523f5352Sopenharmony_ci        const SLInterfaceID * pInterfaceIds,
2774523f5352Sopenharmony_ci        const SLboolean * pInterfaceRequired
2775523f5352Sopenharmony_ci    );
2776523f5352Sopenharmony_ci    SLresult (*CreateAudioRecorder) (
2777523f5352Sopenharmony_ci        SLEngineItf self,
2778523f5352Sopenharmony_ci        SLObjectItf * pRecorder,
2779523f5352Sopenharmony_ci        const SLDataSource *pAudioSrc,
2780523f5352Sopenharmony_ci        const SLDataSink *pAudioSnk,
2781523f5352Sopenharmony_ci        SLuint32 numInterfaces,
2782523f5352Sopenharmony_ci        const SLInterfaceID * pInterfaceIds,
2783523f5352Sopenharmony_ci        const SLboolean * pInterfaceRequired
2784523f5352Sopenharmony_ci    );
2785523f5352Sopenharmony_ci    SLresult (*CreateMidiPlayer) (
2786523f5352Sopenharmony_ci        SLEngineItf self,
2787523f5352Sopenharmony_ci        SLObjectItf * pPlayer,
2788523f5352Sopenharmony_ci        const SLDataSource *pMIDISrc,
2789523f5352Sopenharmony_ci        const SLDataSource *pBankSrc,
2790523f5352Sopenharmony_ci        const SLDataSink *pAudioOutput,
2791523f5352Sopenharmony_ci        const SLDataSink *pVibra,
2792523f5352Sopenharmony_ci        const SLDataSink *pLEDArray,
2793523f5352Sopenharmony_ci        SLuint32 numInterfaces,
2794523f5352Sopenharmony_ci        const SLInterfaceID * pInterfaceIds,
2795523f5352Sopenharmony_ci        const SLboolean * pInterfaceRequired
2796523f5352Sopenharmony_ci    );
2797523f5352Sopenharmony_ci    SLresult (*CreateListener) (
2798523f5352Sopenharmony_ci        SLEngineItf self,
2799523f5352Sopenharmony_ci        SLObjectItf * pListener,
2800523f5352Sopenharmony_ci        SLuint32 numInterfaces,
2801523f5352Sopenharmony_ci        const SLInterfaceID * pInterfaceIds,
2802523f5352Sopenharmony_ci        const SLboolean * pInterfaceRequired
2803523f5352Sopenharmony_ci    );
2804523f5352Sopenharmony_ci    SLresult (*Create3DGroup) (
2805523f5352Sopenharmony_ci        SLEngineItf self,
2806523f5352Sopenharmony_ci        SLObjectItf * pGroup,
2807523f5352Sopenharmony_ci        SLuint32 numInterfaces,
2808523f5352Sopenharmony_ci        const SLInterfaceID * pInterfaceIds,
2809523f5352Sopenharmony_ci        const SLboolean * pInterfaceRequired
2810523f5352Sopenharmony_ci    );
2811523f5352Sopenharmony_ci    SLresult (*CreateOutputMix) (
2812523f5352Sopenharmony_ci        SLEngineItf self,
2813523f5352Sopenharmony_ci        SLObjectItf * pMix,
2814523f5352Sopenharmony_ci        SLuint32 numInterfaces,
2815523f5352Sopenharmony_ci        const SLInterfaceID * pInterfaceIds,
2816523f5352Sopenharmony_ci        const SLboolean * pInterfaceRequired
2817523f5352Sopenharmony_ci    );
2818523f5352Sopenharmony_ci    SLresult (*CreateMetadataExtractor) (
2819523f5352Sopenharmony_ci        SLEngineItf self,
2820523f5352Sopenharmony_ci        SLObjectItf * pMetadataExtractor,
2821523f5352Sopenharmony_ci        const SLDataSource * pDataSource,
2822523f5352Sopenharmony_ci        SLuint32 numInterfaces,
2823523f5352Sopenharmony_ci        const SLInterfaceID * pInterfaceIds,
2824523f5352Sopenharmony_ci        const SLboolean * pInterfaceRequired
2825523f5352Sopenharmony_ci    );
2826523f5352Sopenharmony_ci    SLresult (*CreateExtensionObject) (
2827523f5352Sopenharmony_ci        SLEngineItf self,
2828523f5352Sopenharmony_ci        SLObjectItf * pObject,
2829523f5352Sopenharmony_ci        void * pParameters,
2830523f5352Sopenharmony_ci        SLuint32 objectID,
2831523f5352Sopenharmony_ci        SLuint32 numInterfaces,
2832523f5352Sopenharmony_ci        const SLInterfaceID * pInterfaceIds,
2833523f5352Sopenharmony_ci        const SLboolean * pInterfaceRequired
2834523f5352Sopenharmony_ci    );
2835523f5352Sopenharmony_ci    SLresult (*QueryNumSupportedInterfaces) (
2836523f5352Sopenharmony_ci        SLEngineItf self,
2837523f5352Sopenharmony_ci        SLuint32 objectID,
2838523f5352Sopenharmony_ci        SLuint32 * pNumSupportedInterfaces
2839523f5352Sopenharmony_ci    );
2840523f5352Sopenharmony_ci    SLresult (*QuerySupportedInterfaces) (
2841523f5352Sopenharmony_ci        SLEngineItf self,
2842523f5352Sopenharmony_ci        SLuint32 objectID,
2843523f5352Sopenharmony_ci        SLuint32 index,
2844523f5352Sopenharmony_ci        SLInterfaceID * pInterfaceId
2845523f5352Sopenharmony_ci    );
2846523f5352Sopenharmony_ci    SLresult (*QueryNumSupportedExtensions) (
2847523f5352Sopenharmony_ci        SLEngineItf self,
2848523f5352Sopenharmony_ci        SLuint32 * pNumExtensions
2849523f5352Sopenharmony_ci    );
2850523f5352Sopenharmony_ci    SLresult (*QuerySupportedExtension) (
2851523f5352Sopenharmony_ci        SLEngineItf self,
2852523f5352Sopenharmony_ci        SLuint32 index,
2853523f5352Sopenharmony_ci        SLchar * pExtensionName,
2854523f5352Sopenharmony_ci        SLuint16 * pNameLength
2855523f5352Sopenharmony_ci    );
2856523f5352Sopenharmony_ci    SLresult (*IsExtensionSupported) (
2857523f5352Sopenharmony_ci        SLEngineItf self,
2858523f5352Sopenharmony_ci        const SLchar * pExtensionName,
2859523f5352Sopenharmony_ci        SLboolean * pSupported
2860523f5352Sopenharmony_ci    );
2861523f5352Sopenharmony_ci};
2862523f5352Sopenharmony_ci
2863523f5352Sopenharmony_ci
2864523f5352Sopenharmony_ci/*---------------------------------------------------------------------------*/
2865523f5352Sopenharmony_ci/* Engine Capabilities Interface                                             */
2866523f5352Sopenharmony_ci/* --------------------------------------------------------------------------*/
2867523f5352Sopenharmony_ci
2868523f5352Sopenharmony_ci
2869523f5352Sopenharmony_ciSL_API extern const SLInterfaceID SL_IID_ENGINECAPABILITIES;
2870523f5352Sopenharmony_ci
2871523f5352Sopenharmony_cistruct SLEngineCapabilitiesItf_;
2872523f5352Sopenharmony_citypedef const struct SLEngineCapabilitiesItf_ * const * SLEngineCapabilitiesItf;
2873523f5352Sopenharmony_ci
2874523f5352Sopenharmony_cistruct SLEngineCapabilitiesItf_ {
2875523f5352Sopenharmony_ci    SLresult (*QuerySupportedProfiles) (
2876523f5352Sopenharmony_ci        SLEngineCapabilitiesItf self,
2877523f5352Sopenharmony_ci        SLuint16 *pProfilesSupported
2878523f5352Sopenharmony_ci    );
2879523f5352Sopenharmony_ci    SLresult (*QueryAvailableVoices) (
2880523f5352Sopenharmony_ci        SLEngineCapabilitiesItf self,
2881523f5352Sopenharmony_ci        SLuint16 voiceType,
2882523f5352Sopenharmony_ci        SLuint16 *pNumMaxVoices,
2883523f5352Sopenharmony_ci        SLboolean *pIsAbsoluteMax,
2884523f5352Sopenharmony_ci        SLuint16 *pNumFreeVoices
2885523f5352Sopenharmony_ci    );
2886523f5352Sopenharmony_ci    SLresult (*QueryNumberOfMIDISynthesizers) (
2887523f5352Sopenharmony_ci        SLEngineCapabilitiesItf self,
2888523f5352Sopenharmony_ci        SLuint16 *pNumMIDIsynthesizers
2889523f5352Sopenharmony_ci    );
2890523f5352Sopenharmony_ci    SLresult (*QueryAPIVersion) (
2891523f5352Sopenharmony_ci        SLEngineCapabilitiesItf self,
2892523f5352Sopenharmony_ci        SLuint16 *pMajor,
2893523f5352Sopenharmony_ci        SLuint16 *pMinor,
2894523f5352Sopenharmony_ci        SLuint16 *pStep
2895523f5352Sopenharmony_ci    );
2896523f5352Sopenharmony_ci    SLresult (*QueryLEDCapabilities) (
2897523f5352Sopenharmony_ci        SLEngineCapabilitiesItf self,
2898523f5352Sopenharmony_ci        SLuint32 *pIndex,
2899523f5352Sopenharmony_ci        SLuint32 *pLEDDeviceID,
2900523f5352Sopenharmony_ci        SLLEDDescriptor *pDescriptor
2901523f5352Sopenharmony_ci    );
2902523f5352Sopenharmony_ci    SLresult (*QueryVibraCapabilities) (
2903523f5352Sopenharmony_ci        SLEngineCapabilitiesItf self,
2904523f5352Sopenharmony_ci        SLuint32 *pIndex,
2905523f5352Sopenharmony_ci        SLuint32 *pVibraDeviceID,
2906523f5352Sopenharmony_ci        SLVibraDescriptor *pDescriptor
2907523f5352Sopenharmony_ci    );
2908523f5352Sopenharmony_ci    SLresult (*IsThreadSafe) (
2909523f5352Sopenharmony_ci        SLEngineCapabilitiesItf self,
2910523f5352Sopenharmony_ci        SLboolean *pIsThreadSafe
2911523f5352Sopenharmony_ci    );
2912523f5352Sopenharmony_ci};
2913523f5352Sopenharmony_ci
2914523f5352Sopenharmony_ci/*---------------------------------------------------------------------------*/
2915523f5352Sopenharmony_ci/* Thread Sync Interface                                                     */
2916523f5352Sopenharmony_ci/* --------------------------------------------------------------------------*/
2917523f5352Sopenharmony_ci
2918523f5352Sopenharmony_ci
2919523f5352Sopenharmony_ciSL_API extern const SLInterfaceID SL_IID_THREADSYNC;
2920523f5352Sopenharmony_ci
2921523f5352Sopenharmony_cistruct SLThreadSyncItf_;
2922523f5352Sopenharmony_citypedef const struct SLThreadSyncItf_ * const * SLThreadSyncItf;
2923523f5352Sopenharmony_ci
2924523f5352Sopenharmony_ci
2925523f5352Sopenharmony_cistruct SLThreadSyncItf_ {
2926523f5352Sopenharmony_ci    SLresult (*EnterCriticalSection) (
2927523f5352Sopenharmony_ci        SLThreadSyncItf self
2928523f5352Sopenharmony_ci    );
2929523f5352Sopenharmony_ci    SLresult (*ExitCriticalSection) (
2930523f5352Sopenharmony_ci        SLThreadSyncItf self
2931523f5352Sopenharmony_ci    );
2932523f5352Sopenharmony_ci};
2933523f5352Sopenharmony_ci
2934523f5352Sopenharmony_ci
2935523f5352Sopenharmony_ci/*****************************************************************************/
2936523f5352Sopenharmony_ci/* SL engine constructor                                                     */
2937523f5352Sopenharmony_ci/*****************************************************************************/
2938523f5352Sopenharmony_ci
2939523f5352Sopenharmony_ci#define SL_ENGINEOPTION_THREADSAFE        ((SLuint32) 0x00000001)
2940523f5352Sopenharmony_ci#define SL_ENGINEOPTION_LOSSOFCONTROL    ((SLuint32) 0x00000002)
2941523f5352Sopenharmony_ci#define SL_ENGINEOPTION_MAJORVERSION    ((SLuint32) 0x00000003)
2942523f5352Sopenharmony_ci#define SL_ENGINEOPTION_MINORVERSION    ((SLuint32) 0x00000004)
2943523f5352Sopenharmony_ci#define SL_ENGINEOPTION_STEPVERSION        ((SLuint32) 0x00000005)
2944523f5352Sopenharmony_ci
2945523f5352Sopenharmony_ci
2946523f5352Sopenharmony_citypedef struct SLEngineOption_ {
2947523f5352Sopenharmony_ci    SLuint32 feature;
2948523f5352Sopenharmony_ci    SLuint32 data;
2949523f5352Sopenharmony_ci} SLEngineOption;
2950523f5352Sopenharmony_ci
2951523f5352Sopenharmony_ci
2952523f5352Sopenharmony_ciSL_API SLresult SLAPIENTRY slCreateEngine(
2953523f5352Sopenharmony_ci    SLObjectItf             *pEngine,
2954523f5352Sopenharmony_ci    SLuint32                numOptions,
2955523f5352Sopenharmony_ci    const SLEngineOption    *pEngineOptions,
2956523f5352Sopenharmony_ci    SLuint32                numInterfaces,
2957523f5352Sopenharmony_ci    const SLInterfaceID     *pInterfaceIds,
2958523f5352Sopenharmony_ci    const SLboolean         * pInterfaceRequired
2959523f5352Sopenharmony_ci);
2960523f5352Sopenharmony_ci
2961523f5352Sopenharmony_ciSL_API SLresult SLAPIENTRY slQueryNumSupportedEngineInterfaces(
2962523f5352Sopenharmony_ci    SLuint32 * pNumSupportedInterfaces
2963523f5352Sopenharmony_ci);
2964523f5352Sopenharmony_ci
2965523f5352Sopenharmony_ciSL_API SLresult SLAPIENTRY slQuerySupportedEngineInterfaces(
2966523f5352Sopenharmony_ci    SLuint32 index,
2967523f5352Sopenharmony_ci    SLInterfaceID * pInterfaceId
2968523f5352Sopenharmony_ci);
2969523f5352Sopenharmony_ci
2970523f5352Sopenharmony_ci#ifdef __cplusplus
2971523f5352Sopenharmony_ci} /* extern "C" */
2972523f5352Sopenharmony_ci#endif
2973523f5352Sopenharmony_ci
2974523f5352Sopenharmony_ci#endif /* OPENSL_ES_H_ */
2975