Linux下ALSA驱动分析

Linux ALSA 驱动模型

一、音频相关知识


声音是连续的模拟信号,音频设备是将模拟信号和数字信号进行转换的设备。转转的原理就是通过离散的时间对信号进行量化,以对模拟信号进行准确的模拟。
音频通常包括输入和输出,它们可以同时进行。有关音频的指标参数如下。


采样频率:单位时间内的采样次数。采样频率越高,采样点之间的时间间隔就越短,数字量化后的声音就越逼近模拟信号。声音的采样频率用kHz(千赫兹)来度量。

量化位数:即采样位数,就是模拟量转换成数字量后的数据位数。它有8位和16位两种。位数越多,声音越细腻。

声道数量:指单声道或者是立体声(即左右声道)

二、Linux下的音频驱动架构


Linux内核目前采用 ALSA(Advanced Linux Sound Architecture) 架构,目前已经成为linux的主流音频体系结构。

该架构不经包括驱动部分,而且还包括了应用部分。应用库对驱动提供的服务进行封装,避免应用对ioctl频繁的调用,容易理解和使用。

ASLALinux高级声音架构,它在Linux系统上提供了音频和MIDI(音乐设备数字化接口)的支持,它包含API库和工具,内核驱动集合,ALSA包含一系列的内核驱动集合对声音的支持,还提供了libasound的API库支持。用做这些写应用程序不需要打开设备操作,完全不用关注底层。

ALSA自带的应用程序是alsa-utils工具包,包括aplay、alsamixre等。Aplay用于在ALSA上播放音频,alsamixer用于改变音频音量。

Alsa-lib是用户空间的函数库,提供lib asound.so给应用程序使用。应用程序包含头文件asoundlib.h。这个库提供封装函数(ALSA-API)使应用程序编写更容易。

Alsa-lib中的control、 timer、 dmix 等都是以插件(plugin)存在,alsa-lib通过硬件访问层的系统调用与内核交互。

Alsa-driver是音频设备的alsa内核部分的驱动,集成到内核中,多数以模块存在。它分三层:

1、 硬件控制层,访问和操作硬件
2、 中间层是LASA驱动的核心部分,由各种功能的驱动设备组成,为用户提供硬件组件,如PCM、AC97、音序器和控制器等。用户也可以自行定义设备组件。
3、 驱动最上层是声卡对象描述层,是声卡硬件的抽象描述,内核通过这些描述可得知声卡的功能,设备组件以及操作方法等。

以下是ALSA驱动架构图:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值