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