音频1

您所在的位置:网站首页 什么叫自动连接音频设备呢 音频1

音频1

2024-07-11 16:59| 来源: 网络整理| 查看: 265

接下来计划针对音频做一个较为详细的总结:

计划分成下面8章来详细展开,后面再根据实际情况做调整。

- 1.基础知识(硬件,音频相关概念)

2.ALSA/ASOC框架3.codec 驱动dapm 相关(kcontrol、widget、route),以及hal层设置通路4.android 音频框架( 重点在AudioFlinger 和 AudioPolicyService服务 )5.音频通路的选择(AudioTrack播放选择设备的过程,已经设备切换过程)6.播放 录音音频流的传输过程7.audio hal介绍8.一些常见问题解决思路

以上内容基于tinyalsa展开,尽量剔除厂商的差异性。

音频基础知识 一.概念

采集声音实际就是将模型信号转化成数字信号,类似ADC的原理,有着几个步骤:模拟信号->抽样->量化->编码->数字信号 涉及到几个关键的参数:

采样率:抽样环节的频率, 一秒采样多少次,采样频率必须至少是信号中最大频率分量频率的两倍,否则就不能从信号采样中恢复原始信号。android 一般使用44.1k 48k等。

位数(采样精度):量化环节用到的精度,采样的精度,即采集到一个数据有多少位可以保存,这个一般要根据codec 芯片支持哪个精度来配置。一般是16位或32位。

声道:采样多少个通道,android 底层支持单声道和双声道

一.硬件相关

硬件相关 主要介绍 IIS接口

IIS( I2S ) 全称Integrated Interchip Sound,是飞利浦在1986年定义(1996年修订)的数字音频传输标准,用于数字音频数据在系统内器件之间传输,例如codec 芯片,数字麦克风,数字输入输出接口等。

硬件例子 如上图to cpu的芯片。我们可以得出IIS 有这些接口:

引脚作用LRCK帧时钟,传输一帧(左右声道)数据的采样率,通过高低电平选择是左声道数据还是右声道数据,也就是采样率SCLKLRCK*两个通道的位数和SDO /SDI数据输入和输出MCLK不是IIS必须的,有时外部芯片需要系统时钟才需要接,一般是 LRCK采样率的256 倍或者384倍

时钟计算的例子:

假设声音数据有左右声道,每个声道占用32位数据位,左右两个声道一共占了64个数据位。如果 LRCK 44.1K 那SCLK 就是44.1K* 64 =2822.4k =2.822m LRCK 48K 那SCLK 就是48K* 64 =3072k =3.072m

IIS通信总线有主从之分: 在总线上只能存在一个主设备,可有多个从设备。主设备提供时钟,不一定是数据的发送方,也可以是接受方或者其他协调两者的控制设备。

二.其他概念 传输延迟(latency):

传输延迟表示一个周期的音频数据的传输时间。可能有些读者一脸懵逼,一个周期的音频数据,这又是啥?我们再引入周期(period)的概念:Linux ALSA 把数据缓冲区划分为若干个块,dma 每传输完一个块上的数据即发出一个硬件中断,cpu 收到中断信号后,再配置 dma 去传输下一个块上的数据;一个块即是一个周期,周期大小(periodSize)即是一个数据块的帧数。再回到传输延迟(latency),传输延迟等于周期大小除以采样率,即 latency = periodSize / sampleRate。

16LE

上文描述的位数,一般会使用16LE ,这里的LE指的是Little Endian 小端存储 就是0x2345 在实际中是先存储 45 再存储23

蓝牙相关

A2DP:是一种单向的高品质音频数据传输链路,通常用于播放立体声音乐; SCO: 则是一种双向的音频数据的传输链路,用于语音通话,音频的采样率较低,一般是8K、16K单声道的音频数据,所以如果用于播放音乐,体验会很差。 两者的主要区别是:A2DP只能播放,默认是打开的,而SCO既能录音也能播放,默认是关闭的。

android 声卡节点 android 声卡节点 控制节点为必须节点,其他不一定有 pcmC0D0c card 0 device 0 capture pcmC0D0p card 0 device 0 playback 表示一个声卡可以有多个设置,一个设备有多个节点 C 表示声卡 D 表示设备 P/C 表示play和capture 后续有其他音频相关的概念会在这里增加。


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3