关闭

alsa声卡学习笔记

1226人阅读 评论(0) 收藏 举报

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




0
0
查看评论

ALSA声卡11_从零编写之调试——学习笔记

1、调试 (1)把程序拷贝到服务器上进行编译 (2)把程序放到内核上面去 重新配置内核,吧原来的声卡驱动程序去掉 a. 修改语法错误 11th_myalsa b. 配置内核去掉原来的声卡驱动 -> Device Drivers   -> Sound car...
  • qingkongyeyue
  • qingkongyeyue
  • 2017-01-21 18:15
  • 444

用ALSA驱动声卡流程详解

用ALSA驱动声卡流程详解 作者:北南南北来自:LinuxSir.Org 提要:目前大多数发行版都已经支持主流声卡,声卡的驱动无非是用ALSA;本文主要讲述声卡驱动的流程;目的是帮助遇到声卡的驱动问题的弟兄来弄清楚解决问题的流程;只要流程明白了,解决问题是没有太大的困难;一、什么是ALSA ;Adv...
  • SuperLinux
  • SuperLinux
  • 2005-11-02 18:45
  • 3170

ALSA声卡09_从零编写之参数设置_学习笔记

1、参数设置分析 (1)open: soc_pcm_open 依次调用cpu_dai, dma, codec_dai, machine的open或startup函数 只在dma的open函数里添加参数相关的代码 (2)SNDRV_PCM_IOCTL_HW_PARAMS: soc...
  • qingkongyeyue
  • qingkongyeyue
  • 2017-01-20 20:15
  • 501

Linux下声卡之解决方案-ALSA

ALSA,即Advanced Linux Sound Architecture。它是一款优秀的声卡驱动,能驱动大部分的声卡,而且支持多音频流,支持多声卡等等。使我们能在linux下享受到美妙的音乐。1.确认有无内核源码包到 /usr/src目录下看看是否有一个名字类似linux-2.x.x-x的目录...
  • zxhong
  • zxhong
  • 2004-08-04 10:08
  • 2276

ALSA声卡16_编写ALSA声卡应用程序_学习笔记

1、体验 (1)ALSA声卡使用体验:使用arecord录音,使用aplay播放,在Alsa-utils里面) 准备: cd linux-3.4.2 patch -p1 linux-3.4.2_alsa_wm8976_uda1341_jz2440_mini2440_tq2440.patch ...
  • qingkongyeyue
  • qingkongyeyue
  • 2017-01-22 20:09
  • 405

[RK3288][Android6.0] 调试笔记 --- 如何确认声卡是否注册成功

Platform: RK3288 OS: Android 6.0 Kernel: 3.10.92方法一: root@rk3288:/proc/asound/card0 # cat /proc/asound/cards 0 [RKRT5631 ]: RK_RT5631 ...
  • kris_fei
  • kris_fei
  • 2017-10-31 09:42
  • 534

树莓派(linux)声卡操作

调节音量 alsamixer 命令行执行alsamixer 可以设置声卡音量,用上下左右键就可以操作了 如果有多个声卡,按F6可以设置其他声卡的音量设置默认声卡 1.查看已有的声卡 执行alsamixer,进入界面后,按F6,会列出所有声卡及序号 2.在/etc/下创建文件 asound...
  • qf0129
  • qf0129
  • 2016-10-15 17:36
  • 2185

centos6.4下安装alsa声卡的若干问题及解决方案

1.去官网下载: alsa-driver-1.0.25.tar.bz2; alsa-lib-1.0.27.2.tar.bz2; alsa-utils-1.0.27.2.tar.bz2; (解压命令:tar -jxvf xxxxx.tar.bz2) 2.分别进入解压出来的文件夹;依次执行 ...
  • KTs_3
  • KTs_3
  • 2013-12-24 15:33
  • 3072

Linux下ALSA声卡编程

一. 介绍      ALSA 标准是一个先进的linux声音体系。它包含内核驱动集合,API库和工具对Linux声音进行支持。ALSA 包含一系列内核驱动对不同的声卡进行支持,还提供了libasound的API库。用这些进行写程序不需要打开设备等操...
  • shenbin1430
  • shenbin1430
  • 2009-10-21 13:48
  • 2216

ALSA声卡驱动创建过程

参考linux内核:3.4.99 一.概述 ALSA是Advanced Linux Sound Architecture 的缩写,目前已经成为了linux的主流音频体系结构。在内核设备驱动层,ALSA提供了alsa-driver,同时在应用层,ALSA为我们提供了alsa-lib,应用程序只要调...
  • L_Backkom
  • L_Backkom
  • 2014-12-02 15:39
  • 774
    个人资料
    • 访问:125090次
    • 积分:1780
    • 等级:
    • 排名:千里之外
    • 原创:37篇
    • 转载:103篇
    • 译文:0篇
    • 评论:6条
    文章分类