使用24位音频的“标准方法”是什么?好吧,真的没有24位数据类型可用。以下是我想到的方法:
你是如何解决这个问题的?
答案 0 :(得分:2)
将它们存储为32位或64位signed int
或float
或double
,除非您有空间意识并且关心将它们打包到可能的最小空间中。
音频样本通常在音频硬件上显示为24位,因为这通常是DAC和ADC的分辨率 - 尽管在大多数计算机硬件上,不要惊讶地发现4位的底部3位随机敲打有噪音。
数字信号处理操作 - 通常在样本采集的下游发生 - 都涉及添加样本的加权和。存储在整数类型中的样本可以被认为是定点二进制,在某个任意点处具有隐含的二进制点 - 您可以策略性地选择其位置以尽可能多地保持精度。
例如,两个24位整数之和产生25位的结果。经过8次这样的添加后,32位类型会溢出,你需要通过舍入和右移来重新规范化。
因此,如果您使用整数类型来存储样本,请使用最大的样本,并从最低24位的样本开始。
浮点类型当然会为您处理这个细节,尽管您在重新归一化时的选择较少。它们是提供硬件支持的音频处理的常用选择。单精度float
具有24位尾数,因此可以保持24位样本而不会损失精度。
通常浮点样本存储在-1.0f < x < 1.0f
范围内。