使用ALSA同步C代码

问题描述 投票:1回答:1

我正在使用C.操作系统生成声音样本。操作系统是Linux。硬件是Raspberry Pi 3 Model B.我需要将生成的样本写入与采样率同步的循环缓冲区。 ALSA看起来相当复杂,所以我想有一个标志或者我可以使用的东西,以确保我不会超出或低于缓冲区。因此,如果我每秒使用48000个样本,我想生成下一个样本,并在写完最后一个样本后写入1/48000秒。建议赞赏,以及良好的ALSA文档的参考。

c linux audio raspberry-pi alsa
1个回答
1
投票

为了防止欠载,您应该尽量保持缓冲区尽可能充满。

当设备处于(默认)阻塞模式时会自动发生这种情况:当您尝试写入样本但环形缓冲区已满时,该功能会休眠,直到某个空间可用。所以尽量尝试尽可能快地写样本。

© www.soinside.com 2019 - 2024. All rights reserved.