AC3 IMDCT

 

AC3 encoder 在进行MDCT时,使用两种长度的block。

512 samples的block用于输入信号频谱是stationary,或者在时间上变化缓慢。在fs 为48k时,使用512 samples block产生256个transform coefficients,对应频率分辨率为24k/256 =93.75, 时间分辨率为1/93.75=10.7ms

256 samples的block用于输入信号在时间上变化较快,能够产生较小的时间分辨率,可以减小pre-echo的长度。在fs 为48k时,使用256samples block产生256个transform coefficients,对应频率分辨率为24k/128 =187.5, 时间分辨率为1/187.5=5.3ms

在encoder端会分析输入信号的频谱或时间变化特性来选择合适的block 长度。在bitstream中,每个channel包含一个bit的字段blksw[ch]来标识选择哪个block.

当blksw=0时,使用512 sample block,当blksw=1时,使用256 samples block.

AC3 IMDCT:

当N=512时,在decoder使用N/4点complex IFFT做pre-twiddle 和post-twiddle来计算IMDCT.

512 点进行IMDCT计算过程如下:

1)定义MDCT transform coefficients X[k],k=0,1,2....N/2-1

2)pre-IFFT complex multiply

2)进行complex IFFT

3)post-IFFT complex multiply

4) window and de-interleave

5)overlap and add

当前block的first half 和前一个block的second half相加来消除时域混叠(TDAC)

256点进行IMDCT计算过程如下:

1)定义MDCT transform coefficients X[k],k=0,1,2....N/2-1

 

2)pre-IFFT complex multiply

 

3)complex IFFT

4)post-IFFT complex multiply

5)window and de-interleave

6) overlap and add

 

posted @ 2018-04-17 23:11  fellow_jing  阅读(341)  评论(0编辑  收藏  举报