【发布时间】:2019-05-02 06:57:56
【问题描述】:
我正在试验 ALSA,并在 howto, Section 2 中遇到了以下配置参数:
buffersize的单位取决于函数。有时它是 以字节为单位,有时必须指定帧数。 一帧是所有通道的样本数据向量。对于 16 位 立体数据,一帧长度为四个字节。
/* 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);
}
我不明白对于 16 位立体声数据,一帧有长度 四个字节
为什么是四个?它是否遵循通道数:2?我的意思是早些时候他们将其配置如下:
/* Set number of channels */
if (snd_pcm_hw_params_set_channels(pcm_handle, hwparams, 2) < 0) {
fprintf(stderr, "Error setting channels.\n");
return(-1);
}
如果我的音响系统包含 4 个输出会怎样?还是6?是不是意味着我必须将其配置为 16 Bit * 4 和 16 Bit * 6?
【问题讨论】:
-
嗯,每个样本是 16 位(两个字节),你有两个通道(所以乘以 2),这会产生.....四个完整字节的数据。