如果我将采样率设置为 44.1kHz,ALSA 驱动程序如何决定嵌入式硬件的采样时钟?我必须参考哪个源文件来检查 MCLK 的频率调整?
我想编写一个应用程序,用于从用户空间向我的 PCM 提供采样时钟(即 MCLK)。我怎样才能做到这一点?
答案1
在 ALSA 中,每个设备都使用自己的硬件采样率时钟。因此不同时钟之间的误差会累积。到目前为止,我还没有看到允许时钟速率调整的 ALSA 驱动程序,无论是通过文件还是其他方式。但这并不意味着您的特定声卡的 ALSA 驱动程序不是例外,并且允许您以某种方式执行此操作。
我认为您不能直接从用户空间访问采样时钟(甚至可能不能从内核空间访问)。
Jack 使用单个 ALSA 设备为所有内容提供主时钟,这可能意味着它根据 ALSA 的反馈调整缓冲区大小(但这只是猜测)。我会研究 Jack 代码,看看他们是如何做到这一点的。