前言
Audio系统中ALSA是在开源系统中使用最多的框架,本文介绍下这方面的基础知识点便于未来的拓展和深入挖掘。
1. ALSA系统架构
-
系统架构图
-
系统层次介绍
ALSA从系统的角度可以分为三个层次,自上而下分别为 alsa-utils,alsa-lib和asoc driver;
alsa-utils:提供了一些基于alsa-lib之上的bin可执行文件来录制或是播放音频文件
alsa-lib:是userspace到kernel等的标准api
asoc driver:kernel层alsa 框架层
2. 主流OS差异
在PC主机上如ubuntu centos等系统上之上都是使用上图中左边的standard OS架构, 这种相对比较复杂。
在android手机系统上,google对应用层的部分进行了裁剪,使用的是右边的架构,这种比较简单。
3. 代码路径
userspace的代码路径如下:
https://git.alsa-project.org/,主流的开发人员只需要关注alsa-utils.git,alsa-lib.git这两个仓就可以了。
kernel alsa的代码可以在linux的git仓库中得到,https://www.alsa-project.org/wiki/Main_Page已经不再单独维护,如下:
https://git.kernel.org/pub/scm/linux/kernel/git/lrg/asoc.git/