ALSA架构简介

来源:互联网 发布:阿里云邮件推送资源包 编辑:程序博客网 时间:2024/04/19 08:23

ALSA Advanced Linux Sound Architecture(高级Linux声音体系)的缩写)是为声卡提供驱动的Linux内核组件,以替代原先的OSS(开放声音系统)。ALSA除了像OSS那样提供一组内核驱动程序模块以外,还专门为简化应用程序的编写提供了相应的库函数,与OSS提供的基于ioctl的原始编程接口相比,ALSA函数库使用起来要更加方便一点。

ALSA的主要特点如下:

支持多种声卡设备。

模块化的内核驱动程序。

支持SMP和多线程。

提供应用开发函数库以简化应用程序开发。

支持OSS API,兼容OSS应用程序。

ALSA具有更加友好的编程接口,并且完全兼容于OSS,对应用程序来讲无疑是一个更佳地选择。ALSA系统包括驱动包alsa-driver,开发包alsa-libs,开发包插件alsa-libplugins,设置管理工具包alsa-utils,其他声音相关处理小程序包alsa-tools,特殊音频固件支持包alsa-firmwareOSS接口兼容模拟层工具alsa-oss7个子项目,其中只有驱动包是必须的。

alsa-driver指内核驱动程序,包括硬件相关的代码和一些公共代码,非常庞大。
   
alsa-libs指用户空间的函数库,提供给应用程序使用,应用程序应包括头文件asoundlib.h。并使用共享库libasound.so

alsa-utils包含一些基于ALSA的用于控制声卡的应用程序,如alsaconf(侦测系统中声卡并写一个适合的ALSA配置文件),aplay(基于命令行的声音文件播放),arecord(基于命令行的声音文件录制)等。

目前ALSA内核提供给用户空间的接口有:

信息接口(proc/asound

控制接口(dev/snd/controlCX

混音器接口(dev/snd/mixerCXDX

PCM接口(dev/snd/pcmCXDX

Raw迷笛接口(dev/snd/midiCXDX

音序器接口(dev/snd/seq

定时器接口(dev/snd/timer

OSS类似,上述接口也以文件的方式被提供,不同的是这些接口被提供给alsa-lib使用,而不是直接给应用程序使用的。应用程序最好使用alsa-lib,或者更高级的接口。

下图所示为ALSA声卡驱动与用户空间体系结构的简图,从中可以看出ALSA内核驱动与用户空间库及OSS之间的关系


0 0
原创粉丝点击