这可能是一个非常愚蠢的问题,但经过一段时间的搜索,我找不到一个直接的答案。
如果源过滤器(如LAV音频编解码器)正在处理24位的整体音频流,那么如何将单个音频样本传递到图形中?(为了简单起见,让我们考虑单声道流)
它们是单独地存储在32位整数上,没有使用最重要的位数,还是以打包的形式存储,下一个样本中最不重要的位占用了当前样本的备用、最重要的位?。
发布于 2017-06-20 11:25:52
它的格式类似于16位PCM:值是有符号整数,即小endian。
使用24位音频,您通常使用WAVEFORMATEXTENSIBLE
结构来定义格式,而不是WAVEFORMATEX
(好的,后者也可以被某些过滤器所接受,但通常您需要使用前者)。
该结构有两个值:每个样本的位数和每个样本的有效位数。因此,可以将24位数据表示为24位值,也可以表示为32位值的24位有意义的位。有效载荷数据应该与格式相匹配。
在一个字节中不存在不同样本的混合:
但是,wBitsPerSample是容器大小,必须是8的倍数,而wValidBitsPerSample可以是任何不超过容器大小的值。例如,如果格式使用20位示例,则wBitsPerSample必须至少为24,但wValidBitsPerSample为20。
据我所知,通常只有24位值,即每个PCM示例三个字节。
非PCM格式可能定义不同的打包并更有效地使用“未使用”位,因此,例如,对于20位音频的示例来说,要消耗5个字节。
https://stackoverflow.com/questions/44660805
复制相似问题