ALSA 音频术语
2014-06-25 10:26
148 查看
样本和帧
在单一声道,一个时间点上采集的语音信号叫做样本(sample),它是用来描述语音信号的幅值。我们在谈论数字音频的时候往往关心的是同一时间点上所有声道上的音频数据,然后我们就有了帧(frame)的概念。它是用来收集所有声道上的样本。ALSA的音频API也是用帧来作为音频数据的单位。
样本和帧的大小
样本的大小跟存储的格式有关,比如常用的S16_LE,即有符号的16位小端存储,那么一个样本的大小就是16/8bit=2个字节。
帧的大小就是声道的数量乘以样本的大小,比如,一个立体声48khz,16bit,PCM音频流,即双声道,那么一帧的大小就是2x2bytes
再比如一个5.1声道(6个声道,16bit,PCM音频流,一帧的大小就是6x2bytes
周期(period)
周期是用来存放帧的单元,ALSA函数是以一个周期为单位来读取音频数据的。
缓冲区(buffer)
一个缓冲区一般有两个周期,有些硬件也可以做到8个缓冲区,也有可能缓冲区的大小并不是周期的整数倍。缓冲区是循环读取的,比如一个缓冲区有两个周期,那么硬件在读取一个缓冲区时便会产生两次中断,ALSA也尽可能地填满一个周期的音频数据。当第一个周期的音频数据被取走就准备取第二个周期的音频数据,同时第三个周期的音频数据会填充到第一个音频数据的位置,以此循环。当填充与取出缓冲区的速度不协调的时候就会出现错误。xrun()
交错模式与非交错模式
交错模式与非交错模式只是音频数据存放在缓冲区时的一种方式,在交错模式下,一帧包含所有声道的样本,而在非交错模式下一帧仅包含一个声道的样本,下一帧会包含另外一个声道的样本。
在单一声道,一个时间点上采集的语音信号叫做样本(sample),它是用来描述语音信号的幅值。我们在谈论数字音频的时候往往关心的是同一时间点上所有声道上的音频数据,然后我们就有了帧(frame)的概念。它是用来收集所有声道上的样本。ALSA的音频API也是用帧来作为音频数据的单位。
样本和帧的大小
样本的大小跟存储的格式有关,比如常用的S16_LE,即有符号的16位小端存储,那么一个样本的大小就是16/8bit=2个字节。
帧的大小就是声道的数量乘以样本的大小,比如,一个立体声48khz,16bit,PCM音频流,即双声道,那么一帧的大小就是2x2bytes
再比如一个5.1声道(6个声道,16bit,PCM音频流,一帧的大小就是6x2bytes
周期(period)
周期是用来存放帧的单元,ALSA函数是以一个周期为单位来读取音频数据的。
缓冲区(buffer)
一个缓冲区一般有两个周期,有些硬件也可以做到8个缓冲区,也有可能缓冲区的大小并不是周期的整数倍。缓冲区是循环读取的,比如一个缓冲区有两个周期,那么硬件在读取一个缓冲区时便会产生两次中断,ALSA也尽可能地填满一个周期的音频数据。当第一个周期的音频数据被取走就准备取第二个周期的音频数据,同时第三个周期的音频数据会填充到第一个音频数据的位置,以此循环。当填充与取出缓冲区的速度不协调的时候就会出现错误。xrun()
交错模式与非交错模式
交错模式与非交错模式只是音频数据存放在缓冲区时的一种方式,在交错模式下,一帧包含所有声道的样本,而在非交错模式下一帧仅包含一个声道的样本,下一帧会包含另外一个声道的样本。
相关文章推荐
- ALSA 音频术语
- ALSA音频结构(1)
- mt7628/mt7620实现alsa架构通过ffmpeg解码并播放音频
- linux音频alsa-uda134x驱动文档阅读之二(时钟)
- 基于Linux ALSA音频驱动的wav文件解析及播放程序
- alsa音频编程
- linux音频alsa-uda134x驱动分析之二(时钟)
- 【转】Alsa音频编程【精华】
- 音频术语
- 嵌入式Linux下ALSA音频架构ALSA-lib移植与编译心得
- Linux音频设备驱动_ALSA驱动框架的转载链接
- Linux ALSA音频系统之音频播放
- Android音频底层调试-基于tinyalsa
- 视音频编解码基本术语及解释
- Linux ALSA音频框架分析三:ALSA框架
- ALSA音频工具amixer,aplay,arecord
- Alsa音频编程【精华】
- Linux 获取音频ALSA API编程
- alsa 音频路径的问题:
- ALSA音频结构(2)