我正在尝试ALSA,并在此howto, Section 2中遇到了以下配置参数:
buffersize的单位取决于功能。有时候是 以字节为单位,有时必须指定帧数。 一帧是所有通道的样本数据向量。对于16位 立体声数据,一帧的长度为四个字节。
http-server ./dist -o
我不明白这一点对于16位立体声数据,一帧的长度 四个字节
为什么是四个?它是否遵循频道数:2?我的意思是,他们之前将其配置如下:
/* Set buffer size (in frames). The resulting latency is given by */
/* latency = periodsize * periods / (rate * bytes_per_frame) */
if (snd_pcm_hw_params_set_buffer_size(pcm_handle, hwparams, (periodsize * periods)>>2) < 0) {
fprintf(stderr, "Error setting buffersize.\n");
return(-1);
}
如果我的音响系统包含4个输出,那又如何呢?还是6?这是否意味着我必须将其分别配置为16位* 4和16位* 6?
答案 0 :(得分:2)
为什么是四个?是否紧随频道数:2?
是的,如前所述:
一帧是所有通道的样本数据向量。
因此对于立体声16位数据,有两个(左右)通道,每个通道均为16位(= 2字节),因此每帧总计为4字节。