Linux Audio Alsa (3) from Alsa lib API to Driver
承接第二章的内容,通过分析alsa conf,能够获得要访问的pcmXcX或者pcmXpX。这里整理下alsa lib访问声音设备的过程。按照第一部分sample的整个流程开始。
打开设备过程

如上顺序图是打开音频设备的过程。
参数设置过程
在第一部分audio sample中讲到,参数有两种类型:硬件参数,软件参数。其中硬件参数又有两种类型,mask和internal,mask是位图形式表示的参数,internal是用区间形式表示的参数。不同硬件参数的设置过程都是类似的。
下面的顺序图是设置format这种mask类型硬件参数的例子。

设置参数是refine相关调用用来更新内部保存的参数信息,在snd_pcm_hw_params中真正的根据参数设置底层硬件,最后的prepare开启底层的功能单元,准备好dma,准备读写。
软件参数的设置就是填充第一部分中提到的struct snd_pcm_sw_params结构,然后调用snd_pcm_sw_params设置软件参数。

读数据
读数据过程如下序列图

写数据
写数据过程序序列图

本文详细解析了Linux ALSA库如何从API层面操作硬件,介绍了打开设备、设置参数、读写数据的具体流程。通过实例讲解硬件参数mask与internal的设置方法,以及软件参数的配置过程。

2911

被折叠的 条评论
为什么被折叠?



