IMDCT

将音频数据从频域转换到时域的过程主要是由将频域数据填入一组IMDCT滤波器来实现的。在进行IMDCT变换后,输出数值经过加窗,叠加,最后得到时域数值。

IMDCT公式

for 0<= n <N 其中n为采样点索引值,i 为窗索引值,k 为频谱系数索引值,N 为窗函数的长度,全为短窗 N = 256,其余情况为 2048n0=(N/2 +1)/2

块型

由于长块的频域分辨率较高而短块的时域分辨率较高,故长块较适合相对平稳的时域信号,而短块较适合变化相对较快的时域信号。长块长度为2048个点,短块长度为256个点。

加窗

AAC用到两种窗函数,分别为Kaiser-Bessel 类(KBD)窗和正弦窗。KBD窗如下所示:

其定义为:

其中 使用KBD窗时,window_shape1,正弦窗如下所示:

其定义为:

使用正弦窗时,window_shape0。另定义:

对应于四种不同的窗序列分别进行不同的加窗变换:

  • 仅有长块:
    • window_shape1
    • window_shape 为0:
    • 加窗后,时域信号可用 w(n) 表示为:
  • 长开始块:
    • window_shape1
    • window_shape0
    • 加窗后,时域信号可用 w(n) 表示为:
  • 只有短块:
    • window_shape1
    • window_shape0
    • 加窗后,时域信号可用 w(n) 表示为:
  • 长结束块:
    • window_shape1
    • window_shape0
    • 加窗后,时域信号可用 w(n) 表示为:

覆盖叠加

在加窗完成后得到的时域信号值z经过前后窗相互叠加计算,得出最后的PCM值: