build-qcom-wayland/workspace/sources/tinyalsa 和
build-qcom-wayland/workspace/sources/tinycompress。
下图展示了 TinyALSA 插件架构。
TinyALSA 插件架构
.so 文件(可动态加载的共享对象)。
虚拟声卡配置位于 card-defs.xml 文件中。该文件位于设备的 /etc/ 文件夹中。
TinyALSA API
以下是常用的 TinyALSA API。有关所有 API 的完整说明,请参阅开源 TinyALSA 文档。pcm_open
打开 PCM 音频设备,用于输入和输出操作。初始化 PCM 设备以进行通信,允许对音频数据进行读/写操作。
返回值
pcm* handle
pcm_is_ready
检查 PCM 设备是否已准备好进行输入和输出操作。
返回值
- PCM 设备就绪时返回非零值
- PCM 设备未就绪时返回 0
pcm_prepare
准备音频设备的输入和输出操作。
返回值
- 成功时返回 0
- 失败时返回错误代码
pcm_start
启动 PCM 音频设备,以进行输入和输出操作。
返回值
- 成功时返回 0
- 失败时返回错误代码
pcm_write
将音频数据写入 PCM 音频设备。以音频数据作为输入,并将其发送到 PCM 设备进行播放或处理。
返回值
- 成功时返回 0
- 失败时返回错误代码
pcm_read
从 PCM 设备获取音频数据,允许应用程序从麦克风捕获音频数据。
返回值
- 成功时返回 0
- 失败时返回错误代码
pcm_stop
停止 PCM 音频设备的进一步输入和输出操作。
返回值
- 成功时返回 0
- 失败时返回错误代码
pcm_close
关闭 PCM 音频设备。这会释放与 PCM 设备关联的资源并释放内存。
返回值
- 成功时返回 0
- 失败时返回错误代码
配置 TinyALSA
对于来自 TinyALSA 的音频用例,请配置虚拟混音器控制。 这些由混音器插件创建的控制用于设置音频用例图和模块。大多数控制基于字节数组,并使用mixer_ctl_set_array API 进行配置。元数据(称为 ‘PCM100 metadata’)通过键值(KV)对设置。有关实现详情,请参阅 build-qcom-wayland/workspace/sources/qcom-agm/opensource/agm/plugins/tinyalsa/test/agmmixer.c 中的 set_agm_audio_intf_metadata API。
build-qcom-wayland/workspace/sources/qcom-agm/opensource/agm/plugins/tinyalsa/test。
要启用并执行来自 TinyALSA 的音频用例:
- 设置音频接口(后端)设备配置,包括采样率、声道、格式和数据格式。
- 设置元数据,包括图键、设备的校准键和 DevicePP。
- 设置控制,以指示后续的混音器配置将为 stream 和 StreamPP 子图设置元数据。零表示后续命令针对 stream。
- 设置控制,以指示后续的混音器配置将为 DevicePP 和 stream-device 子图设置元数据。
CODEC_DMA-LPAIF_WSA-RX-0表示后续命令针对 stream-device。CODEC_DMA-LPAIF_WSA-RX-0是在 ALSA ASOC 框架中注册的音频接口之一。所有音频接口的列表可在/proc/asound/pcm中找到。 - 检索与 stream 和音频接口之间给定会话关联的所有标签、模块 ID 和实例 ID。
- 设置控制,以指示后续的混音器配置将为 stream 子图上的模块设置参数。
- 设置控制,以指示后续的混音器配置将为 StreamDevice 和 DevicePP 子图上的模块设置参数。
- 将前端(stream)与后端(编解码器/音频接口)连接。
- 打开 PCM 设备。
- 准备音频设备的输入和输出操作。
- 启动 PCM 音频设备,以进行输入和输出操作。
- 向 PCM 音频设备写入和读取音频数据。
- 停止 PCM 设备。
- 关闭 PCM 音频设备。

