关于ALSA的小结


这一年来的一个重要工作是音频设备驱动方面,如驱动开发、调试debug、性能调优、音频路由、回声消除等。除此之外,熟悉了一下alsa-lib接口,Android音频系统,包括设备抽象层和音频策略。


遗憾的是一直没有什么机会接触蓝牙设备的集成和开发,可预知的未来无线设备会极大地普及。还有就是ffmpeg,以前经常用它来做一些兴致突来能力而及的小工具,年初时计划进一步在它的基础上学习H264或AVS的解码,但至今都未开始。问题一方面是我自身的懒惰,另一方面是公司不允许装虚拟机(PC装的是windows,毕竟办公都必须在windows环境下,开发登陆到Linux服务器)。试过在cygwin上面建立ffmpeg开发环境,以失败告终,ffplay无论如何都不能编译。


而值得自豪的是,alsa-driver算是消化得差不多了。sound/core目录里面的几大主体:control、hwdep和pcm,sound/soc目录的soc-core和soc-dapm都基本理顺了。还有info、jack、timer、rawmidi、usb-audio、ac97-bus,有空再研究。


关于control、hwdep、dapm、codec,写了不少文章记录我的学习成果,均在ALSA专栏。Card和pcm方面,由于内容太庞大,未整理出较完善的文档,暂借用前辈的经验,如下:

Linux音频驱动之二:声卡的创建:http://blog.csdn.net/droidphone/article/details/6289712

Linux音频驱动之三:PCM设备的创建:http://blog.csdn.net/droidphone/article/details/6308006

alsa驱动分析之一:http://blog.csdn.net/wylhistory/article/details/5114217

alsa驱动分析之二:http://blog.csdn.net/wylhistory/article/details/5114230


然后缪谈一些个人对于alsa开发的心得吧。

1、 清楚音频相关概念和原理,如采样率、采样精度、peroid、ADC/DAC、DAI、pops等等;明白音频数据流向,进而明白codec、i2s、dma各起到什么作用。

2、多看内核文档Documentation/sound/alsa,这些文档起到概述作用,配合源码可以让人更清晰音频概念和运作机理。

3、alsa-utils的几个工具,多用aplay和amixer进行调试。

4、熟悉alsa配置脚本asound.rc的写法:http://www.alsa-project.org/alsa-doc/alsa-lib/pcm_plugins.html,有时间可以练习写一个类似aplay的播放器工具。

其实这些都是老生常谈了,但很实用。


另外今天在网上找到一个wolfson音频处理芯片的PPT,写得很好,将音频开发的大致流程和关键点都写出来了。

Linux Audio for Android: http://download.csdn.net/detail/sepnic/3783997

你可能感兴趣的:(windows,linux,android,文档,工具,Codec)