32个版本
新 0.9.1 | 2024年8月21日 |
---|---|
0.9.0 | 2024年2月21日 |
0.8.1 | 2023年10月13日 |
0.7.1 | 2023年7月30日 |
0.0.5 | 2015年6月21日 |
#9 in 音频
每月207,266次下载
用于568个crate(24直接)
430KB
11K SLoC
ALSA绑定库
为ALSA(Linux音频设备访问最常用的API)提供的轻薄且安全的包装
ALSA API相当庞大,因此并非所有功能都已涵盖,但以下功能应该可以正常工作
-
音频播放(示例在
pcm
模块文档中) -
音频录音
-
混音控制
-
HCtl API(在
hctl
模块文档中的jack检测示例) -
原始midi
-
Midi序列器(大部分)
-
Ctl API
-
设备名称提示(示例在
device_name
模块文档中) -
所有上述内容的枚举
-
轮询和/或等待所有上述内容
以下功能尚未实现(主要是因为没有人要求)
-
独立的定时器API(snd_timer_*)
-
配置API(snd_config_*)
-
插件API
快速入门指南/API设计
-
大多数函数与alsa-lib函数一一对应,例如,
ctl::CardInfo::get_id()
是snd_ctl_card_info_get_id
的包装,有关更多信息,请参阅alsa-lib文档。 -
结构体是RAII,在丢弃时关闭/释放,例如,当
PCM
结构体被丢弃时,会调用snd_pcm_close
。 -
要读取和写入缓冲区,请调用
io_*
方法。它将返回一个单独的结构体,您可以从该结构体中读取或写入,并且也可以用于mmap(如果由驱动程序支持)。 -
错误处理 - 大多数alsa-lib函数可以返回错误,因此这些函数的返回值是
Result
。 -
通过实现
Iterator
的结构体来枚举卡、设备等。 -
许多结构体实现了
poll::Descriptors
,以便与您喜欢的异步框架结合使用。或者如果您不需要非阻塞功能,可以使用wait
。
注意
- 要成功运行测试,必须配置一个“默认”的声卡。通常在普通硬件上运行时这不是问题,但一些CI系统、Docker镜像等可能默认未配置。
依赖项
~440KB
~12K SLoC