1# Audio 2 3 4## **概述** 5 6Audio模块接口定义。 7 8音频接口涉及自定义类型、驱动加载接口、驱动适配器接口、音频播放(Render)接口、音频录音(Capture)接口等。 9 10**Since**: 11 121.0 13 14**Version**: 15 161.0 17 18 19## **汇总** 20 21 22### 文件 23 24 | 名称 | 描述 | 25| -------- | -------- | 26| [audio_adapter.h](audio__adapter_8h.md) | Audio适配器的接口定义文件 | 27| [audio_attribute.h](audio__attribute_8h.md) | Audio属性的接口定义文件 | 28| [audio_capture.h](audio__capture_8h.md) | Audio录音的接口定义文件 | 29| [audio_control.h](audio__control_8h.md) | Audio控制的接口定义文件 | 30| [audio_manager.h](audio__manager_8h.md) | Audio适配器管理及加载的接口定义文件 | 31| [audio_render.h](audio__render_8h.md) | Audio播放的接口定义文件 | 32| [audio_scene.h](audio__scene_8h.md) | Audio场景的接口定义文件 | 33| [audio_types.h](audio__types_8h.md) | Audio模块接口定义中使用的自定义数据类型 | 34| [audio_volume.h](audio__volume_8h.md) | Audio音量的接口定义文件 | 35 36 37### 类 38 39 | 名称 | 描述 | 40| -------- | -------- | 41| [AudioAdapter](_audio_adapter.md) | AudioAdapter音频适配器接口 | 42| [AudioAttribute](_audio_attribute.md) | AudioAttribute音频属性接口 | 43| [AudioCapture](_audio_capture.md) | AudioCapture音频录音接口 | 44| [AudioControl](_audio_control.md) | AudioControl音频控制接口 | 45| [AudioManager](_audio_manager.md) | AudioManager音频适配器管理接口 | 46| [AudioRender](_audio_render.md) | AudioRender音频播放接口 | 47| [AudioScene](_audio_scene.md) | AudioScene音频场景接口 | 48| [AudioPort](_audio_port.md) | 音频端口 | 49| [AudioAdapterDescriptor](_audio_adapter_descriptor.md) | 音频适配器描述符 | 50| [AudioDeviceDescriptor](_audio_device_descriptor.md) | 音频设备描述符 | 51| [AudioSceneDescriptor](_audio_scene_descriptor.md) | 音频场景描述符 | 52| [AudioSceneDescriptor::SceneDesc](union_audio_scene_descriptor_1_1_scene_desc.md) | 音频场景描述 | 53| [AudioSampleAttributes](_audio_sample_attributes.md) | 音频采样属性 | 54| [AudioTimeStamp](_audio_time_stamp.md) | 音频时间戳 | 55| [AudioSubPortCapability](_audio_sub_port_capability.md) | 音频子端口的支持能力 | 56| [AudioPortCapability](_audio_port_capability.md) | 音频端口的支持能力 | 57| [AudioMmapBufferDescriptor](_audio_mmap_buffer_descriptor.md) | mmap缓冲区描述符 | 58| [AudioDevExtInfo](_audio_dev_ext_info.md) | 音频设备拓展信息 | 59| [AudioMixExtInfo](_audio_mix_ext_info.md) | 音轨拓展信息 | 60| [AudioSessionExtInfo](_audio_session_ext_info.md) | 会话拓展信息 | 61| [AudioRouteNode](_audio_route_node.md) | 音频路由节点 | 62| [AudioRoute](_audio_route.md) | 音频路由信息 | 63| [AudioVolume](_audio_volume.md) | AudioVolume音频音量接口 | 64 65 66### 类型定义 67 68 | 名称 | 描述 | 69| -------- | -------- | 70| AudioHandle | 音频句柄 | 71| ([RenderCallback](#rendercallback)) (enum AudioCallbackType, void \*reserved, void \*cookie) | 回调函数指针 | 72 73 74### 枚举 75 76 | 名称 | 描述 | 77| -------- | -------- | 78| [AudioPortDirection](#audioportdirection) { PORT_OUT = 0x1u, PORT_IN = 0x2u, PORT_OUT_IN = 0x3u } | 音频端口的类型 | 79| [AudioPortPin](#audioportpin) { PIN_NONE = 0x0u, PIN_OUT_SPEAKER = 0x1u, PIN_OUT_HEADSET = 0x2u, PIN_OUT_LINEOUT = 0x4u, PIN_OUT_HDMI = 0x8u, PIN_OUT_USB = 0x10u, PIN_OUT_USB_EXT = 0x20u, PIN_IN_MIC = 0x8000001u, PIN_IN_HS_MIC = 0x8000002u, PIN_IN_LINEIN = 0x8000004u, PIN_IN_USB_EXT = 0x8000008u } | 音频适配器端口的PIN脚 | 80| [AudioCategory](#audiocategory) { AUDIO_IN_MEDIA = 0, AUDIO_IN_COMMUNICATION, AUDIO_IN_RINGTONE, AUDIO_IN_CALL } | 音频类型(category) | 81| [AudioFormat](#audioformat){ AUDIO_FORMAT_PCM_8_BIT = 0x1u, AUDIO_FORMAT_PCM_16_BIT = 0x2u, AUDIO_FORMAT_PCM_24_BIT = 0x3u, AUDIO_FORMAT_PCM_32_BIT = 0x4u, AUDIO_FORMAT_AAC_MAIN = 0x1000001u, AUDIO_FORMAT_AAC_LC = 0x1000002u, AUDIO_FORMAT_AAC_LD = 0x1000003u, AUDIO_FORMAT_AAC_ELD = 0x1000004u, AUDIO_FORMAT_AAC_HE_V1 = 0x1000005u, AUDIO_FORMAT_AAC_HE_V2 = 0x1000006u, AUDIO_FORMAT_G711A = 0x2000001u, AUDIO_FORMAT_G711U = 0x2000002u, AUDIO_FORMAT_G726 = 0x2000003u } | 音频格式 | 82| [AudioChannelMask](#audiochannelmask){ AUDIO_CHANNEL_FRONT_LEFT = 0x1, AUDIO_CHANNEL_FRONT_RIGHT = 0x2, AUDIO_CHANNEL_MONO = 0x1u, AUDIO_CHANNEL_STEREO = 0x3u } | 音频通道掩码(mask) | 83| [AudioSampleRatesMask](#audiosampleratesmask){ AUDIO_SAMPLE_RATE_MASK_8000 = 0x1u, AUDIO_SAMPLE_RATE_MASK_12000 = 0x2u, AUDIO_SAMPLE_RATE_MASK_11025 = 0x4u, AUDIO_SAMPLE_RATE_MASK_16000 = 0x8u, AUDIO_SAMPLE_RATE_MASK_22050 = 0x10u, AUDIO_SAMPLE_RATE_MASK_24000 = 0x20u, AUDIO_SAMPLE_RATE_MASK_32000 = 0x40u, AUDIO_SAMPLE_RATE_MASK_44100 = 0x80u, AUDIO_SAMPLE_RATE_MASK_48000 = 0x100u, AUDIO_SAMPLE_RATE_MASK_64000 = 0x200u, AUDIO_SAMPLE_RATE_MASK_96000 = 0x400u, AUDIO_SAMPLE_RATE_MASK_INVALID = 0xFFFFFFFFu } | 音频采样频率MASK | 84| [AudioPortPassthroughMode](#audioportpassthroughmode){ PORT_PASSTHROUGH_LPCM = 0x1, PORT_PASSTHROUGH_RAW = 0x2, PORT_PASSTHROUGH_HBR2LBR = 0x4, PORT_PASSTHROUGH_AUTO = 0x8 } | 音频端口的数据透传模式 | 85| [AudioSampleFormat](#audiosampleformat){ AUDIO_SAMPLE_FORMAT_S8, AUDIO_SAMPLE_FORMAT_S8P, AUDIO_SAMPLE_FORMAT_U8, AUDIO_SAMPLE_FORMAT_U8P, AUDIO_SAMPLE_FORMAT_S16, AUDIO_SAMPLE_FORMAT_S16P, AUDIO_SAMPLE_FORMAT_U16, AUDIO_SAMPLE_FORMAT_U16P, AUDIO_SAMPLE_FORMAT_S24, AUDIO_SAMPLE_FORMAT_S24P, AUDIO_SAMPLE_FORMAT_U24, AUDIO_SAMPLE_FORMAT_U24P, AUDIO_SAMPLE_FORMAT_S32, AUDIO_SAMPLE_FORMAT_S32P, AUDIO_SAMPLE_FORMAT_U32, AUDIO_SAMPLE_FORMAT_U32P, AUDIO_SAMPLE_FORMAT_S64, AUDIO_SAMPLE_FORMAT_S64P, AUDIO_SAMPLE_FORMAT_U64, AUDIO_SAMPLE_FORMAT_U64P, AUDIO_SAMPLE_FORMAT_F32, AUDIO_SAMPLE_FORMAT_F32P, AUDIO_SAMPLE_FORMAT_F64, AUDIO_SAMPLE_FORMAT_F64P } | 原始音频样本格式 | 86| [AudioChannelMode](#audiochannelmode){ AUDIO_CHANNEL_NORMAL = 0, AUDIO_CHANNEL_BOTH_LEFT, AUDIO_CHANNEL_BOTH_RIGHT, AUDIO_CHANNEL_EXCHANGE, AUDIO_CHANNEL_MIX, AUDIO_CHANNEL_LEFT_MUTE, AUDIO_CHANNEL_RIGHT_MUTE, AUDIO_CHANNEL_BOTH_MUTE } | 音频播放的通道模式 | 87| [AudioDrainNotifyType](#audiodrainnotifytype){ AUDIO_DRAIN_NORMAL_MODE, AUDIO_DRAIN_EARLY_MODE } | DrainBuffer函数结束类型 | 88| [AudioCallbackType](#audiocallbacktype){ AUDIO_NONBLOCK_WRITE_COMPLETED, AUDIO_DRAIN_COMPLETED, AUDIO_FLUSH_COMPLETED, AUDIO_RENDER_FULL, AUDIO_ERROR_OCCUR } | 回调函数通知事件类型 | 89| [AudioPortRole](#audioportrole){ AUDIO_PORT_UNASSIGNED_ROLE = 0, AUDIO_PORT_SOURCE_ROLE = 1, AUDIO_PORT_SINK_ROLE = 2 } | 音频端口角色 | 90| [AudioPortType](#audioporttype){ AUDIO_PORT_UNASSIGNED_TYPE = 0, AUDIO_PORT_DEVICE_TYPE = 1, AUDIO_PORT_MIX_TYPE = 2, AUDIO_PORT_SESSION_TYPE = 3 } | 音频端口类型. | 91| [AudioSessionType](#audiosessiontype){ AUDIO_OUTPUT_STAGE_SESSION = 0, AUDIO_OUTPUT_MIX_SESSION, AUDIO_ALLOCATE_SESSION, AUDIO_INVALID_SESSION } | 端口会话类型 | 92 93 94### 函数 95 96 | 名称 | 描述 | 97| -------- | -------- | 98| [GetAudioManagerFuncs](#getaudiomanagerfuncs)(void) | 获取音频适配器管理接口的操作函数列表,详情参考[AudioManager](_audio_manager.md)。 | 99 100 101### 变量 102 103 | 变量 名称 | 描述 | 104| -------- | -------- | 105| [AudioPort::dir](#dir) | 音频端口的类型。 | 106| [AudioPort::portId](#portid-14) | 音频端口的ID。 | 107| [AudioPort::portName](#portname) | 音频端口的名称。 | 108| [AudioAdapterDescriptor::adapterName](#adaptername) | 音频适配器的名称。 | 109| [AudioAdapterDescriptor::portNum](#portnum) | 一个音频适配器支持的端口数目。 | 110| [AudioAdapterDescriptor::ports](#ports) | 一个音频适配器支持的端口列表。 | 111| [AudioDeviceDescriptor::portId](#portid-24) | 音频端口ID。 | 112| [AudioDeviceDescriptor::pins](#pins) | 音频端口上的PIN脚(输出、输入)。 | 113| [AudioDeviceDescriptor::desc](#desc-15) | 以字符串命名的音频设备。 | 114| [AudioSceneDescriptor::SceneDesc::id](#id) | 音频场景的ID。 | 115| [AudioSceneDescriptor::SceneDesc::desc](#desc-35) | 以字符串命名的音频场景。 | 116| [AudioSceneDescriptor::scene](#scene) | 音频场景的名称。 | 117| [AudioSceneDescriptor::desc](#desc-25) | 音频设备描述符。 | 118| [AudioSampleAttributes::type](#type-13) | 音频类型。 | 119| [AudioSampleAttributes::interleaved](#interleaved) | 音频数据交织的标记。 | 120| [AudioSampleAttributes::format](#format) | 音频数据格式。 | 121| [AudioSampleAttributes::sampleRate](#samplerate) | 音频采样频率。 | 122| [AudioSampleAttributes::channelCount](#channelcount-12) | 音频通道数目,如单通道(mono)为1、立体声(stereo)为2。 | 123| [AudioSampleAttributes::period](#period) | 音频采样周期。 | 124| [AudioSampleAttributes::frameSize](#framesize) | 音频数据的帧大小。 | 125| [AudioSampleAttributes::isBigEndian](#isbigendian) | 音频数据的大端标志。 | 126| [AudioSampleAttributes::isSignedData](#issigneddata) | 音频数据的有符号或无符号标志。 | 127| [AudioSampleAttributes::startThreshold](#startthreshold) | 音频渲染开始阈值。 | 128| [AudioSampleAttributes::stopThreshold](#stopthreshold) | 音频渲染停止阈值。 | 129| [AudioSampleAttributes::silenceThreshold](#silencethreshold) | 音频捕获缓冲区阈值。 | 130| [AudioSampleAttributes::streamId](#streamid-12) | 渲染或捕获的音频标识符。 | 131| [AudioTimeStamp::tvSec](#tvsec) | tvSec时间,单位:秒。 | 132| [AudioTimeStamp::tvNSec](#tvnsec) | tvNSec时间,单位:纳秒。 | 133| [AudioSubPortCapability::portId](#portid-34) | 子端口ID。 | 134| [AudioSubPortCapability::desc](#desc-45) | 以字符串命名的子端口。 | 135| [AudioSubPortCapability::mask](#mask) | 数据透传模式。 | 136| [AudioPortCapability::deviceType](#devicetype) | 设备输出、输入类型。 | 137| [AudioPortCapability::deviceId](#deviceid) | 绑定(bind)设备ID,唯一的设备识别符。 | 138| [AudioPortCapability::hardwareMode](#hardwaremode) | 是否支持设备绑定处理。 | 139| [AudioPortCapability::formatNum](#formatnum) | 支持的音频格式数目。 | 140| [AudioPortCapability::formats](#formats) | 支持的音频格式。 | 141| [AudioPortCapability::sampleRateMasks](#sampleratemasks) | 支持的音频采样频率(8k、16k、32k、48k)。 | 142| [AudioPortCapability::channelMasks](#channelmasks) | 设备的声道布局掩码(mask)。 | 143| [AudioPortCapability::channelCount](#channelcount-22) | 支持的最大声道总数。 | 144| [AudioPortCapability::subPortsNum](#subportsnum) | 支持的子端口数目(仅用于输出设备)。 | 145| [AudioPortCapability::subPorts](#subports) | 支持的子端口列表。 | 146| [AudioPortCapability::supportSampleFormatNum](#supportsampleformatnum) | 支持的音频样本格式数量。 | 147| [AudioPortCapability::supportSampleFormats](#supportsampleformats) | 支持的音频样本格式。 | 148| [AudioMmapBufferDescriptor::memoryAddress](#memoryaddress) | 指向mmap缓冲区的指针。 | 149| [AudioMmapBufferDescriptor::memoryFd](#memoryfd) | mmap缓冲区的文件描述符。 | 150| [AudioMmapBufferDescriptor::totalBufferFrames](#totalbufferframes) | 缓冲区总大小,单位:帧。 | 151| [AudioMmapBufferDescriptor::transferFrameSize](#transferframesize) | 传输大小,单位:帧。 | 152| [AudioMmapBufferDescriptor::isShareable](#isshareable) | mmap缓冲区是否可以在进程间共享。 | 153| [AudioDevExtInfo::moduleId](#moduleid-12) | 音频流绑定的模块ID。 | 154| [AudioDevExtInfo::type](#type-23) | 音频端口上的PIN脚(输出、输入)。 | 155| [AudioDevExtInfo::desc](#desc-55) | 地址描述。 | 156| [AudioMixExtInfo::moduleId](#moduleid-22) | 流所属模块标识符。 | 157| [AudioMixExtInfo::streamId](#streamid-22) | 由调用者传递的Render或Capture标识符。 | 158| [AudioSessionExtInfo::sessionType](#sessiontype) | 音频会话类型。 | 159| [AudioRouteNode::portId](#portid-44) | 音频端口ID。 | 160| [AudioRouteNode::role](#role) | 指定端口角色为sink或source。 | 161| [AudioRouteNode::type](#type-33) | 指定端口类型。 | 162| [AudioRouteNode::device](#device) | 设备特定信息。 | 163| [AudioRouteNode::mix](#mix) | 音轨特定信息。 | 164| [AudioRouteNode::session](#session) | 会话特定信息。 | 165| [AudioRoute::sourcesNum](#sourcesnum) | 发送端节点数量。 | 166| [AudioRoute::sources](#sources) | 发送端列表。 | 167| [AudioRoute::sinksNum](#sinksnum) | 接受端节点数量。 | 168| [AudioRoute::sinks](#sinks) | 接受端列表。 | 169 170 171## **类型定义说明** 172 173 174### RenderCallback 175 176 177``` 178typedef int32_t(* RenderCallback) (enum AudioCallbackType, void *reserved, void *cookie) 179``` 180 181**描述:** 182 183回调函数指针。 184 185**参数:** 186 187 | 名称 | 描述 | 188| -------- | -------- | 189| AudioCallbackType | 回调函数响应类型 | 190| reserved | 保留字段 | 191| cookie | 用于传递数据 | 192 193**返回:** 194 195成功返回值0,失败返回负值。 196 197**参见:** 198 199[RegCallback](_audio_render.md#regcallback) 200 201 202## **枚举类型说明** 203 204 205### AudioCallbackType 206 207 208``` 209enum AudioCallbackType 210``` 211 212**描述:** 213 214回调函数通知事件类型。 215 216 | 枚举值 | 描述 | 217| -------- | -------- | 218| AUDIO_NONBLOCK_WRITE_COMPLETED | 非阻塞式写完成 | 219| AUDIO_DRAIN_COMPLETED | DrainBuffer完成 | 220| AUDIO_FLUSH_COMPLETED | Flush完成 | 221| AUDIO_RENDER_FULL | Render缓冲区已满 | 222| AUDIO_ERROR_OCCUR | 发生了错误 | 223 224 225### AudioCategory 226 227 228``` 229enum AudioCategory 230``` 231 232**描述:** 233 234音频类型(category)。 235 236 | 枚举值 | 描述 | 237| -------- | -------- | 238| AUDIO_IN_MEDIA | 媒体 | 239| AUDIO_IN_COMMUNICATION | 通信 | 240| AUDIO_IN_RINGTONE | 铃声 | 241| AUDIO_IN_CALL | 呼叫 | 242 243 244### AudioChannelMask 245 246 247``` 248enum AudioChannelMask 249``` 250 251**描述:** 252 253音频通道掩码(mask)。 254 255定义音频声道的位置。 256 257 | 枚举值 | 描述 | 258| -------- | -------- | 259| AUDIO_CHANNEL_FRONT_LEFT | 声道布局前左 | 260| AUDIO_CHANNEL_FRONT_RIGHT | 声道布局前右 | 261| AUDIO_CHANNEL_MONO | 单声道 | 262| AUDIO_CHANNEL_STEREO | 立体声,由左右声道组成(FRONT_LEFT \| FRONT_RIGHT) | 263 264 265### AudioChannelMode 266 267 268``` 269enum AudioChannelMode 270``` 271 272**描述:** 273 274音频播放的通道模式。 275 276**注意:** 277 278下面的模式是针对双通道立体声的音频播放而设置,其他不支持。 279 280 | 枚举值 | 描述 | 281| -------- | -------- | 282| AUDIO_CHANNEL_NORMAL | 正常模式,不做处理 | 283| AUDIO_CHANNEL_BOTH_LEFT | 两个声道全部为左声道声音 | 284| AUDIO_CHANNEL_BOTH_RIGHT | 两个声道全部为右声道声音 | 285| AUDIO_CHANNEL_EXCHANGE | 左右声道数据互换,左声道为右声道声音,右声道为左声道声音 | 286| AUDIO_CHANNEL_MIX | 左右两个声道输出为左右声道相加(混音) | 287| AUDIO_CHANNEL_LEFT_MUTE | 左声道静音,右声道播放原右声道声音 | 288| AUDIO_CHANNEL_RIGHT_MUTE | 右声道静音,左声道播放原左声道声音 | 289| AUDIO_CHANNEL_BOTH_MUTE | 左右声道均静音 | 290 291 292### AudioDrainNotifyType 293 294 295``` 296enum AudioDrainNotifyType 297``` 298 299**描述:** 300 301DrainBuffer函数结束类型。 302 303 | 枚举值 | 描述 | 304| -------- | -------- | 305| AUDIO_DRAIN_NORMAL_MODE | DrainBuffer在所有数据播放结束后返回 | 306| AUDIO_DRAIN_EARLY_MODE | DrainBuffer()在当前曲目的所有数据播放完之前返回,以便留出时间给音频服务做连续性曲目切换 | 307 308 309### AudioFormat 310 311 312``` 313enum AudioFormat 314``` 315 316**描述:** 317 318音频格式。 319 320 | 枚举值 | 描述 | 321| -------- | -------- | 322| AUDIO_FORMAT_PCM_8_BIT | 8bit位宽pcm格式 | 323| AUDIO_FORMAT_PCM_16_BIT | 16bit位宽pcm格式 | 324| AUDIO_FORMAT_PCM_24_BIT | 24bit位宽pcm格式 | 325| AUDIO_FORMAT_PCM_32_BIT | 32bit位宽pcm格式 | 326| AUDIO_FORMAT_AAC_MAIN | AAC MAIN格式 | 327| AUDIO_FORMAT_AAC_LC | AAC LC格式 | 328| AUDIO_FORMAT_AAC_LD | AAC LD格式 | 329| AUDIO_FORMAT_AAC_ELD | AAC ELD格式 | 330| AUDIO_FORMAT_AAC_HE_V1 | AAC HE_V1格式 | 331| AUDIO_FORMAT_AAC_HE_V2 | AAC HE_V2格式 | 332| AUDIO_FORMAT_G711A | G711A格式 | 333| AUDIO_FORMAT_G711U | G711u格式 | 334| AUDIO_FORMAT_G726 | G726格式 | 335 336 337### AudioPortDirection 338 339 340``` 341enum AudioPortDirection 342``` 343 344**描述:** 345 346音频端口的类型。 347 348 | 枚举值 | 描述 | 349| -------- | -------- | 350| PORT_OUT | 音频输出端口 | 351| PORT_IN | 音频输入端口 | 352| PORT_OUT_IN | 音频输出/入端口, 同时支持输出和输入能力(OUT \| IN) | 353 354 355### AudioPortPassthroughMode 356 357 358``` 359enum AudioPortPassthroughMode 360``` 361 362**描述:** 363 364音频端口的数据透传模式。 365 366 | 枚举值 | 描述 | 367| -------- | -------- | 368| PORT_PASSTHROUGH_LPCM | 立体声pcm | 369| PORT_PASSTHROUGH_RAW | HDMI透传 | 370| PORT_PASSTHROUGH_HBR2LBR | 蓝光次世代音频降规格输出 | 371| PORT_PASSTHROUGH_AUTO | 根据HDMI EDID能力自动匹配 | 372 373 374### AudioPortPin 375 376 377``` 378enum AudioPortPin 379``` 380 381**描述:** 382 383音频适配器端口的PIN脚。 384 385 | 枚举值 | 描述 | 386| -------- | -------- | 387| PIN_NONE | 无效PIN | 388| PIN_OUT_SPEAKER | 喇叭输出 | 389| PIN_OUT_HEADSET | 有线耳机输出 | 390| PIN_OUT_LINEOUT | Lineout输出 | 391| PIN_OUT_HDMI | HDMI输出 | 392| PIN_OUT_USB | USB设备输出 | 393| PIN_OUT_USB_EXT | 扩展 USB 设备输出 | 394| PIN_IN_MIC | Mic输入 | 395| PIN_IN_HS_MIC | 有线耳机Mic输入 | 396| PIN_IN_LINEIN | Linein输入 | 397| PIN_IN_USB_EXT | 扩展 USB 设备输入 | 398 399 400### AudioPortRole 401 402 403``` 404enum AudioPortRole 405``` 406 407**描述:** 408 409音频端口角色。 410 411 | 枚举值 | 描述 | 412| -------- | -------- | 413| AUDIO_PORT_UNASSIGNED_ROLE | 未指定端口角色 | 414| AUDIO_PORT_SOURCE_ROLE | 指定端口为发送端角色 | 415| AUDIO_PORT_SINK_ROLE | 指定端口为接受端角色 | 416 417 418### AudioPortType 419 420 421``` 422enum AudioPortType 423``` 424 425**描述:** 426 427音频端口类型。 428 429 | 枚举值 | 描述 | 430| -------- | -------- | 431| AUDIO_PORT_UNASSIGNED_TYPE | 未指定端口类型 | 432| AUDIO_PORT_DEVICE_TYPE | 指定端口为设备类型 | 433| AUDIO_PORT_MIX_TYPE | 指定端口类型为复合类型 | 434| AUDIO_PORT_SESSION_TYPE | 指定端口为会话类型 | 435 436 437### AudioSampleFormat 438 439 440``` 441enum AudioSampleFormat 442``` 443 444**描述:** 445 446原始音频样本格式。 447 448 | 枚举值 | 描述 | 449| -------- | -------- | 450| AUDIO_SAMPLE_FORMAT_S8 | 8bit位宽有符号交织样本 | 451| AUDIO_SAMPLE_FORMAT_S8P | 8bit位宽有符号非交织样本 | 452| AUDIO_SAMPLE_FORMAT_U8 | 8bit位宽无符号交织样本 | 453| AUDIO_SAMPLE_FORMAT_U8P | 8bit位宽无符号非交织样本 | 454| AUDIO_SAMPLE_FORMAT_S16 | 16bit位宽有符号交织样本 | 455| AUDIO_SAMPLE_FORMAT_S16P | 16bit位宽有符号非交织样本 | 456| AUDIO_SAMPLE_FORMAT_U16 | 16bit位宽无符号交织样本 | 457| AUDIO_SAMPLE_FORMAT_U16P | 16bit位宽无符号非交织样本 | 458| AUDIO_SAMPLE_FORMAT_S24 | 24bit位宽有符号交织样本 | 459| AUDIO_SAMPLE_FORMAT_S24P | 24bit位宽有符号非交织样本 | 460| AUDIO_SAMPLE_FORMAT_U24 | 24bit位宽无符号交织样本 | 461| AUDIO_SAMPLE_FORMAT_U24P | 24bit位宽无符号非交织样本 | 462| AUDIO_SAMPLE_FORMAT_S32 | 32bit位宽有符号交织样本 | 463| AUDIO_SAMPLE_FORMAT_S32P | 32bit位宽有符号非交织样本 | 464| AUDIO_SAMPLE_FORMAT_U32 | 32bit位宽无符号交织样本 | 465| AUDIO_SAMPLE_FORMAT_U32P | 32bit位宽无符号非交织样本 | 466| AUDIO_SAMPLE_FORMAT_S64 | 64bit位宽有符号交织样本 | 467| AUDIO_SAMPLE_FORMAT_S64P | 64bit位宽有符号非交织样本 | 468| AUDIO_SAMPLE_FORMAT_U64 | 64bit位宽无符号交织样本 | 469| AUDIO_SAMPLE_FORMAT_U64P | 64bit位宽无符号非交织样本 | 470| AUDIO_SAMPLE_FORMAT_F32 | 32bit位宽浮点型交织样本 | 471| AUDIO_SAMPLE_FORMAT_F32P | 64bit位宽浮点型非交织样本 | 472| AUDIO_SAMPLE_FORMAT_F64 | 64bit位宽双精度浮点型交织样本 | 473| AUDIO_SAMPLE_FORMAT_F64P | 64bit位宽双精度浮点型非交织样本 | 474 475 476### AudioSampleRatesMask 477 478 479``` 480enum AudioSampleRatesMask 481``` 482 483**描述:** 484 485音频采样频率MASK。 486 487 | 枚举值 | 描述 | 488| -------- | -------- | 489| AUDIO_SAMPLE_RATE_MASK_8000 | 8K 采样频率 | 490| AUDIO_SAMPLE_RATE_MASK_12000 | 12K 采样频率 | 491| AUDIO_SAMPLE_RATE_MASK_11025 | 11.025K 采样频率 | 492| AUDIO_SAMPLE_RATE_MASK_16000 | 16K 采样频率 | 493| AUDIO_SAMPLE_RATE_MASK_22050 | 22.050K 采样频率 | 494| AUDIO_SAMPLE_RATE_MASK_24000 | 24K 采样频率 | 495| AUDIO_SAMPLE_RATE_MASK_32000 | 32K 采样频率 | 496| AUDIO_SAMPLE_RATE_MASK_44100 | 44.1K 采样频率 | 497| AUDIO_SAMPLE_RATE_MASK_48000 | 48K 采样频率 | 498| AUDIO_SAMPLE_RATE_MASK_64000 | 64K 采样频率 | 499| AUDIO_SAMPLE_RATE_MASK_96000 | 96K 采样频率 | 500| AUDIO_SAMPLE_RATE_MASK_INVALID | 无效的采样频率 | 501 502 503### AudioSessionType 504 505 506``` 507enum AudioSessionType 508``` 509 510**描述:** 511 512端口会话类型。 513 514 | 枚举值 | 描述 | 515| -------- | -------- | 516| AUDIO_OUTPUT_STAGE_SESSION | 会话绑定到指定输出流 | 517| AUDIO_OUTPUT_MIX_SESSION | 会话绑定到特定音轨 | 518| AUDIO_ALLOCATE_SESSION | 会话ID需重新申请 | 519| AUDIO_INVALID_SESSION | 无效会话类型 | 520 521 522## **函数说明** 523 524 525### GetAudioManagerFuncs() 526 527 528``` 529struct AudioManager* GetAudioManagerFuncs (void ) 530``` 531 532**描述:** 533 534获取音频适配器管理接口的操作函数列表,详情参考[AudioManager](_audio_manager.md)。 535 536**返回:** 537 538成功返回一个音频适配器管理接口的对象,失败返回NULL。 539 540 541## **变量说明** 542 543 544### adapterName 545 546 547``` 548const char* AudioAdapterDescriptor::adapterName 549``` 550 551**描述:** 552 553音频适配器的名称 554 555 556### channelCount [1/2] 557 558 559``` 560uint32_t AudioSampleAttributes::channelCount 561``` 562 563**描述:** 564 565音频通道数目,如单通道(mono)为1、立体声(stereo)为2。 566 567 568### channelCount [2/2] 569 570 571``` 572unsigned int AudioPortCapability::channelCount 573``` 574 575**描述:** 576 577支持的最大声道总数 578 579 580### channelMasks 581 582 583``` 584enum AudioChannelMask AudioPortCapability::channelMasks 585``` 586 587**描述:** 588 589设备的声道布局掩码(mask),详情参考[AudioChannelMask](#audiochannelmask)。 590 591 592### desc [1/5] 593 594 595``` 596const char* AudioDeviceDescriptor::desc 597``` 598 599**描述:** 600 601以字符串命名的音频设备 602 603 604### desc [2/5] 605 606 607``` 608struct AudioDeviceDescriptor AudioSceneDescriptor::desc 609``` 610 611**描述:** 612 613音频设备描述符 614 615 616### desc [3/5] 617 618 619``` 620const char* AudioSceneDescriptor::SceneDesc::desc 621``` 622 623**描述:** 624 625以字符串命名的音频场景 626 627 628### desc [4/5] 629 630 631``` 632const char* AudioSubPortCapability::desc 633``` 634 635**描述:** 636 637以字符串命名的子端口 638 639 640### desc [5/5] 641 642 643``` 644const char* AudioDevExtInfo::desc 645``` 646 647**描述:** 648 649地址描述 650 651 652### device 653 654 655``` 656struct AudioDevExtInfo AudioRouteNode::ext::device 657``` 658 659**描述:** 660 661设备特定信息。 662 663 664### deviceId 665 666 667``` 668unsigned int AudioPortCapability::deviceId 669``` 670 671**描述:** 672 673绑定(bind)设备ID,唯一的设备识别符。 674 675 676### deviceType 677 678 679``` 680unsigned int AudioPortCapability::deviceType 681``` 682 683**描述:** 684 685设备输出、输入类型。 686 687 688### dir 689 690 691``` 692enum AudioPortDirection AudioPort::dir 693``` 694 695**描述:** 696 697音频端口的类型,详情参考[AudioPortDirection](#audioportdirection)。 698 699 700### format 701 702 703``` 704enum AudioFormat AudioSampleAttributes::format 705``` 706 707**描述:** 708 709音频数据格式,详情参考[AudioFormat](#audioformat)。 710 711 712### formatNum 713 714 715``` 716unsigned int AudioPortCapability::formatNum 717``` 718 719**描述:** 720 721支持的音频格式数目 722 723 724### formats 725 726 727``` 728enum AudioFormat* AudioPortCapability::formats 729``` 730 731**描述:** 732 733支持的音频格式,详情参考[AudioFormat](#audioformat)。 734 735 736### frameSize 737 738 739``` 740uint32_t AudioSampleAttributes::frameSize 741``` 742 743**描述:** 744 745音频数据的帧大小 746 747 748### hardwareMode 749 750 751``` 752bool AudioPortCapability::hardwareMode 753``` 754 755**描述:** 756 757是否支持设备绑定处理 758 759 760### id 761 762 763``` 764unsigned int AudioSceneDescriptor::SceneDesc::id 765``` 766 767**描述:** 768 769音频场景的ID 770 771 772### interleaved 773 774 775``` 776bool AudioSampleAttributes::interleaved 777``` 778 779**描述:** 780 781音频数据交织的标记 782 783 784### isBigEndian 785 786 787``` 788bool AudioSampleAttributes::isBigEndian 789``` 790 791**描述:** 792 793音频数据的大端标志 794 795 796### isShareable 797 798 799``` 800int32_t AudioMmapBufferDescriptor::isShareable 801``` 802 803**描述:** 804 805mmap缓冲区是否可以在进程间共享 806 807 808### isSignedData 809 810 811``` 812bool AudioSampleAttributes::isSignedData 813``` 814 815**描述:** 816 817音频数据的有符号或无符号标志 818 819 820### mask 821 822 823``` 824enum AudioPortPassthroughMode AudioSubPortCapability::mask 825``` 826 827**描述:** 828 829数据透传模式,详情参考[AudioPortPassthroughMode](#audioportpassthroughmode)。 830 831 832### memoryAddress 833 834 835``` 836void* AudioMmapBufferDescriptor::memoryAddress 837``` 838 839**描述:** 840 841指向mmap缓冲区的指针 842 843 844### memoryFd 845 846 847``` 848int32_t AudioMmapBufferDescriptor::memoryFd 849``` 850 851**描述:** 852 853mmap缓冲区的文件描述符 854 855 856### mix 857 858 859``` 860struct AudioMixExtInfo AudioRouteNode::ext::mix 861``` 862 863**描述:** 864 865音轨特定信息。 866 867 868### moduleId [1/2] 869 870 871``` 872int32_t AudioDevExtInfo::moduleId 873``` 874 875**描述:** 876 877音频流绑定的模块ID 878 879 880### moduleId [2/2] 881 882 883``` 884int32_t AudioMixExtInfo::moduleId 885``` 886 887**描述:** 888 889流所属模块标识符 890 891 892### period 893 894 895``` 896uint32_t AudioSampleAttributes::period 897``` 898 899**描述:** 900 901音频采样周期 902 903 904### pins 905 906 907``` 908enum AudioPortPin AudioDeviceDescriptor::pins 909``` 910 911**描述:** 912 913音频端口上的PIN脚(输出、输入),详情参考[AudioPortPin](#audioportpin)。 914 915 916### portId [1/4] 917 918 919``` 920unsigned int AudioPort::portId 921``` 922 923**描述:** 924 925音频端口的ID 926 927 928### portId [2/4] 929 930 931``` 932unsigned int AudioDeviceDescriptor::portId 933``` 934 935**描述:** 936 937音频端口ID 938 939 940### portId [3/4] 941 942 943``` 944unsigned int AudioSubPortCapability::portId 945``` 946 947**描述:** 948 949子端口ID 950 951 952### portId [4/4] 953 954 955``` 956int32_t AudioRouteNode::portId 957``` 958 959**描述:** 960 961音频端口ID 962 963 964### portName 965 966 967``` 968const char* AudioPort::portName 969``` 970 971**描述:** 972 973音频端口的名称 974 975 976### portNum 977 978 979``` 980unsigned int AudioAdapterDescriptor::portNum 981``` 982 983**描述:** 984 985一个音频适配器支持的端口数目 986 987 988### ports 989 990 991``` 992struct AudioPort* AudioAdapterDescriptor::ports 993``` 994 995**描述:** 996 997一个音频适配器支持的端口列表 998 999 1000### role 1001 1002 1003``` 1004enum AudioPortRole AudioRouteNode::role 1005``` 1006 1007**描述:** 1008 1009指定端口角色为sink或source 1010 1011 1012### sampleRate 1013 1014 1015``` 1016unsigned int AudioSampleAttributes::sampleRate 1017``` 1018 1019**描述:** 1020 1021音频采样频率 1022 1023 1024### sampleRateMasks 1025 1026 1027``` 1028unsigned int AudioPortCapability::sampleRateMasks 1029``` 1030 1031**描述:** 1032 1033支持的音频采样频率(8k、16k、32k、48k) 1034 1035 1036### scene 1037 1038 1039``` 1040union AudioSceneDescriptor::SceneDesc AudioSceneDescriptor::scene 1041``` 1042 1043**描述:** 1044 1045音频场景的名称 1046 1047 1048### session 1049 1050 1051``` 1052struct AudioSessionExtInfo AudioRouteNode::ext::session 1053``` 1054 1055**描述:** 1056 1057会话特定信息。 1058 1059 1060### sessionType 1061 1062 1063``` 1064enum AudioSessionType AudioSessionExtInfo::sessionType 1065``` 1066 1067**描述:** 1068 1069音频会话类型 1070 1071 1072### silenceThreshold 1073 1074 1075``` 1076uint32_t AudioSampleAttributes::silenceThreshold 1077``` 1078 1079**描述:** 1080 1081音频捕获缓冲区阈值 1082 1083 1084### sinks 1085 1086 1087``` 1088const struct AudioRouteNode* AudioRoute::sinks 1089``` 1090 1091**描述:** 1092 1093接受端列表 1094 1095 1096### sinksNum 1097 1098 1099``` 1100uint32_t AudioRoute::sinksNum 1101``` 1102 1103**描述:** 1104 1105接受端节点数量 1106 1107 1108### sources 1109 1110 1111``` 1112const struct AudioRouteNode* AudioRoute::sources 1113``` 1114 1115**描述:** 1116 1117发送端列表 1118 1119 1120### sourcesNum 1121 1122 1123``` 1124uint32_t AudioRoute::sourcesNum 1125``` 1126 1127**描述:** 1128 1129发送端节点数量 1130 1131 1132### startThreshold 1133 1134 1135``` 1136uint32_t AudioSampleAttributes::startThreshold 1137``` 1138 1139**描述:** 1140 1141音频渲染开始阈值 1142 1143 1144### stopThreshold 1145 1146 1147``` 1148uint32_t AudioSampleAttributes::stopThreshold 1149``` 1150 1151**描述:** 1152 1153音频渲染停止阈值 1154 1155 1156### streamId [1/2] 1157 1158 1159``` 1160int32_t AudioSampleAttributes::streamId 1161``` 1162 1163**描述:** 1164 1165渲染或捕获的音频标识符 1166 1167 1168### streamId [2/2] 1169 1170 1171``` 1172int32_t AudioMixExtInfo::streamId 1173``` 1174 1175**描述:** 1176 1177由调用者传递的Render或Capture标识符 1178 1179 1180### subPorts 1181 1182 1183``` 1184struct AudioSubPortCapability* AudioPortCapability::subPorts 1185``` 1186 1187**描述:** 1188 1189支持的子端口列表 1190 1191 1192### subPortsNum 1193 1194 1195``` 1196unsigned int AudioPortCapability::subPortsNum 1197``` 1198 1199**描述:** 1200 1201支持的子端口数目(仅用于输出设备) 1202 1203 1204### supportSampleFormatNum 1205 1206 1207``` 1208uint32_t AudioPortCapability::supportSampleFormatNum 1209``` 1210 1211**描述:** 1212 1213支持的音频样本格式数量 1214 1215 1216### supportSampleFormats 1217 1218 1219``` 1220enum AudioSampleFormat* AudioPortCapability::supportSampleFormats 1221``` 1222 1223**描述:** 1224 1225支持的音频样本格式,详请参考[AudioSampleFormat](#audiosampleformat)。 1226 1227 1228### totalBufferFrames 1229 1230 1231``` 1232int32_t AudioMmapBufferDescriptor::totalBufferFrames 1233``` 1234 1235**描述:** 1236 1237缓冲区总大小,单位:帧。 1238 1239 1240### transferFrameSize 1241 1242 1243``` 1244int32_t AudioMmapBufferDescriptor::transferFrameSize 1245``` 1246 1247**描述:** 1248 1249传输大小,单位:帧。 1250 1251 1252### tvNSec 1253 1254 1255``` 1256int64_t AudioTimeStamp::tvNSec 1257``` 1258 1259**描述:** 1260 1261tvNSec时间,单位:纳秒。 1262 1263 1264### tvSec 1265 1266 1267``` 1268int64_t AudioTimeStamp::tvSec 1269``` 1270 1271**描述:** 1272 1273tvSec时间,单位:秒。 1274 1275 1276### type [1/3] 1277 1278 1279``` 1280enum AudioCategory AudioSampleAttributes::type 1281``` 1282 1283**描述:** 1284 1285音频类型,详情参考[AudioCategory](#audiocategory)。 1286 1287 1288### type [2/3] 1289 1290 1291``` 1292enum AudioPortPin AudioDevExtInfo::type 1293``` 1294 1295**描述:** 1296 1297音频端口上的PIN脚(输出、输入),详情参考[AudioPortPin](#audioportpin)。 1298 1299 1300### type [3/3] 1301 1302 1303``` 1304enum AudioPortType AudioRouteNode::type 1305``` 1306 1307**描述:** 1308 1309指定端口类型为device, mix等。 1310