2011-05-30 111 views
3

我在玩Jack,我注意到默认音频类型JACK_DEFAULT_AUDIO_TYPE设置为“32位浮点单声道音频”。“32位浮点单声道音频”in Jack

我有点困惑:IEEE定义了大约从3.4E-38到3.4E + 38的32位C浮点范围,我想知道jack_default_audio_sample_t可以容纳的最大和最小“未失真”幅度是什么与那种音频类型。例如,如果某些DSP算法给出了范围为[0,1]的样本,那么我怎样才能正确地在它们和Jack的格式之间进行转换?

+7

浮点音频被归一化到范围-1 .. + 1。 – 2011-05-30 23:00:59

回答

5

在浮点处执行信号处理操作很常见,然后在将结果发送到ADC之前将结果放大并转换为16位或24位整数。例如,以浮点形式实现IIR滤波器意味着您可以降低对系数量化的敏感度。或者如果你在做FFT,你可以通过浮点计算获得更大的动态范围。

通常的转换方式是在数据从ADC进入时执行x_float = x_int * (1.0/SHRT_MAX),而在发送到DAC时执行用于16位编解码器的y_int = y_float * SHRT_MAX。对于24位编解码器,您需要定义ADC_MAX = (1 << 24) - 1

在使用JACK的情况下,我猜框架会为您处理这种转换,所以您应该看到+/- 1范围内的浮点值,并将其返回到相同范围内的值。