• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1/*
2 * Copyright (c) 2022-2023 Huawei Device Co., Ltd.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 *     http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15
16/**
17 * @addtogroup HdiAudio
18 * @{
19 *
20 * @brief Provides unified APIs for audio services to access audio drivers.
21 *
22 * An audio service can obtain an audio driver object or agent and then call APIs provided by this object or agent to
23 * access different types of audio devices based on the audio IDs, thereby obtaining audio information,
24 * subscribing to or unsubscribing from audio data, enabling or disabling an audio,
25 * setting the audio data reporting mode, and setting audio options such as the accuracy and measurement range.
26 *
27 * @since 4.0
28 * @version 1.0
29 */
30
31package ohos.hdi.audio.v1_0;
32
33/**
34 * @brief Enumerates the audio port type.
35 */
36enum AudioPortDirection {
37    PORT_OUT    = 1, /**< Output port */
38    PORT_IN     = 2, /**< Input port */
39    PORT_OUT_IN = 3, /**< Input/output port, supporting both audio input and output */
40};
41
42/**
43 * @brief Enumerates the pin of an audio adapter.
44 */
45enum AudioPortPin {
46    PIN_NONE                     = 0,                 /**< Invalid pin */
47    PIN_OUT_SPEAKER              = 1 << 0,            /**< Speaker output pin */
48    PIN_OUT_HEADSET              = 1 << 1,            /**< Wired headset pin for output */
49    PIN_OUT_LINEOUT              = 1 << 2,            /**< Line-out pin */
50    PIN_OUT_HDMI                 = 1 << 3,            /**< HDMI output pin */
51    PIN_OUT_USB                  = 1 << 4,            /**< USB output pin */
52    PIN_OUT_USB_EXT              = 1 << 5,            /**< Extended USB output pin*/
53    PIN_OUT_EARPIECE             = 1 << 5 | 1 << 4,   /**< Earpiece output pin */
54    PIN_OUT_BLUETOOTH_SCO        = 1 << 6,            /**< Bluetooth SCO output pin */
55    PIN_OUT_DAUDIO_DEFAULT       = 1 << 7,            /**< Daudio default output pin */
56    PIN_OUT_HEADPHONE            = 1 << 8,            /**< Wired headphone output pin*/
57    PIN_OUT_USB_HEADSET          = 1 << 9,            /**< ARM USB out pin */
58    PIN_IN_MIC                   = 1 << 27 | 1 << 0,  /**< Microphone input pin */
59    PIN_IN_HS_MIC                = 1 << 27 | 1 << 1,  /**< Wired headset microphone pin for input */
60    PIN_IN_LINEIN                = 1 << 27 | 1 << 2,  /**< Line-in pin */
61    PIN_IN_USB_EXT               = 1 << 27 | 1 << 3,  /**< Extended USB input pin*/
62    PIN_IN_BLUETOOTH_SCO_HEADSET = 1 << 27 | 1 << 4,  /**< Bluetooth SCO headset input pin */
63    PIN_IN_DAUDIO_DEFAULT        = 1 << 27 | 1 << 5,  /**< Daudio default input pin */
64    PIN_IN_USB_HEADSET           = 1 << 27 | 1 << 6,  /**< ARM USB input pin */
65};
66
67/**
68 * @brief Enumerates the audio category.
69 */
70enum AudioCategory {
71    AUDIO_IN_MEDIA         = 0, /**< Media */
72    AUDIO_IN_COMMUNICATION = 1, /**< Communications */
73    AUDIO_IN_RINGTONE      = 2, /**< Ringtone */
74    AUDIO_IN_CALL          = 3, /**< Call */
75    AUDIO_MMAP_NOIRQ       = 4, /**< Mmap mode */
76};
77
78/**
79 * @brief Enumerates the audio format.
80 */
81enum AudioFormat {
82    AUDIO_FORMAT_TYPE_PCM_8_BIT  = 1 << 0,                      /**< 8-bit PCM */
83    AUDIO_FORMAT_TYPE_PCM_16_BIT = 1 << 1,                      /**< 16-bit PCM */
84    AUDIO_FORMAT_TYPE_PCM_24_BIT = 1 << 1 | 1 << 0,             /**< 24-bit PCM */
85    AUDIO_FORMAT_TYPE_PCM_32_BIT = 1 << 2,                      /**< 32-bit PCM */
86    AUDIO_FORMAT_TYPE_AAC_MAIN   = 1 << 24 | 1 << 0,            /**< AAC main */
87    AUDIO_FORMAT_TYPE_AAC_LC     = 1 << 24 | 1 << 1,            /**< AAC LC */
88    AUDIO_FORMAT_TYPE_AAC_LD     = 1 << 24 | 1 << 1 | 1 << 0,   /**< AAC LD */
89    AUDIO_FORMAT_TYPE_AAC_ELD    = 1 << 24 | 1 << 2,            /**< AAC ELD */
90    AUDIO_FORMAT_TYPE_AAC_HE_V1  = 1 << 24 | 1 << 2 | 1 << 0,   /**< AAC HE_V1 */
91    AUDIO_FORMAT_TYPE_AAC_HE_V2  = 1 << 24 | 1 << 2 | 1 << 1,   /**< AAC HE_V2 */
92    AUDIO_FORMAT_TYPE_G711A      = 1 << 25 | 1 << 0,            /**< G711A */
93    AUDIO_FORMAT_TYPE_G711U      = 1 << 25 | 1 << 1,            /**< G711u */
94    AUDIO_FORMAT_TYPE_G726       = 1 << 25 | 1 << 1 | 1 << 0,   /**< G726 */
95};
96
97/**
98 * @brief Enumerates the audio channel mask.
99 *
100 * A mask describes an audio channel position.
101 */
102enum AudioChannelMask {
103    AUDIO_CHANNEL_FRONT_LEFT  = 1,  /**< Front left channel */
104    AUDIO_CHANNEL_FRONT_RIGHT = 2,  /**< Front right channel */
105    AUDIO_CHANNEL_MONO        = 1,  /**< Mono channel */
106    AUDIO_CHANNEL_STEREO      = 3,  /**< Stereo channel, consisting of front left and front right channels */
107};
108
109/**
110 * @brief Enumerates masks of audio sampling rates.
111 */
112enum AudioSampleRatesMask {
113    AUDIO_SAMPLE_RATE_MASK_8000    = 1 << 0,        /**< 8 kHz */
114    AUDIO_SAMPLE_RATE_MASK_12000   = 1 << 1,        /**< 12 kHz */
115    AUDIO_SAMPLE_RATE_MASK_11025   = 1 << 2,        /**< 11.025 kHz */
116    AUDIO_SAMPLE_RATE_MASK_16000   = 1 << 3,        /**< 16 kHz */
117    AUDIO_SAMPLE_RATE_MASK_22050   = 1 << 4,        /**< 22.050 kHz */
118    AUDIO_SAMPLE_RATE_MASK_24000   = 1 << 5,        /**< 24 kHz */
119    AUDIO_SAMPLE_RATE_MASK_32000   = 1 << 6,        /**< 32 kHz */
120    AUDIO_SAMPLE_RATE_MASK_44100   = 1 << 7,        /**< 44.1 kHz */
121    AUDIO_SAMPLE_RATE_MASK_48000   = 1 << 8,        /**< 48 kHz */
122    AUDIO_SAMPLE_RATE_MASK_64000   = 1 << 9,        /**< 64 kHz */
123    AUDIO_SAMPLE_RATE_MASK_96000   = 1 << 10,       /**< 96 kHz */
124    AUDIO_SAMPLE_RATE_MASK_INVALID = 4294967295,    /**< Invalid sampling rate */
125};
126
127/**
128 * @brief Enumerates the passthrough data transmission mode of an audio port.
129 */
130enum AudioPortPassthroughMode {
131    PORT_PASSTHROUGH_LPCM    = 1 << 0, /**< Stereo PCM */
132    PORT_PASSTHROUGH_RAW     = 1 << 1, /**< HDMI passthrough */
133    PORT_PASSTHROUGH_HBR2LBR = 1 << 2, /**< Blu-ray next-generation audio output with reduced specifications */
134    PORT_PASSTHROUGH_AUTO    = 1 << 3, /**< Mode automatically matched based on the HDMI EDID */
135};
136
137/**
138 * @brief Defines formats of raw audio samples.
139 */
140enum AudioSampleFormat {
141    /* 8 bits */
142    AUDIO_SAMPLE_FORMAT_S8   = 0,  /**< signed 8 bit sample */
143    AUDIO_SAMPLE_FORMAT_S8P  = 1,  /**< signed 8 bit planar sample */
144    AUDIO_SAMPLE_FORMAT_U8   = 2,  /**< unsigned 8 bit sample */
145    AUDIO_SAMPLE_FORMAT_U8P  = 3,  /**< unsigned 8 bit planar sample */
146    /* 16 bits */
147    AUDIO_SAMPLE_FORMAT_S16  = 4,  /**< signed 16 bit sample */
148    AUDIO_SAMPLE_FORMAT_S16P = 5,  /**< signed 16 bit planar sample */
149    AUDIO_SAMPLE_FORMAT_U16  = 6,  /**< unsigned 16 bit sample */
150    AUDIO_SAMPLE_FORMAT_U16P = 7,  /**< unsigned 16 bit planar sample */
151    /* 24 bits */
152    AUDIO_SAMPLE_FORMAT_S24  = 8,  /**< signed 24 bit sample */
153    AUDIO_SAMPLE_FORMAT_S24P = 9,  /**< signed 24 bit planar sample */
154    AUDIO_SAMPLE_FORMAT_U24  = 10, /**< unsigned 24 bit sample */
155    AUDIO_SAMPLE_FORMAT_U24P = 11, /**< unsigned 24 bit planar sample */
156    /* 32 bits */
157    AUDIO_SAMPLE_FORMAT_S32  = 12, /**< signed 32 bit sample */
158    AUDIO_SAMPLE_FORMAT_S32P = 13, /**< signed 32 bit planar sample */
159    AUDIO_SAMPLE_FORMAT_U32  = 14, /**< unsigned 32 bit sample */
160    AUDIO_SAMPLE_FORMAT_U32P = 15, /**< unsigned 32 bit planar sample */
161    /* 64 bits */
162    AUDIO_SAMPLE_FORMAT_S64  = 16, /**< signed 64 bit sample */
163    AUDIO_SAMPLE_FORMAT_S64P = 17, /**< signed 64 bit planar sample */
164    AUDIO_SAMPLE_FORMAT_U64  = 18, /**< unsigned 64 bit sample */
165    AUDIO_SAMPLE_FORMAT_U64P = 19, /**< unsigned 64 bit planar sample */
166    /* float double */
167    AUDIO_SAMPLE_FORMAT_F32  = 20, /**< float 32 bit sample */
168    AUDIO_SAMPLE_FORMAT_F32P = 21, /**< float 32 bit planar sample */
169    AUDIO_SAMPLE_FORMAT_F64  = 22, /**< double 64 bit sample */
170    AUDIO_SAMPLE_FORMAT_F64P = 23, /**< double 64 bit planar sample */
171};
172
173/**
174 * @brief Enumerates channel modes for audio rendering.
175 *
176 * @attention The following modes are set for rendering dual-channel audios. Others are not supported.
177 */
178enum AudioChannelMode {
179    AUDIO_CHANNEL_NORMAL     = 0, /**< Normal mode. No processing is required. */
180    AUDIO_CHANNEL_BOTH_LEFT  = 1, /**< Two left channels */
181    AUDIO_CHANNEL_BOTH_RIGHT = 2, /**< Two right channels */
182    AUDIO_CHANNEL_EXCHANGE   = 3, /**< Data exchange between the left and right channels. The left channel takes the audio
183                                   * stream of the right channel, and the right channel takes that of the left channel.
184                                   */
185    AUDIO_CHANNEL_MIX        = 4, /**< Mix of streams of the left and right channels */
186    AUDIO_CHANNEL_LEFT_MUTE  = 5, /**< Left channel muted. The stream of the right channel is output. */
187    AUDIO_CHANNEL_RIGHT_MUTE = 6, /**< Right channel muted. The stream of the left channel is output. */
188    AUDIO_CHANNEL_BOTH_MUTE  = 7, /**< Both left and right channels are muted */
189};
190
191/**
192 * @brief Enumerates the execution types of the <b>DrainBuffer</b> function.
193 */
194enum AudioDrainNotifyType {
195    AUDIO_DRAIN_NORMAL_MODE = 0, /**< The <b>DrainBuffer</b> function returns after all data finishes playback. */
196    AUDIO_DRAIN_EARLY_MODE  = 1, /**< The <b>DrainBuffer</b> function returns before all the data of the current track
197                                  * finishes playback to reserve time for a smooth track switch by the audio service.
198                                  */
199
200};
201
202/**
203 * @brief Enumerates callback notification events.
204 */
205enum AudioCallbackType {
206    AUDIO_NONBLOCK_WRITE_COMPLETED = 0, /**< The non-block write is complete. */
207    AUDIO_DRAIN_COMPLETED          = 1, /**< The draining is complete. */
208    AUDIO_FLUSH_COMPLETED          = 2, /**< The flush is complete. */
209    AUDIO_RENDER_FULL              = 3, /**< The render buffer is full.*/
210    AUDIO_ERROR_OCCUR              = 4, /**< An error occurs.*/
211};
212
213/**
214 * @brief Describes AudioPortRole.
215 */
216enum AudioPortRole {
217    AUDIO_PORT_UNASSIGNED_ROLE = 0, /**< Unassigned port role */
218    AUDIO_PORT_SOURCE_ROLE     = 1, /**< Assigned source role */
219    AUDIO_PORT_SINK_ROLE       = 2, /**< Assigned sink role */
220};
221
222/**
223 * @brief Describes AudioPortType.
224 */
225enum AudioPortType {
226    AUDIO_PORT_UNASSIGNED_TYPE = 0, /**< Unassigned port type */
227    AUDIO_PORT_DEVICE_TYPE     = 1, /**< Assigned device type */
228    AUDIO_PORT_MIX_TYPE        = 2, /**< Assigned mix type */
229    AUDIO_PORT_SESSION_TYPE    = 3, /**< Assigned session type */
230};
231
232/**
233 * @brief Describes AudioSessionType.
234 */
235enum AudioSessionType {
236    AUDIO_OUTPUT_STAGE_SESSION = 0, /**< Assigned output stage session */
237    AUDIO_OUTPUT_MIX_SESSION   = 1, /**< Assigned output mix session */
238    AUDIO_ALLOCATE_SESSION     = 2, /**< Assigned allocate session */
239    AUDIO_INVALID_SESSION      = 3, /**< Assigned invalid session */
240};
241
242/**
243 * @brief Describes AudioDeviceType.
244 */
245enum AudioDeviceType {
246    AUDIO_LINEOUT        = 1 << 0, /**< Assigned lineout device type */
247    AUDIO_HEADPHONE      = 1 << 1, /**< Assigned headphone device type */
248    AUDIO_HEADSET        = 1 << 2, /**< Assigned headset device type */
249    AUDIO_USB_HEADSET    = 1 << 3, /**< Assigned usb headset device type */
250    AUDIO_USB_HEADPHONE  = 1 << 4, /**< Assigned usb headphone device type */
251    AUDIO_USBA_HEADSET   = 1 << 5, /**< Assigned usba headset device type */
252    AUDIO_USBA_HEADPHONE = 1 << 6, /**< Assigned usba headphone device type */
253    AUDIO_PRIMARY_DEVICE = 1 << 7, /**< Assigned primary device type */
254    AUDIO_USB_DEVICE     = 1 << 8, /**< Assigned usb device type */
255    AUDIO_A2DP_DEVICE    = 1 << 9, /**< Assigned a2dp device type */
256    AUDIO_HDMI_DEVICE    = 1 << 10, /**< Assigned hdmi device type */
257    AUDIO_ADAPTER_DEVICE = 1 << 11, /**< Assigned adapter device type */
258    AUDIO_DEVICE_UNKNOWN,          /**< Assigned unknown device type */
259};
260
261/**
262 * @brief Describes AudioEventType.
263 */
264enum AudioEventType {
265    AUDIO_DEVICE_ADD        = 1,  /**< Assigned add device event type */
266    AUDIO_DEVICE_REMOVE     = 2,  /**< Assigned remove device event type */
267    AUDIO_LOAD_SUCCESS      = 3,  /**< Assigned load sucess event type */
268    AUDIO_LOAD_FAILURE      = 4,  /**< Assigned load failure event type */
269    AUDIO_UNLOAD            = 5,  /**< Assigned unload event type */
270    AUDIO_SERVICE_VALID     = 7,  /**< Assigned valid service event type */
271    AUDIO_SERVICE_INVALID   = 8,  /**< Assigned invalid service event type */
272    AUDIO_CAPTURE_THRESHOLD = 9,  /**< Assigned threshold capture event type */
273    AUDIO_EVENT_UNKNOWN     = 10, /**< Assigned unknown event type */
274};
275
276/**
277 * @brief Enumerates the restricted key type of the parameters
278 */
279enum AudioExtParamKey {
280    AUDIO_EXT_PARAM_KEY_NONE     = 0,    /**< Distributed audio extra param key none */
281    AUDIO_EXT_PARAM_KEY_VOLUME   = 1,    /**< Distributed audio extra param key volume event */
282    AUDIO_EXT_PARAM_KEY_FOCUS    = 2,    /**< Distributed audio extra param key focus event */
283    AUDIO_EXT_PARAM_KEY_BUTTON   = 3,    /**< Distributed audio extra param key media button event */
284    AUDIO_EXT_PARAM_KEY_EFFECT   = 4,    /**< Distributed audio extra param key audio effect event */
285    AUDIO_EXT_PARAM_KEY_STATUS   = 5,    /**< Distributed audio extra param key device status event */
286    AUDIO_EXT_PARAM_KEY_USB_DEVICE = 101, /**< Check USB device type ARM or HIFI */
287    AUDIO_EXT_PARAM_KEY_LOWPOWER = 1000, /**< Low power event type */
288};
289
290/**
291 * @brief Describes status of audio deivce.@link enum AudioDeviceType
292 */
293struct AudioDeviceStatus {
294    unsigned int pnpStatus; /**< Audio pnp status */
295};
296
297/**
298 * @brief Describes the audio scene.
299 */
300union SceneDesc {
301    unsigned int id; /**< Audio scene ID */
302};
303
304/**
305 * @brief Defines the audio port.
306 */
307struct AudioPort {
308    enum AudioPortDirection dir; /**< Audio port type. For details, see {@link AudioPortDirection} */
309    unsigned int portId;         /**< Audio port ID */
310    String portName;             /**< Audio port name */
311};
312
313/**
314 * @brief Defines the audio adapter descriptor.
315 *
316 * An audio adapter is a set of port drivers for a sound card, including the output and input ports.
317 * One port corresponds to multiple pins, and each pin belongs to a physical component (such as a
318 * speaker or a wired headset).
319 */
320struct AudioAdapterDescriptor {
321    String adapterName;       /**< Name of the audio adapter */
322    struct AudioPort[] ports; /**< List of ports supported by an audio adapter */
323};
324
325/**
326 * @brief Defines the audio device descriptor.
327 */
328struct AudioDeviceDescriptor {
329    unsigned int portId;    /**< Audio port ID */
330    enum AudioPortPin pins; /**< Pins of audio ports (input and output). For details, see {@link AudioPortPin}. */
331    String desc;            /**< Audio device name */
332};
333
334/**
335 * @brief Defines the audio scene descriptor.
336 */
337struct AudioSceneDescriptor {
338    union SceneDesc scene;             /**< Describes the audio scene */
339    struct AudioDeviceDescriptor desc; /**< Audio device descriptor */
340};
341
342/**
343 * @brief Defines audio input type.
344 */
345enum AudioInputType {
346    AUDIO_INPUT_DEFAULT_TYPE             = 0,      /**< Assigned default input type */
347    AUDIO_INPUT_MIC_TYPE                 = 1 << 0, /**< Assigned mic input type */
348    AUDIO_INPUT_SPEECH_WAKEUP_TYPE       = 1 << 1, /**< Assigned speech wakeup input type */
349    AUDIO_INPUT_VOICE_COMMUNICATION_TYPE = 1 << 2, /**< Assigned voice communication input type */
350    AUDIO_INPUT_VOICE_RECOGNITION_TYPE   = 1 << 3, /**< Assigned voice recognition input type */
351};
352
353/**
354 * @brief Defines audio sampling attributes.
355 */
356struct AudioSampleAttributes {
357    enum AudioCategory type;       /**< Audio type. For details, see {@link AudioCategory} */
358    boolean interleaved;           /**< Interleaving flag of audio data */
359    enum AudioFormat format;       /**< Audio data format. For details, see {@link AudioFormat}. */
360    unsigned int sampleRate;       /**< Audio sampling rate */
361    unsigned int channelCount;     /**< Number of audio channels. For example, for the mono channel, the value is 1,
362                                    * and for the stereo channel, the value is 2.
363                                    */
364    unsigned int period;           /**< Audio sampling period */
365    unsigned int frameSize;        /**< Frame size of the audio data */
366    boolean isBigEndian;           /**< Big endian flag of audio data */
367    boolean isSignedData;          /**< Signed or unsigned flag of audio data */
368    unsigned int startThreshold;   /**< Audio render start threshold. */
369    unsigned int stopThreshold;    /**< Audio render stop threshold. */
370    unsigned int silenceThreshold; /**< Audio capture buffer threshold. */
371    int streamId;                  /**< Audio Identifier of render or capture */
372    int sourceType;                /**< Audio sourceType of render or capture */
373};
374
375/**
376 * @brief Defines the audio timestamp, which is a substitute for POSIX <b>timespec</b>.
377 */
378struct AudioTimeStamp {
379    long tvSec;  /**< Seconds */
380    long tvNSec; /**< Nanoseconds */
381};
382
383/**
384 * @brief Defines the sub-port capability.
385 */
386struct AudioSubPortCapability {
387    unsigned int portId;                /**< Sub-port ID */
388    String desc;                        /**< Sub-port name */
389    enum AudioPortPassthroughMode mask; /**< Passthrough mode of data transmission. For details,
390                                         * see {@link AudioPortPassthroughMode}.
391                                         */
392};
393
394/**
395 * @brief Defines the audio port capability.
396 */
397struct AudioPortCapability {
398    unsigned int deviceType;                       /**< Device type (output or input) */
399    unsigned int deviceId;                         /**< Device ID used for device binding */
400    boolean hardwareMode;                          /**< Whether to support device binding */
401    unsigned int formatNum;                        /**< Number of the supported audio formats */
402    enum AudioFormat[] formats;                    /**< Supported audio formats. For details, see {@link AudioFormat}. */
403    unsigned int sampleRateMasks;                  /**< Supported audio sampling rates (8 kHz, 16 kHz, 32 kHz, and 48 kHz) */
404    enum AudioChannelMask channelMasks;            /**< Audio channel layout mask of the device. For details,
405                                                    * see {@link AudioChannelMask}.
406                                                    */
407    unsigned int channelCount;                     /**< Supported maximum number of audio channels */
408    struct AudioSubPortCapability[] subPorts;      /**< List of supported sub-ports */
409    enum AudioSampleFormat[] supportSampleFormats; /**< Supported audio sample formats. For details,
410                                                    * see {@link AudioSampleFormat}.
411                                                    */
412};
413
414/**
415 * @brief Describes a mmap buffer.
416 */
417struct AudioMmapBufferDescriptor {
418    byte[] memoryAddress;    /**< Pointer to the mmap buffer */
419    FileDescriptor memoryFd; /**< File descriptor of the mmap buffer */
420    int totalBufferFrames;   /**< Total size of the mmap buffer (unit: frame )*/
421    int transferFrameSize;   /**< Transfer size (unit: frame) */
422    int isShareable;         /**< Whether the mmap buffer can be shared among processes */
423    unsigned int offset;     /**< off set */
424    String filePath;         /**< file path */
425};
426
427/**
428 * @brief Describes AudioDevExtInfo.
429 */
430struct AudioDevExtInfo {
431    int moduleId;           /**< Identifier of the module stream is attached to */
432    enum AudioPortPin type; /**< Device type For details, see {@link AudioPortPin}. */
433    String desc;            /**< Address */
434};
435
436/**
437 * @brief Describes AudioMixInfo.
438 */
439struct AudioMixExtInfo {
440    int moduleId; /**< Identifier of the module stream is attached to */
441    int streamId; /**< Identifier of the capture or render passed by caller */
442};
443
444/**
445 * @brief Describes AudioSessionExtInfo.
446 */
447struct AudioSessionExtInfo {
448    enum AudioSessionType sessionType; /**< Audio session type */
449};
450
451/**
452 * @brief Describes AudioInfo.
453 */
454struct AudioInfo {
455    struct AudioDevExtInfo device;      /* Specific Device Ext info */
456    struct AudioMixExtInfo mix;         /* Specific mix info */
457    struct AudioSessionExtInfo session; /* session specific info */
458};
459
460/**
461 * @brief Describes AudioRouteNode.
462 */
463struct AudioRouteNode {
464    int portId;              /**< Audio port ID */
465    enum AudioPortRole role; /**< Audio port as a sink or a source */
466    enum AudioPortType type; /**< device, mix ... */
467    struct AudioInfo ext;    /**< The <b>ext</b> object */
468};
469
470/**
471 * @brief Describes AudioRoute.
472 */
473struct AudioRoute {
474    struct AudioRouteNode[] sources; /**< List of sources */
475    struct AudioRouteNode[] sinks;   /**< List of sinks */
476};
477
478/**
479 * @brief Describes AudioEvent.
480 */
481struct AudioEvent {
482    unsigned int eventType;  /**< @link enum AudioEventType */
483    unsigned int deviceType; /**< @link enum AudioDeviceType */
484};
485