在linux系统中,先后出现了音频设备的两种框架:OSS和ALSA.
针对不同的数字音频子系统,出现了几种微处理器或DSP与音频器件间用于数字转换的接口。
音频设备的硬件接口
(1)PCM接口。
(2)IIS接口。
(3)AC97接口。
在CD,MD,MP3随身听多采用IIS接口,移动电话会采用PCM接口,具有音频功能的PDA则多使用和PC一样的AC97编码格式。
linux OSS音频设备驱动
OSS标准中有两个最基本的音频设备:mixer(混音器)和dsp(数字信号处理器)。
在声卡的硬件电路中,mixer是一个很重要的组成部分,它的作用是将多个信号组合或者叠加在一起,对于不同的声卡来说,其混音器的作用可能各不相同。在OSS驱动中,/dev/mixer设备文件时应用程序对mixer进行操作的软件接口。
OSS用户空间编程
1.dsp编程
对OSS驱动声卡的编程使用linux文件接口函数,dsp接口的操作一般包括如下几个步骤
(1)打开设备文件/dev/dsp。
(2)如果有需要,设置缓冲区大小。
(3)设置声道(channel)数量。
根据硬件设备和驱动程序的具体情况,可以设置为单声道或者立体声。
(4)设置采样格式和采样频率。
(5)读写/dev/dsp实现播放和录音。
linux ALSA音频设备驱动
ALSA的主要特点,
(1)支持多种声卡设备。
(2)模块化的内核驱动程序。
(3)支持SMP和多线程。
(4)提供应用开发函数库(alsa-lib)以简化应用程序开发。
(5)支持OSS API,兼容OSS应用程序。
ALSA系统包括 驱动包alsa-driver,开发包alsa-libs,开发板插件alsa-libplugins,设置管理工具包alsa-utils,其他声音相关处理小程序包alsa-tools,特殊音频固件支持包alsa-firmware,OSS接口兼容模拟层工具alsa-oss,其中只有驱动包是必需的。
对于每个声卡而言,必须创建一个card实例,card是声卡的“总部”,他管理这个声卡上的所有设备(组件),如PCM,mixers,MIDI,synthesizer等。因此,card和组件式ALSA声卡驱动中的主要组成元素。
PCM设备
每个声卡最多可以有四个PCM实例,一个PCM实例对应一个设备文件。PCM实例由PCM播放和录音流组成,而每个PCM流又由一个或多个PCM子流组成,
阅读(2587) | 评论(0) | 转发(1) |