[原创]桓泽学音频编解码(9):MP3 多相滤波器组算法分析

1. 多相滤波器组原理概述

11172-3是基于分析综合系统的音频压缩标准,通过多相滤波器把时域信号等分成N个频带的频率信号。再对频域内的信号进行压缩处理。而在解码端,在对频域内的信号进行解码处理后在通过综合滤波器组把频域信号转换成时域信号。原理图如下

 

[原创]桓泽学音频编解码(9):MP3 多相滤波器组算法分析_第1张图片

2. 多相滤波器组算法应用

11172-3层1,层2,层3都使用了分析综合滤波器。编码端分析滤波器把每一帧时域信号分成32个子带的时域信号。对于层1,1帧数据384个,32个子带,每个子带12个数据。层2和层3每帧36个数据,每个子带36个数据。

在编码端需要进行的3步处理是

Step1:Zi = Ci * Xi  i=0 ~ 511

Step2:Yi=

Step3:Si=

   i=0 ~ 31

X0-31是32个时域数据,移位进入512点的fifo中,S0~S31是32个子带频域信号。C0~C511是11172-3预定义的512个窗系数。Mik=cos((2i+1)*(k-16)*π)/64).是分析矩阵系数.

在解码端综合滤波器组把32个子带的频域数据转换到时域中。11172-3标准给出的解码流程图如下

 

[原创]桓泽学音频编解码(9):MP3 多相滤波器组算法分析_第2张图片

Ui是窗系数,Nik是余弦矩阵,可以看出解码过程大致尚可分为 4 项,依序为搬移、余弦转换、矩阵相乘及加总运算。下图可以更详细的看出数据通道整个综合滤波器的处理过程。

 

[原创]桓泽学音频编解码(9):MP3 多相滤波器组算法分析_第3张图片

    

Sk是32个频域系数(层1层2是直接从去交叠处理后获得,层3是IMDCT 运算完后存在Buffer 里面的32个子频带值) 。Ui是综合窗系数。

3 C参考代码实现:

ISO的参考代码在函数 SubBandSynthesis ()内实现综合滤波器组的功能。代码注释框图如下。

 

[原创]桓泽学音频编解码(9):MP3 多相滤波器组算法分析_第4张图片

输入:32位浮点频域谱线

中间变量:32位浮点

输出:32位整点时域音频数据

4 性能分析

 略

5 参考文献

 [1] ISO/IEC 11172-3. “Coding of moving picture and associated audio for digital storage media at up to about 1.5Mbit/s — Part 3 audio”, November 1991.

[2] Hui Li, Xuefeng Liu, “Perceptual Audio Codec” ENEE408FFinal Report

[3] 郑君圣,MPEG-1 layer3 压缩/解压缩

你可能感兴趣的:(算法)