Linux-Android Audio
文章平均质量分 83
zhuxp1
各种打杂,各种学习
展开
-
DAPM之一:概述
http://blog.csdn.net/azloong/article/details/6331884DAPM--Dynamic Audio Power Management,对应结构体是snd_soc_dapm_widget和snd_soc_dapm_route,对应的操作函数是snd_soc_dapm_new_controls()、snd_soc_dapm_add_routes(转载 2015-12-28 16:45:37 · 556 阅读 · 0 评论 -
Linux ALSA声卡驱动之七:ASoC架构中的Codec
http://blog.csdn.net/droidphone/article/details/72838331. Codec简介在移动设备中,Codec的作用可以归结为4种,分别是:对PCM等信号进行D/A转换,把数字的音频信号转换为模拟信号对Mic、Linein或者其他输入源的模拟信号进行A/D转换,把模拟的声音信号转变CPU能够处理的数字信号对音频通路进行控制,比如转载 2015-12-24 17:06:09 · 313 阅读 · 0 评论 -
ALSA声卡驱动中的DAPM详解之一:kcontrol
http://blog.csdn.net/droidphone/article/details/12793293DAPM是Dynamic Audio Power Management的缩写,直译过来就是动态音频电源管理的意思,DAPM是为了使基于linux的移动设备上的音频子系统,在任何时候都工作在最小功耗状态下。DAPM对用户空间的应用程序来说是透明的,所有与电源相关的开关都在ASoc转载 2015-12-24 17:09:54 · 495 阅读 · 0 评论 -
ALSA声卡驱动中的DAPM详解之二:widget-具备路径和电源管理信息的kcontrol
http://blog.csdn.net/droidphone/article/details/12906139上一篇文章中,我们介绍了音频驱动中对基本控制单元的封装:kcontrol。利用kcontrol,我们可以完成对音频系统中的mixer,mux,音量控制,音效控制,以及各种开关量的控制,通过对各种kcontrol的控制,使得音频硬件能够按照我们预想的结果进行工作。同时我们可以看到,转载 2015-12-24 17:11:07 · 363 阅读 · 0 评论 -
ALSA声卡驱动中的DAPM详解之三:如何定义各种widget
http://blog.csdn.net/droidphone/article/details/12978287上一节中,介绍了DAPM框架中几个重要的数据结构:snd_soc_dapm_widget,snd_soc_dapm_path,snd_soc_dapm_route。其中snd_soc_dapm_path无需我们自己定义,它会在注册snd_soc_dapm_route时动态地生成,转载 2015-12-24 17:12:25 · 479 阅读 · 0 评论 -
ALSA声卡驱动中的DAPM详解之四:在驱动程序中初始化并注册widget和route
前几篇文章我们从dapm的数据结构入手,了解了代表音频控件的widget,代表连接路径的route以及用于连接两个widget的path。之前都是一些概念的讲解以及对数据结构中各个字段的说明,从本章开始,我们要从代码入手,分析dapm的详细工作原理:如何注册widget如何连接两个widget一个widget的状态裱画如何传递到整个音频路径中/*********************转载 2015-12-24 17:14:04 · 621 阅读 · 1 评论 -
ALSA声卡驱动中的DAPM详解之五:建立widget之间的连接关系
前面我们主要着重于codec、platform、machine驱动程序中如何使用和建立dapm所需要的widget,route,这些是音频驱动开发人员必须要了解的内容,经过前几章的介绍,我们应该知道如何在alsa音频驱动的3大部分(codec、platform、machine)中,按照所使用的音频硬件结构,定义出相应的widget,kcontrol,以及必要的音频路径,而在本章中,我们将会深入da转载 2015-12-24 17:15:13 · 709 阅读 · 0 评论 -
ALSA声卡驱动中的DAPM详解之七:dapm事件机制(dapm event)
前面的六篇文章,我们已经讨论了dapm关于动态电源管理的有关知识,包括widget的创建和初始化,widget之间的连接以及widget的上下电顺序等等。本章我们准备讨论dapm框架中的另一个机制:事件机制。通过dapm事件机制,widget可以对它所关心的dapm事件做出反应,这种机制对于扩充widget的能力非常有用,例如,对于那些位于codec之外的widget,好像喇叭功放、外部的前置放大转载 2015-12-24 17:16:51 · 645 阅读 · 0 评论 -
PCM data flow - part 1: Overview
http://blog.csdn.net/azloong/article/details/14105023Kernel - 3.4.5SoC - Samsung exynosCODEC - WM8994Machine - goni_wm8994Userspace - tinyalsaALSA/ASoC驱动有如下三部转载 2016-03-22 10:10:47 · 654 阅读 · 0 评论 -
PCM data flow - part 2: ASoC data structure
http://blog.csdn.net/azloong/article/details/17252551ASoC:ALSA System on Chip,是建立在标准ALSA驱动之上,为了更好支持嵌入式系统和移动设备中的音频codec的一套软件体系,它依赖于标准ALSA驱动框架。内核文档Documentation/alsa/soc/overview.txt中详细介绍了ASoC的设计初衷,转载 2016-03-22 10:12:59 · 835 阅读 · 0 评论 -
PCM data flow - part 3: ASoC codec driver
http://blog.csdn.net/azloong/article/details/17252843上一章提到codec_drv的几个组成部分,下面逐一介绍,基本是以内核文档Documentation/sound/alsa/soc/codec.txt中的内容为脉络来分析的。codec的作用,在概述中有说明,本章主要罗列下codec driver中重要的数据结构及注册流程。转载 2016-03-22 16:31:44 · 1370 阅读 · 0 评论 -
PCM data flow - part 4: ASoC platform driver
http://blog.csdn.net/azloong/article/details/17317829概述中提到音频Platform驱动主要作用是音频数据的传输,这里又细分为两步:· 把音频数据从dma buffer通过dma操作搬运到cpu_dai FIFO,这部分驱动用snd_soc_platform_driver描述,后面分析用pcm_dma指代它。转载 2016-03-23 13:36:41 · 844 阅读 · 0 评论 -
PCM data flow - part 5: ASoC machine driver
http://blog.csdn.net/azloong/article/details/17586081章节ASoC codec driver和ASoC platform driver介绍了codec、platform驱动,但仅有codec、platform驱动是不能工作的,需要一个角色把codec、codec_dai、cpu_dai、platform给链结起来才能构成一个完整的转载 2016-03-23 13:39:38 · 713 阅读 · 0 评论 -
PCM data flow - part 6: Frames & Periods
http://blog.csdn.net/azloong/article/details/17614859前面分析了codec、platform、machine驱动的各个组成部分及其注册过程,这三者都是硬件设备相关的,大家应该对音频物理链路有了初步的认知。往后章节的内容主要集中在pcm native,这是pcm数据流的中间层:· 往上是与用户态接口的交互,转载 2016-03-23 15:32:40 · 1146 阅读 · 0 评论 -
PCM data flow - part 7: 声卡和PCM设备的建立过程
http://blog.csdn.net/azloong/article/details/44181421前面几章分析了Codec、Platform、Machine驱动的组成部分及其注册过程,这三者都是物理设备相关的,大家应该对音频物理链路有了一定的认知。接着分析音频驱动的中间层,由于这些并不是真正的物理设备,故我们称之为逻辑设备。PCM逻辑设备,我们又习惯称之为PCM中间转载 2016-03-23 15:35:13 · 1233 阅读 · 0 评论 -
XRUN Debug
This page describes the build-in ALSA driver tool to debug PCM ring buffer positions./proc/asound/card#/pcm0p/xrun_debugReplace '#' with your card number (usually 0). This proc file can enable var转载 2016-05-06 17:20:41 · 920 阅读 · 0 评论 -
Linux ALSA声卡驱动之六:ASoC架构中的Machine
http://blog.csdn.net/droidphone/article/details/7231605前面一节的内容我们提到,ASoC被分为Machine、Platform和Codec三大部分,其中的Machine驱动负责Platform和Codec之间的耦合以及部分和设备或板子特定的代码,再次引用上一节的内容:Machine驱动负责处理机器特有的一些控件和音频事件(例如,当播转载 2015-12-24 17:04:38 · 361 阅读 · 0 评论 -
Linux ALSA声卡驱动之五:移动设备中的ALSA(ASoC)
http://blog.csdn.net/DroidPhone/article/details/71654821. ASoC的由来ASoC--ALSA System on Chip ,是建立在标准ALSA驱动层上,为了更好地支持嵌入式处理器和移动设备中的音频Codec的一套软件体系。在ASoc出现之前,内核对于SoC中的音频已经有部分的支持,不过会有一些局限性:转载 2015-12-24 17:04:04 · 285 阅读 · 0 评论 -
DAPM之二:audio paths与dapm kcontrol
http://blog.csdn.net/azloong/article/details/6334922在用alsa_amixer controls时,除了我们之前提到的snd_soc_add_controls添加的kcontrols外,还有一些多出来的controls。其实多出来的那些都是属于dapm kcontrol,主要用于切换音频路径。一、AUDIO PAT转载 2015-12-28 16:48:31 · 645 阅读 · 0 评论 -
DPCM (Dynamic PCM)系列之一:概述
http://blog.csdn.net/azloong/article/details/50162241Dynamic PCM =========== 1. Description ============== Dynamic PCM allows an ALSA PCM device to digitally route its PCM转载 2015-12-28 17:47:46 · 6646 阅读 · 1 评论 -
ASLA Codec架构
1. Codec简介在移动设备中,Codec的作用可以归结为4种,分别是:对PCM等信号进行D/A转换,把数字的音频信号转换为模拟信号对Mic、Linein或者其他输入源的模拟信号进行A/D转换,把模拟的声音信号转变CPU能够处理的数字信号对音频通路进行控制,比如播放音乐,收听调频收音机,又或者接听电话时,音频信号在codec内的流通路线是不一样的对音频信号做出相应的处理转载 2015-11-06 19:27:02 · 977 阅读 · 0 评论 -
Android音频系统之音频框架
http://blog.csdn.net/xuesen_lin/article/details/87964921.1 音频框架转载请注明,From LXS, http://blog.csdn.net/uiop78uiop78/article/details/8796492Android的音频系统在很长一段时间内都是外界诟病的焦点。的确,早期的Android系统在音频处理上相转载 2015-12-16 10:45:19 · 800 阅读 · 0 评论 -
Android音频系统之AudioFlinger(一)
1.1 AudioFlinger在上面的框架图中,我们可以看到AudioFlinger(下面简称AF)是整个音频系统的核心与难点。作为Android系统中的音频中枢,它同时也是一个系统服务,启到承上(为上层提供访问接口)启下(通过HAL来管理音频设备)的作用。只有理解了AudioFlinger,才能以此为基础更好地深入到其它模块,因而我们把它放在前面进行分析。 http://blog.cs转载 2015-12-16 10:48:41 · 961 阅读 · 2 评论 -
Android音频系统之AudioFlinger(二)
1.1.1 音频设备的管理http://blog.csdn.net/xuesen_lin/article/details/8805076虽然AudioFlinger实体已经成功创建并初始化,但到目前为止它还是一块静态的内存空间,没有涉及到具体的工作。从职能分布上来讲,AudioPolicyService是策略的制定者,比如什么时候打开音频接口设备、某种Stream类型的音频对应什么转载 2015-12-16 10:51:34 · 961 阅读 · 0 评论 -
Android音频系统之AudioFlinger(三)
1.1.1 PlaybackThread的循环主体http://blog.csdn.net/xuesen_lin/article/details/8805091当一个PlaybackThread进入主循环后(threadLoop),音频事务就正式开启了。仔细观察的话,我们会发现这个循环中会不断地调用以“threadLoop_”开头的若干接口,比如threadLoop_mix、threa转载 2015-12-16 13:55:09 · 550 阅读 · 0 评论 -
Android音频系统之AudioFlinger(四)
http://blog.csdn.net/xuesen_lin/article/details/88050961.1.1 AudioMixer每一个MixerThread都有一个唯一对应的AudioMixer(在MixerThread中用mAudioMixer表示),它的作用如其名所表示的,就是为了完成音频的混音操作。 图 13‑14 Mix转载 2015-12-16 14:16:23 · 461 阅读 · 0 评论 -
Android音频系统之AudioPolicyService
http://blog.csdn.net/xuesen_lin/article/details/88051081.1 AudioPolicy Service在AudioFlinger小节,我们反复强调它只是策略的执行者,而AudioPolicyService则是策略的制定者。这种分离方式有效地降低了整个系统的藕合性,而且为各个模块独立扩展功能提供了保障。1.1.1 Au转载 2015-12-16 14:31:22 · 570 阅读 · 0 评论 -
Android音频系统之AudioTrack(二)
http://blog.csdn.net/xuesen_lin/article/details/88051821.1.1 AudioPolicyService的路由实现我们在AudioPolicyService小节曾将其比作是一个“路由器”,不过还没有深入解析它是如何完成路由选择的。这部分的功能与使用者——AudioTrack有很大关联,所以我们特别将它的实现原理剖析放在这里,以使转载 2015-12-16 16:03:03 · 370 阅读 · 0 评论 -
Android音频系统之AudioTrack(一)
http://blog.csdn.net/xuesen_lin/article/details/88051681.1 AudioTrack1.1.1 AudioTrack应用实例对于Android应用开发人员来讲,音频回放最熟悉的莫过于MediaPlayer,而AudioTrack相信用的人相对会少很多。这是因为MediaPlayer提供了更完整的封装和状态控制,使得我们用很少转载 2015-12-16 16:02:11 · 561 阅读 · 0 评论 -
AudioPolicyManagerBase & AudioFlinger 的Inteface(hw module)初始化
AudioFlinger通过loadHwModule加载audio的各个interface(也叫hw module),各个interface就是audio的HAL。Audioflinger不会主动调用 loadHwModule,而是由audiopolicy发起的,AudioFlinger是个执行机构。在AudioPolicyManagerBase的构造函数中,能找到loadAudioP原创 2015-12-18 17:13:30 · 1413 阅读 · 1 评论 -
Linux ALSA声卡驱动之一:ALSA架构简介
http://blog.csdn.net/droidphone/article/details/6271122一. 概述 ALSA是Advanced Linux Sound Architecture 的缩写,目前已经成为了linux的主流音频体系结构,想了解更多的关于ALSA的这一开源项目的信息和知识,请查看以下网址:http://www.alsa-project.org/转载 2015-12-24 16:57:59 · 337 阅读 · 0 评论 -
Linux ALSA声卡驱动之二:声卡的创建
http://blog.csdn.net/droidphone/article/details/62897121. struct snd_card 1.1. snd_card是什么snd_card可以说是整个ALSA音频驱动最顶层的一个结构,整个声卡的软件逻辑结构开始于该结构,几乎所有与声音相关的逻辑设备都是在snd_card的管理之下,声卡驱动的第一个动作通常就是创建一个转载 2015-12-24 16:59:17 · 341 阅读 · 0 评论 -
Linux ALSA声卡驱动之三:PCM设备的创建
http://blog.csdn.net/droidphone/article/details/63080061. PCM是什么PCM是英文Pulse-code modulation的缩写,中文译名是脉冲编码调制。我们知道在现实生活中,人耳听到的声音是模拟信号,PCM就是要把声音从模拟转换成数字信号的一种技术,他的原理简单地说就是利用一个固定的频率对模拟信号进行采样,采转载 2015-12-24 17:01:05 · 319 阅读 · 0 评论 -
深入剖析Android音频之AudioTrack
播放声音可以用MediaPlayer和AudioTrack,两者都提供了java API供应用开发者使用。虽然都可以播放声音,但两者还是有很大的区别的。其中最大的区别是MediaPlayer可以播放多种格式的声音文件,例如MP3,AAC,WAV,OGG,MIDI等。MediaPlayer会在framework层创建对应的音频解码器。而AudioTrack只能播放已经解码的PCM流,如果是文件的话只转载 2016-07-12 10:41:28 · 4401 阅读 · 0 评论