audio
简介
Audio仓下主要包含HDI接口,HDI接口主要用于:
- 管理声卡驱动的加载、卸载
- 创建音频播放、录音对象
- 选择音频场景
- 设置音频属性
- 设置音频音量及增益
- 控制音频播放及录音的启、停等
图 1 Audio仓相关模块逻辑视图
目录
Audio仓下源代码目录结构如下所示
drivers/peripheral/audio/
└── interfaces #Audio驱动对外接口存放目录
└── include #Audio驱动对北向提供的HDI接口存放目录
接口说明
Audio驱动提供给Audio Service可直接调用的能力接口,主要功能有:加载/卸载音频声卡驱动、创建音频播放/录音对象、启停音频播放/录音、调节音频音量等。
提供的部分接口说明如表1 Audio HDI接口所示:
表 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);
|
获取音频播放当前的通道模式
|
使用说明
该仓核心功能包括两个方面:
- 提供Audio HDI接口供北向音频服务调用,实现音频服务的基本功能。
- 作为标准南向接口,保证南向OEM产商实现HDI-adapter的规范性,保证生态良性演进。
具体接口调用及实现,以接口注释为准。
相关仓
驱动子系统
drivers_framework
drivers_adapter
drivers_adapter_khdf_linux
drivers_peripheral