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 音频

Download history 54483/week @ 2024-05-03 47977/week @ 2024-05-10 75021/week @ 2024-05-17 70291/week @ 2024-05-24 74301/week @ 2024-05-31 74847/week @ 2024-06-07 73864/week @ 2024-06-14 73973/week @ 2024-06-21 68146/week @ 2024-06-28 47992/week @ 2024-07-05 48184/week @ 2024-07-12 43674/week @ 2024-07-19 47498/week @ 2024-07-26 44306/week @ 2024-08-02 57259/week @ 2024-08-09 49921/week @ 2024-08-16

每月207,266次下载
用于568个crate(24直接)

Apache-2.0/MIT

430KB
11K SLoC

ALSA绑定库

为ALSA(Linux音频设备访问最常用的API)提供的轻薄且安全的包装

crates.io API documentation license

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