
Android ALSA驱动
文章平均质量分 64
Android系统攻城狮
《Android系统多媒体进阶实战》一书作者
展开
-
音频接口简介(PDM/PCM/IIS/SLIMBUS)
缩写释义CAS:随路信令,语音和信令在同一路话路中传送的信令CCS:共路信令,语音和信令分开传输ASLA - Advanced Sound Linux ArchitectureOSS - 以前的Linux音频体系结构,被ASLA取代并兼容Codec - Coder/DecoderI2S/PCM/AC97 - Codec与CPU间音频的通信协议/接口/总线DAI - Digital Audio Interface其实就是I2S/PCM/AC97/PDM/TDM等,实现音频数据在CP转载 2022-05-11 10:22:07 · 8847 阅读 · 1 评论 -
硬件接口之DMIC
DMIC接口也称双/立体声数字麦克风接口。 这种接口允许两个麦克风共享一个公共的时钟与数据线。每个麦克风被配置为在时钟信号的不同沿产生各自的输出。这样两个麦克风的输出就能保持相互同步,设计师就能确保来自每个通道的数据被同时捕获到。上图出自 时序图中可以看到当SELECT脚接Vdd时,CLK下降沿时,DATA输出有效数据;当SELECT脚接GND时,CLK上升沿时,DATA输出有效数据,主控上相应配置好采样即可,这样可以实现一个DATA和CLK接双麦。...转载 2022-05-11 10:18:54 · 7239 阅读 · 0 评论 -
硬件接口之I2S
I2S仅仅是PCM的一个分支,接口定义都是一样的, I2S的采样频率一般为44.1KHZ和48KHZ做,PCM采样频率一般为8K,16K。有四组信号: 位时钟信号,同步信号,数据输入,数据输出.I2S速度快,专门用于传音乐。从MCU往Codec传音乐数据,一般使用I2S。包含主时钟、左右声道时钟、正反两根数据线。PCM/TDM,主要用来传语音这里讲的PCM不是PCM编码,而是PCM接口。和I2S差不多,也是4根线,通常用于AP处理器和通信MODEM之间传输语音数据(就是双向打电话的数据)。AP处理器转载 2022-05-11 10:16:31 · 18371 阅读 · 1 评论 -
硬件接口之PCM
PCM = Pulse Code Modulation 是通过等时间隔(即采样率时钟周期)采样将模拟信号数字化的方法。图为4 bit 采样深度的PCM数据量化示意图: 和I2S接口差不多,PCM接口是4根信号线,通常用于AP处理器和通信MODEM之间传输语音数据(就是双向打电话的数据)。 AP处理器和蓝牙之间也是通过PCM来传输语音数据,打电话的蓝牙数据走的是PCM,放音乐的蓝牙数据走的是串口(不是PCM)。特点:效率高,多达16路数据;主要传输音乐;先传高位再传低位。传输内.转载 2022-05-11 10:14:50 · 5640 阅读 · 0 评论 -
audio各种参数定义
1.system/media/audio/include/system/audio.h#ifndef ANDROID_AUDIO_CORE_H#define ANDROID_AUDIO_CORE_H#include <stdbool.h>#include <stdint.h>#include <stdio.h>#include <sys/cdefs.h>#include <sys/types.h>#include <c原创 2022-02-24 15:07:32 · 3978 阅读 · 0 评论 -
音频AMR和PCM
1、音频基础1.1 声音是什么引用百度百科中对声音的一段描述:声音其实是一种能量波,因此也有频率和振幅的特征,频率对应于时间轴线,振幅对应于电平轴线。波是无限光滑的,弦线可以看成由无数点组成,由于存储空间是相对有限的,数字编码过程中,必须对弦线的点进行采样。采样的过程就是抽取某点的频率值,很显然,在一秒中内抽取的点越多,获取得频率信息更丰富,为了复原波形,一次 振动中,必须有2个点的采样,人耳能够感觉到的最高频率为20kHz,因此要满足人耳的听觉要求,则需要至少每秒进行40k次采样,用40kHz转载 2022-02-12 00:28:29 · 1266 阅读 · 0 评论 -
Audio Playback过程
【数据传输流程图】【简要说明】1、APP 将音频文件(比如.mp3文件)数据从存储器读取到匿名共享内存(AshMem)中;2、AudioFlinger 从匿名共享内存中读取音频数据,再通过 HAL 层接口将这些数据写入到 DMA 缓冲区(这一步操作将数据从用户空间拷贝到了内核空间);3、DMA 控制器将 DMA 缓冲区中的数据拷贝到 SoC 的 I2S Tx FIFO,开始向 Codec 发送数据;4、Codec 固件会自动将 Codec I2S Rx FIFO 中接收到数据送入 C转载 2022-02-11 23:37:17 · 1210 阅读 · 0 评论 -
ALSA理解
音频读数据函数流程内核注册声卡流程内核驱动里面的platform、machine和codec如果看alsa驱动的时候,不能清楚的明白这三个之间的联系,那就很容易陷入迷宫里面。用一张图来说明,应该比较形象。machine 「可以理解成一个主板、一套代码是可以适配很多很多主板的」 platform 「这个代表的是CPU型号,平台相关的东西」 codec「也就是音频芯片,有编解码的AD或者DA」machine、platform、codec 文件和关键结构体转载 2022-02-11 23:14:44 · 423 阅读 · 0 评论 -
回声消除技术原理与解决办法
目前智能会议终端是远程会议不可缺少的一个工具,相对于手机直接通话,它具有外放音量大,音色饱满,拾音距离远,支持单端多人参会等优势。但是这些用户体验上的优势给音频处理带来了很大挑战,特别是会议终端的回声消除环节。所以我今天想和大家探讨一下回声消除技术。在讨论回声消除技术之前,小编先介绍一下什么是回声。何为回声?从通讯回音产生的原因看,可以分为声学回音(Acoustic Echo)和线路回音(Line Echo),相应的回声消除技术就叫声学回声消除(Acoustic Echo Cancelation转载 2022-01-21 19:23:46 · 3106 阅读 · 0 评论 -
Audio驱动总结
接触 Audio 的这几个月,对控制的理解和对 alsa 框架的理解其中学习的进行总结音频参数Sample:样本长度 (位宽),音频数据最基本的单位,常见的有 8 位和 16 位。 Channel:声道数,分为单声道 mono 和立体声 stereo。 Frame:帧,构成一个声音单元,Frame = Samplechannel, samplechannel/8 Byte。 Rate:又称 Sample rate,采样率,即每秒的采样次数,针对帧而言。 Interleaved:交错模式.转载 2021-12-16 00:41:59 · 3330 阅读 · 0 评论 -
ALSA播放时杂音问题
1.alsa的音频输出过程alsa播放音频的原理通过snd_pcm_writei()等函数将音频数据写到alsa的buffer中。alsa启动播放以后,alsa驱动会产生中断,每次中断从buffer中取走period个音频数据帧输出到codec。2.音频最后的数据不足一个periodalsa驱动从buffer中是按照一个完整的period个数据帧取走数据的,如果取走的一个period数据中,并不都是音频数据,可能有其他脏数据,那就可能在最后一帧产生噪音。3.具体举一个例子: 一.转载 2021-12-16 00:17:52 · 3911 阅读 · 1 评论 -
Linux ALSA DAPM 调试工具
1.安装图形生成工具# sudo apt-get install graphviz2.仅列举 active 状态的控件编写:dapm_debug_host.sh脚本,脚本在主机执行即可,Android设备必须root.**********************************************************************************#!...转载 2019-09-11 20:06:34 · 766 阅读 · 0 评论 -
Linux ALSA驱动框架(一)--ALSA架构简介--声卡的创建
(1)ALSA简介(1)NativeALSAApplication:tinyplay/tinycap/tinymix,这些用户程序直接调用alsa用户库接口来实现放音、录音、控制ALSALibraryAPI:alsa用户库接口,常见有tinyalsa、alsa-libALSACORE:alsa核心层,向上提供逻辑设备(PCM/CTL/MIDI/TIMER/…)系统调用,...转载 2020-03-23 18:33:19 · 1452 阅读 · 0 评论 -
ALSA & ASOC
1ALSA1.1架构简述ALSA是Advanced Linux Sound Architecture的缩写,官网:http://www.alsa-project.org.在内核设备驱动层,ALSA提供了alsa-driver.同时在应用层,ALSA为我们提供了alsa-lib,应用程序只要调用alsa-lib提供的API,即可以完成对底层音...转载 2020-03-20 13:40:29 · 1859 阅读 · 0 评论 -
高通audio数据到Speaker播放流程
一、 开门见山这里介绍下声音如何从文件系统比如sd卡送到喇叭的。示意图如下:简单引申点音频知识点。ASOC 主要部件1,alsa lib配合 注册的snd_platform(pcm设备),把数据传到kernel.DAI(digital* audio interface)确认cpu dai, codec dai.2, snd_soc_pla...转载 2020-01-13 10:49:09 · 4355 阅读 · 2 评论 -
ALSA之PCM分析
之前写过一个音频驱动CODEC分析,当时忽略了阐述最基本的概念。要了解一个东西,首先要明白它是什么它起到什么作用,然后才会更好对它的工作流程更好的分析。所以这里提一下:CODEC :音频芯片的控制,比如静音、打开(关闭)ADC(DAC)、设置ADC(DAC)的增益、耳机模式的检测等操作。I2S :数字音频接口,用于CPU和Codec之间的数字音频流raw data的传输。每当有play...转载 2019-12-31 11:08:37 · 1314 阅读 · 1 评论 -
PCM data flow - 3 - ASoC codec driver
上一章提到codec_drv的几个组成部分,下面逐一介绍,基本是以内核文档Documentation/sound/alsa/soc/codec.txt中的内容为脉络来分析的。codec的作用,在概述中有说明,本章主要罗列下codec driver中重要的数据结构及注册流程。Codec DAI and PCM configurationcodec_dai和pcm配置信息通过结构体snd_s...转载 2019-12-31 11:01:05 · 549 阅读 · 0 评论 -
PCM data flow - 2 - ASoC data structure
ASoC:ALSA System on Chip,是建立在标准ALSA驱动之上,为了更好支持嵌入式系统和移动设备中的音频codec的一套软件体系,它依赖于标准ALSA驱动框架。内核文档Documentation/alsa/soc/overview.txt中详细介绍了ASoC的设计初衷,这里不一一引用,简单陈述如下:· 独立的codec驱动,标准的ALSA驱动框架里面codec...转载 2019-12-31 10:58:27 · 578 阅读 · 0 评论 -
PCM data flow - 1 - Overview
Kernel - 3.4.5SoC- Samsung exynosCODEC- WM8994Machine - goni_wm8994Userspace- tinyalsaALSA/ASoC驱动有如下三部分构成:· Platform:通常指某款SoC平台,如exynos、omap、qcom等等。Platform...转载 2019-12-31 10:53:17 · 541 阅读 · 0 评论