alsa声卡学习笔记
来源:互联网 发布:数控折弯机编程 编辑:程序博客网 时间:2024/05/23 12:31
ALSA由下面几部分组成:
1. Driver 内核驱动程序,包括硬件相关的和一些公共代码。有近30万行代码,太庞大的了,只选择性的看了core里一些代码。比如粗略的浏览了一遍《Writing an ALSA Driver》,写得不错。
2. Library 用户空间的函数库,这是给应用程序使用的。要包含头文件asoundlib.h,链接共享库libasound.so。
3. Lib-plugins 提供了两个插件,一个用jack模拟alsa接口,一个用oss来模拟alsa接口。高!alsa可以作为jack的后端,jack也可以作为alsa的后端,alsa可以模拟oss,oss也可以模拟alsa。
4. Utilities一些基于alsa的命令行小程序,可以作为示例代码参考。
5. Tools 一些小工具, 比如vxloader可以用来加载Firmware。
6. Firmware 一些设备的Firmware,这些Firmware由内核在适当的时候通过hotplug加载。Firmware其实就是一些程序,每个设备实际上就是一个独立的嵌入式系统,声卡也一样,有自己的程序。但为了节约成本和方便升级,这些设备可能只有RAM而没有ROM,在起动设备时,由系统(如linux)把设备的Firmware加载到设备的RAM里,设备才能运行。
目前ALSA内核提供给用户空间的接口有:
1. Information Interface (/proc/asound)
2. Control Interface (/dev/snd/controlCX)
3. Mixer Interface (/dev/snd/mixerCXDX)
4. PCM Interface (/dev/snd/pcmCXDX)
5. Raw MIDI Interface (/dev/snd/midiCXDX)
6. Sequencer Interface (/dev/snd/seq)
7. Timer Interface (/dev/snd/timer)
和OSS类似,也是以文件的方式提供的,但这些接口是给alsalib使用的,而不是给应用程序使用的。应用程序应该使用alsalib,或者更高级的接口,比如jack提供的接口。
8. OSS Compat 与OSS兼容的代码。
$ cd /dev/snd
$ ls -l
crw-rw----+ 1 root audio 116, 8 2011-02-23 21:38 controlC0
crw-rw----+ 1 root audio 116, 4 2011-02-23 21:38 midiC0D0
crw-rw----+ 1 root audio 116, 7 2011-02-23 21:39 pcmC0D0c
crw-rw----+ 1 root audio 116, 6 2011-02-23 21:56 pcmC0D0p
crw-rw----+ 1 root audio 116, 5 2011-02-23 21:38 pcmC0D1p
crw-rw----+ 1 root audio 116, 3 2011-02-23 21:38 seq
crw-rw----+ 1 root audio 116, 2 2011-02-23 21:38 timer
$
我们可以看到以下设备文件:
- controlC0 --> 用于声卡的控制,例如通道选择,混音,麦克风的控制等
- midiC0D0 --> 用于播放midi音频
- pcmC0D0c --〉 用于录音的pcm设备
- pcmC0D0p --〉 用于播放的pcm设备
- seq --〉 音序器
- timer --〉 定时器
其中,C0D0代表的是声卡0中的设备0,pcmC0D0c最后一个c代表capture,pcmC0D0p最后一个p代表playback,这些都是alsa-driver中的命名规则。
ALSA学习可以参考:
ALSA project homepage
http://www.alsa-project.org/main/index.php/Main_Page
ALSA project - the C library reference Modules
http://www.alsa-project.org/alsa-doc/alsa-lib/modules.html
ALSA Programming HOWTO
http://www.suse.de/~mana/alsa090_howto.html
ALSA Wiki
https://wiki.archlinux.org/index.php/Advanced_Linux_Sound_Architecture_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87)#Software_mixing_.28dmix.29
A Tutorial on Using the ALSA Audio API
http://www.equalarea.com/paul/alsa-audio.html
ALSA 驱动分析
http://blog.csdn.net/droidphone
- alsa声卡学习笔记
- ALSA声卡16_编写ALSA声卡应用程序_学习笔记
- ALSA声卡07_分析调用过程_学习笔记
- ALSA声卡笔记4-----体验声卡
- ALSA声卡笔记1---ALSA驱动框架
- Android ALSA 声卡驱动学习
- ALSA声卡笔记2---ASoC驱动框架
- alsa声卡
- ALSA声卡08_从零编写之框架_学习笔记
- ALSA声卡09_从零编写之参数设置_学习笔记
- ALSA声卡10_从零编写之数据传输_学习笔记
- ALSA声卡11_从零编写之调试——学习笔记
- ALSA声卡12_从零编写之添加音量控制_学习笔记
- ALSA声卡13_从零编写之WM8976_学习笔记
- Alsa学习笔记
- ALSA 学习笔记
- ALSA学习笔记
- alsa声卡安装
- MFC CPropertySheet 多页面切换 实例
- C++多线程技术--API
- mysql连接linux系统提示“登录出现1130 is not allowed to connect to this MySql server”问题,解决方法
- Hadoop学习总结之五:Hadoop的运行痕迹
- Oracle 游标
- alsa声卡学习笔记
- 在SourceInsight中加入对.S文件的支持
- ARM Architecture C 语言寻址解析—— 从U-Boot relocation所展开的探索(三)
- 内存对齐经典分析
- 搜索--深度优先搜索
- Jquery主要控件(textbox,button,lable,radio,checkbox,selected)的取值、赋值
- 吃菜的讲究
- oracle 数据库中 drop table 与purge
- IOCP