MP3压缩算法

mp3也是有同步字的

MP3 有11个bit的同步字
AAC ADTS是有头的,有同步字来标示一个帧的开始
AMR(cbr,vbr)也是有头的

http://blog.csdn.net/sunnylgz/article/details/7615410



MP3编码主要由3大功能模块组成,包括混合滤波器组(子带滤波器和MDCT),心理声学模型,量化编码(比特和比特因子分配和哈夫曼编码)。
1.      混合滤波器组。这部分包括子带滤波器组和MDCT两部分。子带滤波器组编码完成样本信号从时域到频域的映射,并将规定的音频信号通过带通滤波器组分解成32个子带输出。子带滤波器组输出的32个子带是等带宽的,而由心理声学模型得出的临界带宽则不是等带宽的,所以为了使得进行编码的各个比例因子带与临界频带相匹配,需要对每个子带信号做MDCT变换。将子带滤波器组的输出送到MDCT滤波器组后,每组将细分为18条频线,共产生576条频线。然后利用心理声学模型中计算出来的子带信号的信掩比,决定分配给576条谱线的比特数。




2.      心理声学模型。心理声学模型利用了人耳听觉系统的遮蔽效应特性,移除大量的不相关信号,从而达到压缩音频数据的效果。为了精确地计算遮蔽阈值,要求信号有更好的频域解析度,因此在使用心理声学模型前先对信号进行傅立叶变换。MPEG-I提供了两种心理声学模型,第一种模型计算简单,在高比特率编码时提供适当精度,第二种模型比较复杂,一般在较低比特率编码时使用。MP3编码中一般使用心理声学模型二。心理声学模型的目的就是求出各个子带的掩蔽域值,并以此控制量化过程。心理声学模型实现过程一般是先用FFT求出信号的频谱特性,根据频谱特性找出各频率点上的音调成分(有些称为音乐成分)和非音调成分(或称噪音成分);根据掩蔽域曲线确定各个音调成分和非音调成分在其它频率点的掩蔽域值;最后求出各频率点的总体掩蔽域,并折算到编码子带中。对于子带滤波器组输出的谱值量化后产生的噪声,如果能够被控制在掩蔽域值以下,则最终的压缩数据被解码后的结果与原始信号可以不加区分。一个给定信号的掩蔽能力取决于它的频率和响度,所以心理声学模型的最终输出是信掩比SMR(signal-to-maskradio),即信号强度与掩蔽阈值的比率。




3.      量化编码。量化编码使用一个三层迭代循环模型来实现比特分配和量化。这三层包括:帧循环,外层循环和内层循环。帧循环复位所有的迭代变量,计算能够提供给每节数据的最大比特数,然后调用外层迭代模型;外层迭代模型首先使用内层迭代模型,内层迭代模型对输入矢量进行量化,通过递增量化步长使量化输出能够在一定的比特位数限制之内被编码。哈夫曼编码对量化的最大值有限制,所以需要判断所有的量化值是否超过限制,如果超过限制,则内层迭代循环需要递增量化步长,重新量化。然后确定哈夫曼编码的位数,使其所占的比特数小于由帧循环计算出的每节编码所能提供的最大比特数,否则也要增加量化步长重新量化。当量化满足要求后,存储最终的比例因子数值,跳出外层循环,并在帧循环中计算存储每节数据所用的比特位数。 
阅读更多
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页