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