android的alsa应用中的一些概念和原理

来源:互联网 发布:transmit 5 mac 破解 编辑:程序博客网 时间:2024/05/29 05:11


以下概念是工作遇到的问题进行随时的整理,排列无顺序。


1.frame的概念

样本长度(sample):样本是记录音频数据最基本的单位,常见的有8位和16位。

声道数(channel):声道数是反映音频数字化质量的另一个重要因素,它有单声道和双声道之分。双声道又称为立体声,在硬件中有两条线路,音质和音色都要优于单声道,但数字化后占据的存储空间的大小要比单声道多一倍。

桢(frame):桢记录了一个声音单元,其长度为样本长度与通道数的乘积。

In the ALSA world, 1 frame = channels * sample


2.采样频率

采样频率是指将模拟声音波形进行数字化时,每秒钟抽取声波幅度样本的次数。采样频率的选择应该遵循奈奎斯特(Harry Nyquist)采样理论:如果对某一模拟信号进行采样,则采样后可还原的最高信号频率只有采样频率的一半,或者说只要采样频率高于输入信号最高频率的两倍,就能从采样信号系列重构原始信号。

正常人听觉的频率范围大约在20Hz~20kHz之间,根据奈奎斯特采样理论,为了保证声音不失真,采样频率应该在40kHz左右。常用的音频采样频率有8kHz、11.025kHz、22.05kHz、16kHz、37.8kHz、44.1kHz、48kHz等,如果采用更高的采样频率,还可以达到DVD的音质。

note:在实际的android手机应用中,通话和录音一般是8K的采样频率,听歌是44.1K。

3.I2S解析

I2S有3个主要信号:


1.串行时钟SCLK,也叫位时钟BCLK,即对应数字音频的每一位数据,SCLK有1个脉冲。SCLK的频率=2×采样频率×采样位数。

2.帧时钟LRCK,用于切换左右声道的数据。LRCK为“0”表示正在传输的是左声道的数据,为“1”则表示正在传输的是右声道的数据。LRCK的频率等于采样频率。

3.串行数据SDATA,就是用二进制补码表示的音频数据。


有时为了使系统间能够更好地同步,还需要另外传输一个信号MCLK,称为主时钟,也叫系统时钟(Sys Clock),是采样频率的256倍或384倍。


note:在我们平台上,MCLK的频率一般只有两种,我们在machine driver中设置的频率由上面的概念得出:


44100的采样频率,MCLK = 44100*256 = 11289600.

48000的采样频率,MCLK = 48000*256 = 12288000.









原创粉丝点击