
ALSA
ricks_wu
学而时习之,不亦说乎;有朋自远方来,不亦乐乎;人不知而不搵,不亦君子乎
展开
-
音频采样概念
数码音频系统是通过将声波波形转换成一连串的二进制数据来再现原始声音的,实现这个步骤使用的设备是模/数转换器(A/D)它以每秒上万次的速率对声波进行采样,每一次采样都记录下了原始模拟声波在某一时刻的状态,称之为样本。将一串的样本连接起来,就可以描述一段声波了,把每一秒钟所采样的数目称为采样频率或采率,单位为HZ(赫兹)。采样频率越高所能描述的声波频率就越高。采样率决定声音频率的范围(相当于音调),可转载 2013-04-24 17:38:13 · 763 阅读 · 0 评论 -
Linux ALSA声卡驱动之七:ASoC架构中的Codec
1. Codec简介 在移动设备中,Codec的作用可以归结为4种,分别是: 对PCM等信号进行D/A转换,把数字的音频信号转换为模拟信号对Mic、Linein或者其他输入源的模拟信号进行A/D转换,把模拟的声音信号转变CPU能够处理的数字信号对音频通路进行控制,比如播放音乐,收听调频收音机,又或者接听电话时,音频信号在codec内的流通路线是不一样的对音频信号做出相应的处理转载 2013-04-27 15:17:31 · 485 阅读 · 0 评论 -
Linux ALSA声卡驱动之六:ASoC架构中的Machine
前面一节的内容我们提到,ASoC被分为Machine、Platform和Codec三大部分,其中的Machine驱动负责Platform和Codec之间的耦合以及部分和设备或板子特定的代码,再次引用上一节的内容:Machine驱动负责处理机器特有的一些控件和音频事件(例如,当播放音频时,需要先行打开一个放大器);单独的Platform和Codec驱动是不能工作的,它必须由Machine驱动把它们结转载 2013-04-27 15:16:48 · 477 阅读 · 0 评论 -
Linux ALSA声卡驱动之八:ASoC架构中的Platform
1. Platform驱动在ASoC中的作用 前面几章内容已经说过,ASoC被分为Machine,Platform和Codec三大部件,Platform驱动的主要作用是完成音频数据的管理,最终通过CPU的数字音频接口(DAI)把音频数据传送给Codec进行处理,最终由Codec输出驱动耳机或者是喇叭的音信信号。在具体实现上,ASoC有把Platform驱动分为两个部分:snd_soc_pl转载 2013-04-27 15:18:11 · 612 阅读 · 0 评论 -
Linux ALSA声卡驱动之一:ALSA架构简介
声明:本博内容均由http://blog.youkuaiyun.com/droidphone原创,转载请注明出处,谢谢! 一. 概述 ALSA是Advanced Linux Sound Architecture 的缩写,目前已经成为了linux的主流音频体系结构,想了解更多的关于ALSA的这一开源项目的信息和知识,请查看以下网址:http://www.alsa-project转载 2013-04-27 15:20:31 · 465 阅读 · 0 评论 -
Linux ALSA声卡驱动之二:声卡的创建
1. struct snd_card 1.1. snd_card是什么 snd_card可以说是整个ALSA音频驱动最顶层的一个结构,整个声卡的软件逻辑结构开始于该结构,几乎所有与声音相关的逻辑设备都是在snd_card的管理之下,声卡驱动的第一个动作通常就是创建一个snd_card结构体。正因为如此,本节中,我们也从 struct cnd_card开始吧。转载 2013-04-27 15:21:12 · 537 阅读 · 0 评论 -
Linux ALSA声卡驱动之三:PCM设备的创建
1. PCM是什么 PCM是英文Pulse-code modulation的缩写,中文译名是脉冲编码调制。我们知道在现实生活中,人耳听到的声音是模拟信号,PCM就是要把声音从模拟转换成数字信号的一种技术,他的原理简单地说就是利用一个固定的频率对模拟信号进行采样,采样后的信号在波形上看就像一串连续的幅值不一的脉冲,把这些脉冲的幅值按一定的精度进行量化,这些量化后的数值被连续地输出、传输、处转载 2013-04-27 15:21:55 · 621 阅读 · 0 评论 -
Linux ALSA声卡驱动之四:Control设备的创建
Control接口 Control接口主要让用户空间的应用程序(alsa-lib)可以访问和控制音频codec芯片中的多路开关,滑动控件等。对于Mixer(混音)来说,Control接口显得尤为重要,从ALSA 0.9.x版本开始,所有的mixer工作都是通过control接口的API来实现的。 ALSA已经为AC97定义了完整的控制接口模型,如果你的Codec芯片只转载 2013-04-27 15:22:31 · 542 阅读 · 0 评论 -
alsa 音频路径的问题:
alsa 音频路径的问题: 在sound/soc/codecs目录中有很多音频codec的codec驱动,我使用的是wm9713,AP是s3c6410;这里个驱动文件中定义了很多widget和control,alsa在playback或record的时候,sound/soc/soc-dapm.c中的dapm_power_widgets函数会根据“配置情况”打开相应的widget,搭建一个完整的音转载 2013-04-30 17:28:05 · 901 阅读 · 0 评论 -
DAPM之一:概述
dapm的简单描述:动态音频电源管理(DAPM)用来使得任何时候便携Linux设备都最小化音频子系统的功耗,而且它独立于其它内核电源管理,容易与其他电源管理系统模块共存。dapm的切换根据设备内的音频流活动(捕获/回放)和混音器设置来决定的。 理解以上内容非常重要,dapm的目的是任何时候都最小化音频系统的功耗,触发依据是音频流事件或混音器设置。在篇章“dapm机制深入分析”中,基本就围绕这两点转载 2013-04-24 20:15:55 · 667 阅读 · 0 评论 -
alsa驱动分析之一
Alsa 驱动分析 Guide Revision History Date Issue Description Author First draft Wylhistory 目录 1. Abstr转载 2013-05-10 14:44:23 · 573 阅读 · 0 评论 -
Linux ALSA声卡驱动之五:移动设备中的ALSA(ASoC)
目录(?)[-] ASoC的由来硬件架构软件架构数据结构版内核对ASoC的改进 1. ASoC的由来 ASoC--ALSA System on Chip ,是建立在标准ALSA驱动层上,为了更好地支持嵌入式处理器和移动设备中的音频Codec的一套软件体系。在ASoc出现之前,内核对于SoC中的音频已经有部分的支持,不过会有一些局限性: Codec驱动与SoC转载 2013-04-27 15:15:35 · 422 阅读 · 0 评论 -
简述amixer及其用法
最近接触到amixer,大概明白了其意思和具体用法,简述如下。 alsamixer是Linux 音频架构ALSA中的Alsa工具的其中一个,用于配置音频的各个参数。 alsamixer是基于文本下的图形界面的,可以通过键盘的上下键,左右键等,很方便地设置需要的音量,开关某个switch(开关)等等操作。 amixer,是alsamixer的文本模式,即命令行模式,需要用amixer命令的形式转载 2013-04-27 13:40:10 · 592 阅读 · 0 评论 -
ALSA的ioctl - hwdep
hwdep模块简述 字符设备驱动中,ioctl是一个很常见的IO设备操作函数,可以自定义cmd命令字并实现对应的设备IO控制。 音频设备的控制有所不同:驱动层大部分控制操作定义各种snd_kcontrol_new,然后注册到SNDRV_DEV_CONTROL模块中(sound\core\control.c),详见snd_kcontrol探究;而上层调用alsa-lib的sn转载 2013-04-25 11:47:31 · 805 阅读 · 0 评论 -
ALSA之CODEC分析
ALSA: Advanced Linux Sound Architecture,它包括内核驱动集合、API库和工具。用户层程序直接调用libsound的API库,不需要打开设备等操作,因此编程者不需要了解底层细节。 这里不分析ALSA的核心代码core,也不阐述如何在用户层进行声卡编程,仅仅简要介绍在ALSA的架构上添加一个声卡驱动,即上图中的Sound Driver。其实文档《wirte转载 2013-04-24 19:55:25 · 647 阅读 · 0 评论 -
snd_kcontrol探究
control控制接口 控制接口对于许多开关(switch)和调节器(slider)应用广泛,它能被用户空间存取,从而读写CODEC相关寄存器。control的主要用于mixer。它用snd_kcontrol_new结构体描述。 snd_kcontrol_new [cpp] view plaincopy转载 2013-04-24 20:13:24 · 521 阅读 · 0 评论 -
snd_kcontrol_new名称中的SOURCE字段
前些日子写了一篇snd_kcontrol探究,该文主要从内核源码出发简单讲述一下kcontrol接口的始末。这几天因为要在Android里面添加一些音频控制接口,配合alsa_amixer scontents分析,对此有了更深的体会,记录于此。因为这方面的资料实在太少,很多东西都是自我理解的,如有错误请见谅并指出。 name字段是名称标识,这个字段非常重要,因为kcontrol的作用由名称转载 2013-04-24 20:14:26 · 520 阅读 · 0 评论 -
关于ALSA的小结
这一年来的一个重要工作是音频设备驱动方面,如驱动开发、调试debug、性能调优、音频路由、回声消除等。除此之外,熟悉了一下alsa-lib接口,Android音频系统,包括设备抽象层和音频策略。 遗憾的是一直没有什么机会接触蓝牙设备的集成和开发,可预知的未来无线设备会极大地普及。还有就是ffmpeg,以前经常用它来做一些兴致突来能力而及的小工具,年初时计划进一步在它的基础上学习H转载 2013-04-25 12:28:22 · 570 阅读 · 0 评论 -
ALSA SOC在Linux3.1上的一些改进
2012已经到来,无论这个世界是否行将毁灭,在那之前的日子还得要继续。 Android迈进了4.0,相应的Linux内核也进入了3.x时代。之后的一个工作估计要将2.6.32的驱动移植到3.x上面来。因此趁现在有空,看看alsa在这方面有什么改动。 总的来说,架构大的改动是不大可能的。codec中几个关键结构体没有大的变化,如snd_soc_dai_ops、snd_soc_dai_dr转载 2013-04-25 12:30:38 · 513 阅读 · 0 评论 -
DAPM之二:audio paths与dapm kcontrol
在用alsa_amixer controls时,除了我们之前提到的snd_soc_add_controls添加的kcontrols外,还有一些多出来的controls。其实多出来的那些都是属于dapm kcontrol,主要用于切换音频路径。 一、AUDIO PATHS OVERVIEW 以标准内核2.6.32的wm8900 codec转载 2013-04-24 20:16:40 · 488 阅读 · 0 评论 -
DAPM之三:audio paths与asound.conf
其实asound.conf真跟dapm没多大关系,之所以把它也纳入dapm系列之一,是为了考虑到知识的连贯性。在DAPM之二:AUDIO PATHS与dapm kcontrol>提到:通过配置好asound.conf,上层则可打开asound.conf中定义的虚拟设备,而自动选择相应的音频通道。这是asound.conf很重要的一个作用,从这方面来说,并不是跟dapm完全没关系。转载 2013-04-24 21:02:49 · 473 阅读 · 0 评论 -
DAPM之四:dapm widget events
这是一个坑。。。转载 2013-04-24 21:19:27 · 530 阅读 · 0 评论 -
DAPM之五:dapm机制深入分析(上)
哲学里有三个终极命题:你是谁?从何处来?到何处去?而对于dapm机制,我们可以这样提问:dapm是什么,起到何作用?dapm是如何建立的?dapm又是如何触发的?下面会就这三个问题进行分析。 首先是dapm是什么?这在DAPM之一:概述中提及了,就是音频电源动态管理。相信电源管理大家都不会陌生。dapm设计的目的就是只有需要时才打开必要的部件(widget),不需要时则关闭部件,达到省电的目转载 2013-04-24 21:56:40 · 581 阅读 · 0 评论 -
DAPM之六:dapm机制深入分析(下)
dapm触发时的入口函数是dapm_power_widgets,稍后详细分析这个函数,这里仅说其作用:检查每个dapm widget,如果该widget处在一条complete paths中,则power up这个widget,否则power down。 dapm触发 1、dapm widgets建立时,详见snd_soc_dapm_new_widgets; 2、上层通过转载 2013-04-25 10:59:47 · 526 阅读 · 0 评论 -
alsa驱动分析之二
alsa驱动分析(2.6.21内核)之二 4. 通常的使用流程的分析 通常使用 alsalib 来播放声音包括以下几个步骤: 1, open, 这个和 oss 相同,对应于 alsa 就是 snd_pcm_open ; 2, param 设置,这个就是 snd_pcm_hw_params; 3, 上层的 alsa 在设置 param转载 2013-05-10 14:45:58 · 715 阅读 · 0 评论