[原创]桓泽学音频编解码(1):MPEG1 MP3 系统算法分析
[原创]桓泽学音频编解码(2):AC3/Dolby Digital 系统算法分析
[原创]桓泽学音频编解码(3):AAC 系统算法分析
[原创]桓泽学音频编解码(4):MP3 和 AAC 中反量化原理,优化设计与参考代码中实现
MDCT
MDCT(Modified Discrete Cosine Transform)被广泛应用于mp3,aac,ac-3,ogg,avs audio等音频压缩标准之中。但他们在每个标准中的
MDCT的公式
IMDCT的公式
在mp3 decoder中n = 12或36
在AAC decoder中 n = 256或2048
在AC-3 decoder中 n=256或512
输入: n个数据.
输出:n/2个数据(50%交叠)
直接实现:
C算法[1]
for(p= 0;p<N;p++)
{
sum = 0.0;
for(m=0;m<N/2;m++)
sum += in[i+3*m] * cos( PI/(2*N)*(2*p+1+N/2)*(2*m+1) );
tmp[p] = sum * win[block_type][p] ;
}
直接计算的运算量是
N2/2次乘法和N(N-1)/2次加法
快速算法
目前的快速算法有三类
1. 基于FFT
2. 基于DCT II
3. 收敛的快速MDCT算法
表1 直接计算和快速算法的运算量比较 |
长度N |
实数乘法 |
实数加法 |
||||
直接计算 |
快速算法 |
比值 |
直接计算 |
快速算法 |
比值 |
|
128 |
8192 |
896 |
9.1 |
8192 |
832 |
9.8 |
256 |
32768 |
2048 |
16 |
32640 |
1920 |
17 |
512 |
131072 |
4608 |
28.4 |
130816 |
4352 |
30.1 |
1024 |
524288 |
10240 |
51.2 |
523776 |
9728 |
53.8 |
2048 |
2097152 |
22528 |
93 |
2096128 |
21504 |
97.5 |
基于FFT的快速算法[3]
[2]
[4]
Step 1: Input combination
Step 2: GDFT
Step 2.1: Pre-processing:
Step 2.2: FFT:
Step 2.3: Post-processing:
Step 3: Windowing and de-interleaving:
Step 4: Overlap and Add
[4]Anup K.C and Ajay Kumar Bangla,”A NEW EFFICIENT IMPLEMENTATION OF TDAC SYNTHESIS FILTERBANK BASED ON RADIX-2 FFT”
[1] mp3 iso参考软件
[2] A VLSI IMPLEMENTATION OF MPEG-2 AAC DECODER SYSTEM
[3] P. Duhamel, Y. Mahieux, and J. P. Petit, “A fast algorithm for the implementation of filter banks based on ‘time domain aliasing cancellation’” Proc. ICASSP, May 1991, pp.2209-2212.