Linux Audio Alsa (3) from Alsa lib API to Driver

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

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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设置软件参数。
在这里插入图片描述

读数据

读数据过程如下序列图
在这里插入图片描述

写数据

写数据过程序序列图
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值