# audio - [简介](#section11660541593) - [目录](#section161941989596) - [接口说明](#section1551164914237) - [使用说明](#section129654513264) - [相关仓](#section1371113476307) ## 简介 Audio仓下主要包含HDI接口,HDI接口主要用于: - 管理声卡驱动的加载、卸载 - 创建音频播放、录音对象 - 选择音频场景 - 设置音频属性 - 设置音频音量及增益 - 控制音频播放及录音的启、停等 **图 1** Audio仓相关模块逻辑视图 ![](figures/logic-view-of-modules-related-to-this-repository_zh.png "logic-view-of-modules-related-to-this-repository_zh") ## 目录 Audio仓下源代码目录结构如下所示 ``` drivers/peripheral/audio/ └── interfaces #Audio驱动对外接口存放目录 └── include #Audio驱动对北向提供的HDI接口存放目录 ``` ### 接口说明 Audio驱动提供给Audio Service可直接调用的能力接口,主要功能有:加载/卸载音频声卡驱动、创建音频播放/录音对象、启停音频播放/录音、调节音频音量等。 提供的部分接口说明如[表1 Audio HDI接口](#table1513255710559)所示: **表 1** Audio HDI接口

头文件

接口名称

功能描述

audio_manager.h

int32_t (*GetAllAdapters)(struct AudioManager *manager, struct AudioAdapterDescriptor **descs, int32_t *size);

获取音频驱动中支持的所有适配器的列表

int32_t (*LoadAdapter)(struct AudioManager *manager, const struct AudioAdapterDescriptor *desc, struct AudioAdapter **adapter);

加载一个音频适配器(声卡)的驱动

void (*UnloadAdapter)(struct AudioManager *manager, struct AudioAdapter *adapter);

卸载一个音频适配器(声卡)的驱动

audio_adapter.h

int32_t (*InitAllPorts)(struct AudioAdapter *adapter);

初始化一个音频适配器所有的端口驱动

int32_t (*CreateRender)(struct AudioAdapter *adapter, const struct AudioDeviceDescriptor *desc, const struct AudioSampleAttributes *attrs, struct AudioRender **render);

创建一个音频播放(render)接口的对象

int32_t (*DestroyRender)(struct AudioAdapter *adapter, struct AudioRender *render);

销毁一个音频放音(render)接口的对象

int32_t (*GetPortCapability)(struct AudioAdapter *adapter, const struct AudioPort *port, struct AudioPortCapability *capability);

获取一个音频适配器的端口驱动的能力集

int32_t (*SetPassthroughMode)(struct AudioAdapter *adapter, const struct AudioPort *port, enum AudioPortPassthroughMode mode);

设置音频端口驱动的数据透传模式

int32_t (*GetPassthroughMode)(struct AudioAdapter *adapter, const struct AudioPort *port, enum AudioPortPassthroughMode *mode);

获取音频端口驱动的数据透传模式

audio_render.h

int32_t (*RenderFrame)(struct AudioRender *render, const void *frame, uint64_t requestBytes, uint64_t *replyBytes);

往音频驱动中播放(render)一帧输出数据(放音,音频下行数据)

int32_t (*GetRenderPosition)(struct AudioRender *render, uint64_t *frames, struct AudioTimeStamp *time);

获取音频输出帧数的上一次计数

int32_t (*SetRenderSpeed)(struct AudioRender *render, float speed);

设置音频的播放速度

int32_t (*GetRenderSpeed)(struct AudioRender *render, float *speed);

获取音频当前的播放速度

int32_t (*SetChannelMode)(struct AudioRender *render, enum AudioChannelMode mode);

设置音频播放的通道模式

int32_t (*GetChannelMode)(struct AudioRender *render, enum AudioChannelMode *mode);

获取音频播放当前的通道模式

### 使用说明 该仓核心功能包括两个方面: 1. 提供Audio HDI接口供北向音频服务调用,实现音频服务的基本功能。 2. 作为标准南向接口,保证南向OEM产商实现HDI-adapter的规范性,保证生态良性演进。 具体接口调用及实现,以接口注释为准。 ## 相关仓 [驱动子系统](https://gitee.com/openharmony/docs/blob/master/zh-cn/readme/%E9%A9%B1%E5%8A%A8%E5%AD%90%E7%B3%BB%E7%BB%9F.md) [drivers\_framework](https://gitee.com/openharmony/drivers_framework/blob/master/README_zh.md) [drivers\_adapter](https://gitee.com/openharmony/drivers_adapter/blob/master/README_zh.md) [drivers\_adapter\_khdf\_linux](https://gitee.com/openharmony/drivers_adapter_khdf_linux/blob/master/README_zh.md) [drivers\_peripheral](https://gitee.com/openharmony/drivers_peripheral)