ALSA 音频术语

个人愚见,抛砖引玉。

样本和帧

在单一声道,一个时间点上采集的语音信号叫做样本(sample),它是用来描述语音信号的幅值。我们在谈论数字音频的时候往往关心的是同一时间点上所有声道上的音频数据,然后我们就有了帧(frame)的概念。它是用来收集所有声道上的样本。ALSA的音频API也是用帧来作为音频数据的单位。

样本和帧的大小

样本的大小跟存储的格式有关,比如常用的S16_LE,即有符号的16位小端存储,那么一个样本的大小就是16/2=8个字节。

帧的大小就是声道的数量乘以样本的大小,比如,一个立体声48khz,16bit,PCM音频流,即双声道,那么一帧的大小就是2x2bytes

再比如一个5.1声道(6个声道,16bit,PCM音频流,一帧的大小就是6x2bytes


周期(period)

周期是用来存放帧的单元,ALSA函数是以一个周期为单位来读取音频数据的。


缓冲区(buffer)

一个缓冲区一般有两个周期,有些硬件也可以做到8个缓冲区,也有可能缓冲区的大小并不是周期的整数倍。缓冲区是循环读取的,比如一个缓冲区有两个周期,那么硬件在读取一个缓冲区时便会产生两次中断,ALSA也尽可能地填满一个周期的音频数据。当第一个周期的音频数据被取走就准备取第二个周期的音频数据,同时第三个周期的音频数据会填充到第一个音频数据的位置,以此循环。当填充与取出缓冲区的速度不协调的时候就会出现错误。xrun()


交错模式与非交错模式

交错模式与非交错模式只是音频数据存放在缓冲区时的一种方式,在交错模式下,一帧包含所有声道的样本,而在非交错模式下一帧仅包含一个声道的样本,下一帧会包含另外一个声道的样本。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值