当我在这些内核文档中看到ALSA(高级linux声音架构(及其api时,我正在阅读如何从linux内核播放音频:https://www.kernel.org/doc/html/latest/sound/kernel-api/alsa-driver-api.html.
然而,似乎大多数试图在linux中播放音频的人都使用asound库,通常也包括在内
#include <alsa/asoundlib.h>
但是当我在这里浏览asoundlib
api时:https://www.alsa-project.org/alsa-doc/alsa-lib/它似乎与我上面链接的内核api没有相同的功能。在这一点上,我很困惑,因为我不确定在播放音频时何时调用内核api和asoundlibapi。
一个很好的例子是asoundlib
api有一个名为snd_pcm_open
的函数,用于创建一个句柄和到音频接口的连接。我在内核文档中找不到这个函数。所以我想知道,asoundlib
是调用内核api函数,还是这两个api都是正交的?如果它们是正交的,那么kerenel调用asoundlib
做什么?
ALSA项目-C库参考
前言部分指出:
高级Linux声音架构(ALSA(带有内核API和库API。。。
API使用部分说明:
应用程序程序员应该使用库API,而不是内核API。该库提供了内核API 100%的功能,但增加了可用性方面的主要改进,使应用程序代码更简单、更美观。此外,将来的修复程序或兼容性代码可能会放在库代码中,而不是放在内核驱动程序中。