Linux ALSA音频框架分析六:ALSA-lib移植
虽然linux下alsa框架给用户空间提供了系统调用,但alsa-lib对系统调用进行进一步封装,并实现了很多插件,例如多音频源进行混音播放时,调用的就是 dmix 插件。
一 软件包下载
进入网站
http://www.alsa-project.org/选择下载合适版本的软件包。
其中,alsa-lib是ALSA 应用库(必需基础库),alsa-utils包含一些ALSA小的测试工具.如aplay、arecord 、amixer播放、录音和调节音量小程序,对于一些应用开发者只需要以上两个软件包就可以了。
二 配置和编译
2.1 alsa-lib
解压alsa-lib-x.x.x.tar.bz2
进入解压后目录cd alsa-lib-x.x.x
配置
./configure --host=aarch64-linux-gnu --prefix=/usr/local/share/arm64-alsa --enable-static=yes --enable-shared=no --enable-python=no --with-configdir=/usr/local/share/alsa --with-plugindir=/usr/local/lib/alsa_lib --with-pcm-plugins=hw
编译 make
安装 make install
其中配置参数--prefix=/usr/local/share/arm64-alsa 是编译后结果的输出路径,--with-configdir=/usr/local/share/alsa它将影响 include/config.h中的 ALSA_CONFIG_DIR 目录。
2.2 alsa-utils
解压alsa-utils-x.x.x.tar.bz2
进入解压后目录cd alsa-utils-x.x.x
配置
./configure --host=aarch64-linux-gnu --prefix=/usr/local/share/arm64-alsa CFLAGS="-I/usr/local/share/arm64-alsa/include" LDFLAGS="-L/usr/local/share/arm64-alsa/lib -lasound" --disable-alsamixer --disable-xmlto
编译 make
安装 make install
2.3 移植
复制目标文件夹下的文件到嵌入式系统的根文件系统:
cp -rfa /usr/local/share/arm64-alsa/lib/* /initramfs/lib/
cp -rfa /usr/local/share/arm64-alsa/bin/* /initramfs/sbin/
cp -rfa /usr/local/share/arm64-alsa/sbin/* /initramfs/sbin/
cp -rfa /usr/local/share/alsa/* /initramfs/usr/local/share/alsa/
配置环境变量:
在rootfs/etc/profile,添加如下两行:
#alsa_init
export ALSA_CONFIG_PATH=/usr/local/share/alsa/alsa.conf
生成跟文件系统:
find .|cpio -o -H newc|gzip -9 > $(pwd)/initramfs.img.gz
三 相关软件应用
在alsa-utils包含一些ALSA小的测试工具,这些工具软件都是基于alsa-lib的API实现的,其中amixer可以进行音频通道选通和音量调节,aplay是播放音频软件,arecord是录音软件。