Linux技术芯
用技术改变生活
展开
-
Linux ALSA驱动框架(一)--ALSA架构简介--声卡的创建
(1)ALSA简介(1)Native ALSA Application:tinyplay/tinycap/tinymix,这些用户程序直接调用 alsa 用户库接口来实现放音、录音、控制ALSA Library API:alsa 用户库接口,常见有 tinyalsa、alsa-libALSA CORE:alsa 核心层,向上提供逻辑设备(PCM/CTL/MIDI/TIMER/…)系统调用,向下驱动...原创 2018-05-29 06:48:35 · 48352 阅读 · 2 评论 -
ALSA声卡驱动中的DAPM详解之三:如何定义各种widget
1.定义widget codec域widget的定义 platform域widget的定义 音频路径path域widget的定义 音频数据流stream域widget的定义2.定义dapm kcontrol3.建立widget和routeDAPM框架中几个重要的数据结构:snd_soc_dapm_widget,snd_soc_dapm_path,snd_soc_dapm_r...转载 2018-11-27 16:55:38 · 4185 阅读 · 0 评论 -
ALSA声卡驱动中的DAPM详解之二:widget-具备路径和电源管理信息的kcontrol
上一篇文章中,我们介绍了音频驱动中对基本控制单元的封装:kcontrol。利用kcontrol,我们可以完成对音频系统中的mixer,mux,音量控制,音效控制,以及各种开关量的控制,通过对各种kcontrol的控制,使得音频硬件能够按照我们预想的结果进行工作。同时我们可以看到,kcontrol还是有以下几点不足:(1)只能描述自身,无法描述各个kcontrol之间的连接关系;(2)没有相应...转载 2018-11-27 16:50:57 · 870 阅读 · 0 评论 -
ALSA声卡驱动中的DAPM详解之一:kcontrol
DAPM是Dynamic Audio Power Management的缩写,直译过来就是动态音频电源管理的意思,DAPM是为了使基于linux的移动设备上的音频子系统,在任何时候都工作在最小功耗状态下。DAPM对用户空间的应用程序来说是透明的,所有与电源相关的开关都在ASoc core中完成。用户空间的应用程序无需对代码做出修改,也无需重新编译,DAPM根据当前激活的音频流(playback/c...转载 2018-11-27 16:42:29 · 2484 阅读 · 0 评论 -
alsa-lib应用层接口分析
ALSA lib接口调用简介 ALSA逻辑,在我当前看来,总共有两条线:1、录放音流控,2、amixer cset控件。 录放音流控(自定义名称),相当于操作OSS的/dev/dsp设备,可以设置三大参数等,并且启动录放音。这里,aplay,mplayer等播放器,调用ALSA lib中的snd_pcm_***等,标准接口函数,再通过该函数,操作/...原创 2018-06-26 16:48:20 · 9454 阅读 · 8 评论 -
Linux ALSA驱动框架(六)--ASoC架构中的Platfrom
(1) Platform驱动在ASoC中的作用 ASoC被分为Machine,Platform和Codec三大部件,Platform驱动的主要作用是完成音频数据的管理,最终通过CPU的数字音频接口(DAI)把音频数据传送给Codec进行处理,最终由Codec输出驱动耳机或者是喇叭的音信信号。在具体实现上,ASoC有把Platform驱动分为两个部分:snd_soc_platform_driver和...原创 2018-05-31 08:01:04 · 1608 阅读 · 0 评论 -
Linux ALSA驱动框架(六)--ASoC架构中的Codec
(1)Codec简介在移动设备中,Codec的作用可以归结为4种,分别是:(1)对PCM等信号进行D/A转换,把数字的音频信号转换为模拟信号(2)对Mic、Line_in或者其他输入源的模拟信号进行A/D转换,把模拟的声音信号转变CPU能够处理的数字信号(3)对音频通路进行控制,比如播放音乐,收听调频收音机,又或者接听电话时,音频信号在codec内的流通路线是不一样的(4)对音频信号做出相应的处理...原创 2018-05-31 07:52:54 · 1279 阅读 · 0 评论 -
Linux ALSA驱动框架(五)--ASoC架构中的Machine
(1)ASoC被分为Machine、Platform和Codec三大部分,其中的Machine驱动负责Platform和Codec之间的耦合以及部分和设备或板子特定的代码,Machine驱动负责处理机器特有的一些控件和音频事件(例如,当播放音频时,需要先行打开一个放大器);单独的Platform和Codec驱动是不能工作的,它必须由Machine驱动把它们结合在一起才能完成整个设备的音频处理工作。...原创 2018-05-29 07:08:32 · 2117 阅读 · 0 评论 -
Linux ALSA驱动框架(四)--移动设备中的ALSA(ASoC)
(1)ASoC的由来ASoC--ALSA System on Chip ,是建立在标准ALSA驱动层上,为了更好地支持嵌入式处理器和移动设备中的音频Codec的一套软件体系。Codec驱动与SoC CPU的底层耦合过于紧密.利于在多样化的平台/机器上移植复用,方便 codec 与 SoC 通过 PCM/I2S 总线建立链接(2)硬件架构软件领域里的抽象和重用一样,嵌入式设备的音频系统可以被划分为板...原创 2018-05-29 07:04:37 · 2424 阅读 · 0 评论 -
Linux ALSA驱动框架(三)--Control设备的创建
(1)Control接口Control接口主要让用户空间的应用程序(alsa-lib)可以访问和控制音频codec芯片中的多路开关,滑动控件等。对于Mixer(混音)来说,Control接口显得尤为重要,所有的mixer工作都是通过control接口的API来实现的。struct snd_kcontrol_new { snd_ctl_elem_iface_t iface; /* interf...原创 2018-05-29 07:01:39 · 2300 阅读 · 0 评论 -
Linux ALSA驱动框架(二)--PCM设备的创建
(3)PCM设备的创建(1)PCM是什么 PCM是英文Pulse-code modulation的缩写,中文译名是脉冲编码调制.我们知道在现实生活中,人耳听到的声音是模拟信号,PCM就是要把声音从模拟转换成数字信号的一种技术,他的原理简单地说就是利用一个固定的频率对模拟信号进行采样,采样后的信号在波形上看就像一串连续的幅值不一的脉冲,把这些脉冲的幅值按一定的精度进行量化,这些量化后的数值被连续地输...原创 2018-05-29 06:57:34 · 4289 阅读 · 0 评论 -
ALSA声卡驱动中的DAPM详解之四:在驱动程序中初始化并注册widget和route
前几篇文章我们从dapm的数据结构入手,了解了代表音频控件的widget,代表连接路径的route以及用于连接两个widget的path。之前都是一些概念的讲解以及对数据结构中各个字段的说明,从本章开始,我们要从代码入手,分析dapm的详细工作原理:1.如何注册widget2.如何连接两个widget3.一个widget的状态裱画如何传递到整个音频路径中(1)dapm context...转载 2018-11-27 17:00:01 · 971 阅读 · 0 评论