将音频数据从频域转换到时域的过程主要是由将频域数据填入一组IMDCT滤波器来实现的。在进行IMDCT变换后,输出数值经过加窗,叠加,最后得到时域数值。
IMDCT公式
for 0<= n <N
其中n
为采样点索引值,i
为窗索引值,k
为频谱系数索引值,N
为窗函数的长度,全为短窗 N = 256
,其余情况为 2048
,n0=(N/2 +1)/2
。
块型
由于长块的频域分辨率较高而短块的时域分辨率较高,故长块较适合相对平稳的时域信号,而短块较适合变化相对较快的时域信号。长块长度为2048个点,短块长度为256个点。
加窗
AAC用到两种窗函数,分别为Kaiser-Bessel 类(KBD)窗和正弦窗。KBD窗如下所示:
其定义为:
其中 使用KBD窗时,window_shape
为 1
,正弦窗如下所示:
其定义为:
使用正弦窗时,window_shape
为 0
。另定义:
对应于四种不同的窗序列分别进行不同的加窗变换:
- 仅有长块:
window_shape
为1
:window_shape
为0:- 加窗后,时域信号可用
w(n)
表示为:
- 长开始块:
window_shape
为1
:window_shape
为0
:- 加窗后,时域信号可用
w(n)
表示为:
- 只有短块:
window_shape
为1
:window_shape
为0
:- 加窗后,时域信号可用
w(n)
表示为:
- 长结束块:
window_shape
为1
:window_shape
为0
:- 加窗后,时域信号可用
w(n)
表示为:
覆盖叠加
在加窗完成后得到的时域信号值z经过前后窗相互叠加计算,得出最后的PCM值: