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设置软件参数。
读数据
读数据过程如下序列图
写数据
写数据过程序序列图