![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
linux 音频子系统
Android音频学习
dahailinan
这个作者很懒,什么都没留下…
展开
-
Android tinyplay与tinycap流程
1.高通Audio整体框架 2.tinyplay 由时序图可知:主要涉及pcm_open()、pcm_write()、pcm_prepare()、pcm_start(). 3.tinycap 由时序图可知:主要涉及pcm_open()、pcm_read()、pcm_start()。 5.播放 //启用耳机播放 # tinymix ‘RX1 MIX1 INP1’ ‘RX1’ # tinymix ...转载 2020-11-12 14:21:45 · 1953 阅读 · 0 评论 -
Android Audio System 架构初探(好文)
原址Audio系统一些基本概念采样率:用一堆离散的数字表示真实世界里连续的声音信号,需要对其进行采样,理论基础是奈奎斯特采样定理。采样率的单位是赫兹,就是说一秒有多少个采样,一般数字音频的采样率通常为8k~48k,一些hifi系统的采样率可以达到192k。奈奎斯特采样定理:当对被采样的模拟信号进行还原时,其最高频率只有采样频率的一半。位深:一个系统用多少个bit来表示一个采样,就说这个系统的位深为多少。位深代表了采样精度,一般数字音频系统的位深为16bit,一些hifi系统可以达到2转载 2020-11-10 15:53:56 · 686 阅读 · 0 评论 -
Android智能手机中各种音频场景下的audio data path
上一篇文章(Android智能手机上的音频浅析)说本篇将详细讲解Android智能手机中各种音频场景下的音频数据流向,现在我们就开始。智能手机中音频的主要场景有音频播放、音频录制、语音通信等。不同场景下的音频数据流向有很大差异,即使是同一场景,在不同的模式下音频数据流向也有所不同。1,音频播放Android系统audio框架中主要有三种播放模式:low latency playback、deep buffer playback和compressed offload playback。a)l.转载 2020-11-04 19:06:58 · 696 阅读 · 1 评论 -
Android智能手机上的音频浅析
手机可以说是现在人日常生活中最离不开的电子设备了。它自诞生以来,从模拟的发展到数字的,从1G发展到目前的4G以及不久将来的5G,从最初的只有唯一的功能(打电话)发展到目前的全功能,从功能机(feature phone)发展到智能机(smart phone),可谓变化巨大。对于手机上的音频来说,刚开始只有语音通信功能,现在不仅语音通信,还可以听音乐、录音、智能语音(语音输入/语音交互)等。智能手机中的音频场景众多,可以说是手机多媒体系统中最复杂的子系统了。今天我们就谈谈Android智能手机上的音频。.转载 2020-11-04 19:06:01 · 323 阅读 · 0 评论 -
【Qualcomm高通音频】音效调试_录音文件播放有杂音,如何定位原因?
一、录音播放数据处理过程介绍(1)TX方向麦克风(硅麦克风或者主机体麦克风)采集模拟音频信号,经过内部CODEC芯片中的adc转换为数字信号,在经过高通音频DSP处理音效后编码为wav/aac/amr/mp3等格式文件。(2)RX方向音频文件经过解码、重采样还原为pcm数据,经过DSP处理音效后送到内部CODEC,然后经过DAC转换为模拟信号,送到喇叭。二、分析步骤1. 先确认RX、TX整个链路的音频信号是否正常?录音之后先电脑上播放有无杂音?确认TX在调试设备上播放干.转载 2020-10-29 10:11:41 · 1747 阅读 · 1 评论 -
【Qualcomm高通音频】如何通过上层代码修改dump音频数据流进行问题分析呢?
如何通过上层代码修改dump音频数据流我们在分析杂音等问题的时候, 只抓adb log是不够的, dump audio的数据能直观快速的判断是哪一块出了问题, 这里只针对高通平台1. 如何在Frameworks层音频数据dump //代码路径:frameworks/av/services/audioflinger/Tracks.cpp#getNextBuffer status_t AudioFlinger::PlaybackThread::Track::getNextBuf.转载 2020-10-29 10:08:09 · 904 阅读 · 0 评论 -
【Qualcomm高通音频】音频数据如何从文件系统送到喇叭Speaker?
一、 开门见山这里介绍下声音如何从文件系统比如sd卡送到喇叭的。示意图如下:简单引申点音频知识点。ASOC主要部件1,alsa lib 配合 注册的snd_platform(pcm设备),把数据传到kernel. DAI(digital* audio interface) 确认cpu dai, codec dai.2, snd_soc_platform driver( 通常都是一些数据搬运的操作,数据从内存搬到 cpu dai)3,snd_soc...转载 2020-10-29 10:06:56 · 732 阅读 · 0 评论 -
一个连接蓝牙耳机听歌过程中的耗电问题分析
最近在项目中遇到了一个连接蓝牙耳机听歌,手机功耗太大的问题,手机的电流大于参考标椎40ma左右。log分析, 出问题的时间点,avrcp一直在更新歌曲的进度,但是是负值,这个值表示的是下一个播放位置减去当前的播放位置,所以这个值不可能是负的。06-17 21:12:30.839735 21887 21997 D Avrcp_ext: sendPlayPosNotificationRsp: (false) 738445 <=? 792497 <=? 740445 mLastReported转载 2020-10-27 16:27:04 · 3470 阅读 · 0 评论 -
音频常见问题总结
音频文件在播放时出现断断续续或类似“爆破”(Pop-Click)杂音的现象,称之为 Xrun(可以是 underrun,也可以是 overrun)。【原因】 通常来说,出现 Xrun 问题时原因可能是以下几个之一: (1) Linux CFS 调度器导致。因为 CFS 调度器的“公平调度”是较长一段时间的平均表现,在很短的一个窗口时间段内,CFS 也可能会将 CPU 时间片完全分配给一个 nice 值更高的线程而不顾及另一个 nice 值更低的线程。如果这个低 nice 值的线程恰好...原创 2020-10-17 10:46:07 · 8547 阅读 · 1 评论 -
Android Audio 常见客制化问题(一)
插入印度SIM 卡相机拍照声音开关控制无效 录音时如何获取mic进来的音量大小 如何调整录像和拍照的声音大小 在播放器界面使用侧键如何调整Media音量 如何监听手机上面音乐FM等多媒体声音的播放停止的动作 音频输出结束后尽早关闭设备 预览来电铃声如何让背景音乐暂停播放 如何在TP 上Home back添加按键音 蓝牙耳机模式下拨号拨第1个数字没有声音 在filemanager中重命名MP3的名称进入Music中发现歌曲仍显示原来的名称 修改通话时第二通电话呼叫等待提示音音量大小 插入转载 2020-09-10 15:25:10 · 661 阅读 · 0 评论 -
音频驱动篇之pop音攻略
接触音频驱动工作也有2年的时间了,这这段时间里深刻感受了手机行业的更新换代是MB的迅速。2年的时间里,从TI到QUALCOMM,从android2.1到4.2,从单核到四核。经我参与的项目就有20款,日子是相当的难过。今天回头来说一些我在研发过程中遇到的一些音频难点问题与大家分享,希望对从事音频驱动行业的兄弟们有些许帮助,同时也希望大家有好的想法可以和我沟通,与大家分享。一、pop音产生的...原创 2020-04-16 15:16:36 · 2550 阅读 · 0 评论 -
高通Audio中ASOC的machine驱动(一)
正文ASoC被分为Machine、Platform和Codec三大部分,其中的Machine驱动负责Platform和Codec之间的耦合以及部分和设备或板子特定的代码,再次引用上一节的内容:Machine驱动负责处理机器特有的一些控件和音频事件(例如,当播放音频时,需要先行打开一个放大器);单独的Platform和Codec驱动是不能工作的,它必须由Machine驱动把它们结合在一起才能完成...转载 2019-08-26 14:00:00 · 1479 阅读 · 0 评论 -
Android中使用ALSA声卡
Android中使用ALSA声卡首先,cd到Android源码树根目录下:cd /home/figo/android/Android-2.0从Android主页下载ALSA声卡的相关源码:git clone git://android.git.kernel.org/platform/external/alsa-lib.gitgit clone git://a转载 2014-04-21 16:22:15 · 1409 阅读 · 0 评论 -
Android音频系统之音频框架
1.1 音频框架Android的音频系统在很长一段时间内都是外界诟病的焦点。的确,早期的Android系统在音频处理上相比于IOS有一定的差距,这也是很多专业的音乐播放软件开发商没有推出Android平台产品的一个重要原因。但这并不代表它的音频框架一无是处,相反,基于Linux系统的Android平台有很多值得我们学习的地方。1.1.1 Linux下的音频框架在计算转载 2018-06-14 15:44:05 · 7637 阅读 · 0 评论 -
Linux ALSA声卡驱动之六:ASoC架构中的Machine
前面一节的内容我们提到,ASoC被分为Machine、Platform和Codec三大部分,其中的Machine驱动负责Platform和Codec之间的耦合以及部分和设备或板子特定的代码,再次引用上一节的内容:Machine驱动负责处理机器特有的一些控件和音频事件(例如,当播放音频时,需要先行打开一个放大器);单独的Platform和Codec驱动是不能工作的,它必须由Machine驱动把它们结转载 2014-04-18 09:57:48 · 658 阅读 · 0 评论 -
Linux ALSA声卡驱动之四:Control设备的创建
声明:本博内容均由http://blog.csdn.net/droidphone原创,转载请注明出处,谢谢!Control接口Control接口主要让用户空间的应用程序(alsa-lib)可以访问和控制音频codec芯片中的多路开关,滑动控件等。对于Mixer(混音)来说,Control接口显得尤为重要,从ALSA 0.9.x版本开始,所有的mixer工作都是通过contr转载 2014-04-18 09:56:14 · 504 阅读 · 0 评论 -
Linux ALSA声卡驱动之二:声卡的创建
声明:本博内容均由http://blog.csdn.net/droidphone原创,转载请注明出处,谢谢!1. struct snd_card 1.1. snd_card是什么snd_card可以说是整个ALSA音频驱动最顶层的一个结构,整个声卡的软件逻辑结构开始于该结构,几乎所有与声音相关的逻辑设备都是在snd_card的管理之下,声卡驱动的第一个动作通常就是创转载 2014-04-18 09:54:23 · 631 阅读 · 0 评论 -
Linux ALSA声卡驱动之三:PCM设备的创建
声明:本博内容均由http://blog.csdn.net/droidphone原创,转载请注明出处,谢谢!1. PCM是什么PCM是英文Pulse-code modulation的缩写,中文译名是脉冲编码调制。我们知道在现实生活中,人耳听到的声音是模拟信号,PCM就是要把声音从模拟转换成数字信号的一种技术,他的原理简单地说就是利用一个固定的频率对模拟信号进行采样,转载 2014-04-18 09:55:28 · 559 阅读 · 0 评论 -
Linux ALSA声卡驱动之五:移动设备中的ALSA(ASoC)
1. ASoC的由来ASoC--ALSA System on Chip ,是建立在标准ALSA驱动层上,为了更好地支持嵌入式处理器和移动设备中的音频Codec的一套软件体系。在ASoc出现之前,内核对于SoC中的音频已经有部分的支持,不过会有一些局限性: Codec驱动与SoC CPU的底层耦合过于紧密,这种不理想会导致代码的重复,例如,仅是wm8731的驱动,当时Lin转载 2014-04-18 09:56:59 · 581 阅读 · 0 评论 -
Linux ALSA声卡驱动之七:ASoC架构中的Codec
1. Codec简介在移动设备中,Codec的作用可以归结为4种,分别是:对PCM等信号进行D/A转换,把数字的音频信号转换为模拟信号对Mic、Linein或者其他输入源的模拟信号进行A/D转换,把模拟的声音信号转变CPU能够处理的数字信号对音频通路进行控制,比如播放音乐,收听调频收音机,又或者接听电话时,音频信号在codec内的流通路线是不一样的对音频信号做出相应的处理转载 2014-04-18 09:58:43 · 787 阅读 · 0 评论 -
Linux ALSA声卡驱动之八:ASoC架构中的Platform
1. Platform驱动在ASoC中的作用前面几章内容已经说过,ASoC被分为Machine,Platform和Codec三大部件,Platform驱动的主要作用是完成音频数据的管理,最终通过CPU的数字音频接口(DAI)把音频数据传送给Codec进行处理,最终由Codec输出驱动耳机或者是喇叭的音信信号。在具体实现上,ASoC有把Platform驱动分为两个部分:snd_soc_pl转载 2014-04-18 09:59:45 · 730 阅读 · 0 评论 -
ALSA声卡驱动中的DAPM详解之一:kcontrol
DAPM是Dynamic Audio Power Management的缩写,直译过来就是动态音频电源管理的意思,DAPM是为了使基于linux的移动设备上的音频子系统,在任何时候都工作在最小功耗状态下。DAPM对用户空间的应用程序来说是透明的,所有与电源相关的开关都在ASoc core中完成。用户空间的应用程序无需对代码做出修改,也无需重新编译,DAPM根据当前激活的音频流(playback/c转载 2014-04-18 10:00:37 · 792 阅读 · 0 评论 -
ALSA声卡驱动中的DAPM详解之二:widget-具备路径和电源管理信息的kcontrol
上一篇文章中,我们介绍了音频驱动中对基本控制单元的封装:kcontrol。利用kcontrol,我们可以完成对音频系统中的mixer,mux,音量控制,音效控制,以及各种开关量的控制,通过对各种kcontrol的控制,使得音频硬件能够按照我们预想的结果进行工作。同时我们可以看到,kcontrol还是有以下几点不足:只能描述自身,无法描述各个kcontrol之间的连接关系;没有相转载 2014-04-18 10:01:32 · 828 阅读 · 0 评论 -
ALSA声卡驱动中的DAPM详解之三:如何定义各种widget
上一节中,介绍了DAPM框架中几个重要的数据结构:snd_soc_dapm_widget,snd_soc_dapm_path,snd_soc_dapm_route。其中snd_soc_dapm_path无需我们自己定义,它会在注册snd_soc_dapm_route时动态地生成,但是对于系统中的widget和route,我们是需要自己进行定义的,另外,widget所包含的kcontrol与普通的k转载 2014-04-18 10:02:25 · 812 阅读 · 0 评论 -
ALSA声卡驱动中的DAPM详解之四:在驱动程序中初始化并注册widget和route
前几篇文章我们从dapm的数据结构入手,了解了代表音频控件的widget,代表连接路径的route以及用于连接两个widget的path。之前都是一些概念的讲解以及对数据结构中各个字段的说明,从本章开始,我们要从代码入手,分析dapm的详细工作原理:如何注册widget如何连接两个widget一个widget的状态裱画如何传递到整个音频路径中/***************转载 2014-04-18 10:03:17 · 786 阅读 · 0 评论 -
ALSA声卡驱动中的DAPM详解之五:建立widget之间的连接关系
前面我们主要着重于codec、platform、machine驱动程序中如何使用和建立dapm所需要的widget,route,这些是音频驱动开发人员必须要了解的内容,经过前几章的介绍,我们应该知道如何在alsa音频驱动的3大部分(codec、platform、machine)中,按照所使用的音频硬件结构,定义出相应的widget,kcontrol,以及必要的音频路径,而在本章中,我们将会深入da转载 2014-04-18 10:04:20 · 949 阅读 · 0 评论 -
ALSA声卡驱动中的DAPM详解之六:精髓所在,牵一发而动全身
设计dapm的主要目的之一,就是希望声卡上的各种部件的电源按需分配,需要的就上电,不需要的就下电,使得整个音频系统总是处于最小的耗电状态,最主要的就是,这一切对用户空间的应用程序是透明的,也就是说,用户空间的应用程序无需关心那个部件何时需要电源,它只要按需要设定好音频路径,播放音频数据,暂停或停止,dapm框架会根据音频路径,完美地对各种部件的电源进行控制,而且精确地按某种顺序进行,防止上下电过程转载 2014-04-18 10:05:27 · 1483 阅读 · 0 评论 -
ALSA声卡驱动中的DAPM详解之七:dapm事件机制(dapm event)
前面的六篇文章,我们已经讨论了dapm关于动态电源管理的有关知识,包括widget的创建和初始化,widget之间的连接以及widget的上下电顺序等等。本章我们准备讨论dapm框架中的另一个机制:事件机制。通过dapm事件机制,widget可以对它所关心的dapm事件做出反应,这种机制对于扩充widget的能力非常有用,例如,对于那些位于codec之外的widget,好像喇叭功放、外部的前置放大转载 2014-04-18 10:06:14 · 620 阅读 · 0 评论 -
ALSA之CODEC分析
ALSA: Advanced Linux Sound Architecture,它包括内核驱动集合、API库和工具。用户层程序直接调用libsound的API库,不需要打开设备等操作,因此编程者不需要了解底层细节。这里不分析ALSA的核心代码core,也不阐述如何在用户层进行声卡编程,仅仅简要介绍在ALSA的架构上添加一个声卡驱动,即上图中的Sound Driver。其实文档《wirte转载 2014-04-17 16:50:30 · 673 阅读 · 0 评论 -
Linux ALSA声卡驱动之一:ALSA架构简介
一. 概述 ALSA是Advanced Linux Sound Architecture 的缩写,目前已经成为了linux的主流音频体系结构,想了解更多的关于ALSA的这一开源项目的信息和知识,请查看以下网址:http://www.alsa-project.org/。 在内核设备驱动层,ALSA提供了alsa-driver,同时在应用层,ALSA为我们提供了alsa-转载 2014-04-18 09:50:16 · 602 阅读 · 0 评论