如何将24位音频流传送到图表中?

时间:2017-06-20 18:44:35

标签: audio directshow audio-streaming

这可能是一个非常愚蠢的问题,但经过一段时间的搜索后,我找不到直接的答案。

如果源过滤器(例如LAV音频编解码器)正在处理24位整数音频流,那么各个音频样本如何传送到图表? (为简单起见,我们考虑单声道流)

它们是单独存储在32位整数中,其中最高有效位未使用,还是以压缩形式存储,下一个采样的最低有效位占用备用,最高有效位目前的样本?

1 个答案:

答案 0 :(得分:3)

格式类似于16位PCM:值是有符号整数,小端。

对于24位音频,您通常使用WAVEFORMATEXTENSIBLE结构来定义格式,而不是WAVEFORMATEX(嗯,后者也可以被某些过滤器接受,但是一般来说,你应该使用前者。

该结构有两个值:每个样本的位数和每个样本的有效位数。因此,可以将24位数据表示为24位值,也可以将24位数据表示为32位值。有效负载数据应与格式匹配。

一个字节内没有不同样本的位混合:

  

但是,wBitsPerSample是容器大小,必须是8 的倍数,而wValidBitsPerSample可以是不超过容器大小的任何值。例如,如果格式使用20位样本,则wBitsPerSample必须至少为24,但wValidBitsPerSample为20。

据我所知,通常只有24位值,即每个PCM样本三个字节。

非PCM格式可能会定义不同的打包并更有效地使用“未使用”位,因此,例如,20位音频的样本消耗5个字节。