MP3解码原理
mp3解码原理

mp3解码原理
MP3解码原理是指将MP3格式压缩的音频文件转换为原始音频数据的过程。
MP3是一种有损压缩技术,通过去除人耳重要性较低的音频信号和减少冗余数据来减小文件大小。
下面是MP3解码的基本步骤:
1. 分析压缩数据:将MP3文件的压缩数据进行分析,提取出有关音频信息的数据。
2. 解压缩:使用解压缩算法对压缩的音频数据进行解压,恢复成原始音频数据。
3. 重构信号:将解压缩的音频数据进行重构,恢复出原始的声音信号。
4. 反量化:将解压缩后的音频数据进行反量化,恢复出原始采样点的数值。
5. 逆变换:使用逆变换算法对反量化的音频数据进行逆变换,恢复出时域的音频样本。
6. 重建滤波:通过应用特定的重建滤波器将逆变换得到的音频样本进行滤波处理。
7. 输出音频:最终将重建滤波后的音频样本输出,生成原始的音频文件。
通过以上步骤,MP3解码器可以将MP3文件解码成原始的音频数据。
这些原始音频数据可以被音频播放器或其他应用程序使用来播放或处理音频文件。
mp3解码算法原理详解

MPEG1 Layer3 (MP3)解码算法原理详解本文介绍了符合ISO/IEC 11172-3(MPEG 1 Audio codec Layer I, Layer II and Layer III audio specifications) 或 ISO/IEC 13818-3(BC Audio Codec)的音频编码原理。
通过madlib解码库进行实现。
1、程序系统结构mp3解码流程图其中同步及差错检查包括了头解码模块在主控模块开始运行后,主控模块将比特流的数据缓冲区交给同步及差错检查模块,此模块包含两个功能,即头信息解码及帧边信息解码,根据它们的信息进行尺度因子解码及哈夫曼解码,得出的结果经过逆量化,立体声解码,混淆缩减,IMDCT,频率反转,合成多相滤波这几个模块之后,得出左右声道的PCM码流,再由主控模块将其放入输出缓冲区输出到声音播放设备。
2、主控模块主控模块的主要任务是操作输入输出缓冲区,调用其它各模块协同工作。
其中,输入输出缓冲区均由DSP控制模块提供接口。
输入缓冲区中放的数据为原始mp3压缩数据流,DSP控制模块每次给出大于最大可能帧长度的一块缓冲区,这块缓冲区与上次解帧完后的数据(必然小于一帧)连接在一起,构成新的缓冲区。
输出缓冲区中将存放的数据为解码出来的PCM数据,代表了声音的振幅。
它由一块固定长度的缓冲区构成,通过调用DSP控制模块的接口函数,得到头指针,在完成输出缓冲区的填充后,调用中断处理输出至I2S接口所连接的音频ADC芯片(立体声音频DAC和DirectDrive耳机放大器)输出模拟声音。
3、同步及差错检测同步及差错检测模块主要用于找出数据帧在比特流中的位置,并对以此位置开始的帧头、CRC校验码及帧边信息进行解码,这些解码的结果用于后继的尺度因子解码模块和哈夫曼解码模块。
Mpeg1 layer 3的流的主数据格式见下图:主数据的组织结构图其中granule0和granule1表示在一帧里面的粒度组1和粒度组2,channel0和channel1表示在一个粒度组里面的两个通道,scalefactor为尺度因子quantized value为量化后的哈夫曼编码值,它分为big values大值区和count1 1值区CRC校验:表达式为X16+X15+X2+13.1 帧同步帧同步目的在于找出帧头在比特流中的位置,ISO 1172-3规定,MPEG1 的帧头为12比特的“1111 1111 1111”,且相邻的两个帧头隔有等间距的字节数,这个字节数可由下式算出:N= 144 * 比特率 / 采样率如果这个式子的结果不是整数,那么就需要用到一个叫填充位的参数,表示间距为N +1。
MP3解码算法原理解析

MP3解码算法原理解析1.压缩过程:MP3解码算法采用了一种称为“感知编码”的方法,这种方法可以根据人耳对声音敏感度的特点选择性地减少音频数据。
算法首先进行时域分析,将音频信号转换为频域表示,即将音频信号分解为一系列的频率分量。
然后,通过应用快速傅里叶变换将信号从时域转换到频域。
接下来,使用掩模(掩蔽阈值)来决定哪些频率分量可以被保留,哪些可以被丢弃。
掩模根据人耳对声音的感知灵敏度进行计算,对于较高音量的频率分量,掩模较高,而对于较低音量的频率分量,掩模较低。
根据掩模的结果,选择性地丢弃一些低音质部分。
接下来,对于保留的频率分量,使用非线性量化将其量化为一定数量的码字,以减少数据的表示大小。
非线性量化使用了较细的量化步长来表示低音质的区域,而使用较大的量化步长来表示高音质的区域,以更有效地利用比特位。
最后,使用霍夫曼编码对量化后的频率分量进行编码,以进一步减少数据的大小。
霍夫曼编码将出现频率较高的码字表示为较短的代码,而出现频率较低的码字表示为较长的代码,以最大程度地减少整体的数据大小。
2.解压缩过程:解压缩过程的目标是将压缩后的数据还原为原始音频信号。
首先,对于编码后的数据,使用霍夫曼解码将其还原为量化后的频率分量。
然后,使用逆量化过程将量化后的数据还原到原始的频率分量。
接下来,使用逆掩模过程,根据之前计算的掩模信息,将频率分量重新调整为原始音频的频域表示。
逆掩模过程恢复被掩模的频率分量,以便于后续的时域合成。
最后,使用逆傅立叶变换将频域信号转换回时域信号,并应用一些滤波器以平滑输出的音频信号。
这些滤波器可以去除可能出现的伪音频效应,并改善音频的质量。
综上所述,MP3解码算法通过压缩音频数据的方法实现了对音频的高效编码。
该算法通过应用感知编码,非线性量化和霍夫曼编码等技术来减少数据的表示大小。
通过解码过程,原始的音频信号可以被还原出来,使得人们可以在较小的文件大小下享受高质量的音频体验。
mp3的工作原理

mp3的工作原理
MP3技术是指将音频信号以数字方式进行编码、压缩和存储
的技术。
它的工作原理可以分为编码和解码两个过程。
编码过程是将音频信号转换成数字形式的过程。
首先,音频信号会经过采样,即将连续的模拟音频信号转换为离散的数字信号。
然后,对采样后的数字信号进行量化处理,即将连续的取样值离散化为有限个符号值。
接着,对量化后的信号进行编码,将离散的符号值转换为比特流。
编码常使用有损压缩算法,如MP3算法中的MPEG-1音频层III算法,通过去除人耳无法察
觉的音频信号信息和利用人耳的听觉特性来实现高比特压缩。
解码过程则是将编码后的比特流还原为音频信号的过程。
首先,解码器会将比特流解析为离散的符号值。
然后,对解析得到的符号值进行解量化处理,将离散的符号值恢复为连续的取样值。
最后,通过重建取样值序列,将连续的数字信号转换为模拟音频信号。
在整个过程中,MP3技术利用了人耳的听觉特性,如掩蔽效
应和频率分辨能力差异,来减少对音质的影响。
通过合理地削减和压缩信号,移除不可听见的信号部分,MP3技术实现了
高比特压缩,并在一定程度上保持了音质的可接受性。
MP3播放器的工作原理

MP3播放器的工作原理MP3播放器是一种便携式音频设备,广泛应用于日常生活中的音乐播放、语音记录等场景。
它通过一系列的工作原理和技术实现了音频的存储、解码和播放。
本文将详细介绍MP3播放器的工作原理,包括音频编码、存储、解码和输出等方面。
一、音频编码MP3播放器中的音频文件通常采用MP3格式进行编码,MP3是一种有损压缩音频格式,能够在保持较高音质的同时减小文件大小。
音频编码的过程主要包括采样、量化和压缩三个步骤。
1. 采样:音频信号在进入MP3播放器之前,首先需要进行采样。
采样是将连续的模拟音频信号转换为离散的数字信号的过程。
在采样过程中,音频信号以一定的时间间隔被采集,并转换为数字形式的样本。
2. 量化:采样得到的音频信号是模拟信号的数字表示,为了减小文件大小,需要对音频信号进行量化。
量化是将连续的音频信号分为若干个离散的量化级别,以减小数据量。
量化级别越多,音频质量越好,但文件大小也越大。
3. 压缩:量化后的音频信号仍然占据较大的空间,为了进一步减小文件大小,需要对音频信号进行压缩。
MP3播放器使用了一种称为MPEG(Moving Picture Experts Group)的压缩算法,该算法通过利用人耳对音频信号的感知特性,去除一些听不到或听起来不明显的音频信号,从而实现压缩。
二、音频存储MP3播放器中的音频文件通常存储在闪存芯片中,闪存芯片是一种非易失性存储介质,具有容量大、读写速度快、抗震抗摔等特点。
音频文件通过USB接口或者内置存储卡读取到闪存芯片中。
1. USB接口:MP3播放器通常配备了USB接口,用户可以通过USB线将MP3播放器连接到电脑上,然后将音频文件传输到闪存芯片中。
USB接口还可以用于充电和数据传输。
2. 存储卡:MP3播放器还可以通过内置的存储卡来存储音频文件。
常见的存储卡类型有Micro SD卡、TF卡等。
用户可以将存储卡插入MP3播放器中,然后将音频文件复制到存储卡中。
MP3解码原理范文

MP3解码原理范文MP3解码是将存储在MP3文件中的数字音频数据转换回模拟音频信号的过程。
MP3(MPEG-1 Audio Layer 3)是一种有损压缩音频格式,它能够大幅度减小音频文件的大小,同时尽可能地保持音频质量。
MP3解码器是负责解压缩MP3文件并将其转换为可听的音频信号的软件或硬件部件。
1.分帧:MP3文件中的音频数据被分为短时间的音频帧。
每个音频帧通常包含1152个采样点,每个采样点表示一个瞬时声音值。
2.预处理:对每个音频帧进行预处理,包括去掉低频和高频信号,使用哈夫曼编码压缩剩余信号。
3.哈夫曼解码:对压缩的剩余信号进行哈夫曼解码。
哈夫曼编码是一种变长编码方式,它根据信号出现的频率分配不同长度的编码,以尽可能减小数据的传输量。
4.反量化:使用标准化的量化矩阵对剩余信号进行反量化。
量化是指将连续的声音波形转换为离散的数字值的过程。
5. 逆短时傅里叶变换(Inverse Short-Time Fourier Transform, ISTFT):将反量化的剩余信号通过逆短时傅里叶变换转换为时域信号。
6.合成:将每个音频帧的时域信号进行合成,形成连续的音频信号。
以上是MP3解码的基本原理。
通过这些步骤,MP3解码器能够将压缩后的MP3文件恢复为原始的音频信号。
然而,MP3解码过程中会有一些信息的损失,这是因为MP3是一种有损压缩格式。
压缩算法会去除一些听觉上不重要的信号,以减小文件大小。
因此,解码后的音频质量相对于原始未压缩的音频可能会有一定程度的损失。
除了基本的解码流程外,还有一些其他的高级MP3解码技术,例如联合立体声(Joint Stereo)处理、音频扩展(Audio Extension)等。
联合立体声处理可以识别和利用音频信号的空间相关性,以进一步减小文件大小和提高音频质量。
音频扩展则可以通过添加高频和低频信号来改善音质,尤其是在低比特率下。
总结起来,MP3解码是将存储在MP3文件中的数字音频数据解压缩,并通过一系列的处理步骤转换为可听的模拟音频信号的过程。
MP3解码原理范文
MP3解码原理范文1. 解析文件结构:MP3文件由一系列帧组成,每一帧包含有关音频数据的信息。
解码器首先分析文件头部,确定音频参数,如采样率、比特率、声道数等。
2. 帧同步:解码器从文件中读取每一帧,通过帧同步标识进行帧的边界同步。
每一帧的长度固定,帧同步标识的作用是在文件中定位帧的位置。
3. 解析帧结构:解码器解析每一帧的结构,在帧头中包含有关音频数据的详细信息,如声道模式、采样率等。
根据这些信息,解码器可以正确地解码音频数据。
4. 解码压缩数据:MP3使用了一种被称为MPEG音频层III的压缩算法。
解码器对压缩的数据进行解码,还原为原始的音频数据。
解码算法主要包括子带滤波、量化、哈夫曼编码和逆变换等步骤。
5. 还原音频数据:解码器将解码后的音频数据转换为模拟信号,输出到音频设备进行播放。
还原过程包括去量化、逆子带滤波和逆变换等步骤。
子带滤波是MP3解码过程中的重要步骤之一、在压缩编码过程中,音频信号被分解成多个子频带,每个子频带对应不同频率范围的音频信号。
解码器使用滤波器对这些子频带进行滤波,以还原原始音频信号的频谱信息。
量化过程是对音频信号进行降低精度的处理。
在压缩编码过程中,音频信号的幅度值被量化为一系列离散的值。
解码器通过逆量化过程将这些离散值还原为原始的幅度值。
在压缩编码过程中,使用了哈夫曼编码对量化后的音频数据进行进一步的压缩。
解码器通过解码哈夫曼编码还原量化数据。
最后,解码器对还原的音频数据进行逆变换,将频域信号转换为时域信号,以便于音频的播放和处理。
总之,MP3解码过程涉及文件结构解析、帧同步、帧结构解析、解码压缩数据、还原音频数据等多个步骤。
通过这些步骤,解码器可以将经过压缩编码的MP3音频文件还原为原始的音频数据,实现高质量的音频播放。
音频解码器原理解析
音频解码器原理解析随着数字音频的普及和发展,音频解码器作为数字音频播放的核心组件,扮演着十分重要的角色。
本文将对音频解码器的原理进行解析,以帮助读者更好地理解音频解码的过程。
一、概述音频解码器是一种可以将压缩后的音频数据还原为原始音频信号的设备或软件。
压缩后的音频数据通常以数字格式存储,包含了音频信号的各种特征和信息。
解码器通过一系列的处理过程,将压缩音频数据解码为原始的模拟音频信号,从而实现音频的播放。
二、音频解码原理1. 数据解压缩音频解码的第一步是对压缩的音频数据进行解压缩。
常见的音频压缩格式有MP3、AAC等,这些格式通过降低数据的冗余性和重复性,以减小音频数据的文件大小。
解码器需要先识别压缩格式,并对其进行解码,将压缩的音频数据还原成原始的数据流。
2. 数字信号处理解码器接收到解压缩的音频数据后,需要对其进行一系列的数字信号处理。
这包括滤波、混响、均衡器等处理过程,通过调整音频信号的频率、幅度、相位等参数,对音频信号进行优化和增强,提升音频的音质和还原度。
3. 数字到模拟转换解码器处理完音频数据的数字信号后,需要将其转换为模拟信号,以便输出到扬声器或耳机中进行播放。
这一过程称为数字到模拟转换(DAC),解码器通过DAC芯片将数字信号转换为模拟电压信号,再经过功放等电路进行放大,最终驱动扬声器发出声音。
三、音频解码器的分类根据解码器的实现方式和应用领域,音频解码器可以分为硬件解码器和软件解码器两类。
1. 硬件解码器硬件解码器通常以芯片的方式集成在音频播放设备中,如手机、电脑、音频播放器等。
这些设备通过硬件解码器将压缩后的音频数据解码为模拟信号,再通过内建的扬声器或耳机输出声音。
硬件解码器具有高效稳定的特点,适合用于实时播放和高质量音频输出。
2. 软件解码器软件解码器则是以软件程序的形式运行在计算机或移动设备上。
通过在计算机中安装解码软件,用户可以将压缩的音频文件解码为原始音频信号。
软件解码器具有较好的兼容性和灵活性,能够支持多种音频格式和编码算法。
MP3工作原理[图解]
用户输入(如键盘) RS232LCDARM7TDMIUSBMP3解码/DAC/音频放大器IDE连接器SDRAMMP3 全称是MPEG Audio Layer 3,MPEG 压缩格式是由运动图象专家组(Motion Picture Experts Group)制定的关于影像和声音的一组标准,其中MP3 就是为了压缩声音信号而设计的是一种新的音频信号压缩格式标准。
CD 唱片采样率频率为 44.1MHz, 16Bits, 数据量为 1.4Mbps,而相应的 MP3 数据量仅为112kbps 或者 128kbps,是原始数据量的 1/12。
也就是说传统的一张 CD 现在可以存放 10 倍甚至更多容量的音乐,但是在人耳听起来, 感受到的音乐效果却没有什么不同。
MP3 随身听的工作原理,其实很简单,反正就是有一块不知什么型号的控制芯片,控制解码芯片和 LCD 液晶屏,由解码芯片把内置闪存或者是外插闪存卡之中的 MP3 文件解码,然后经数模转换,最后从耳机输送到我们的耳朵中。
也就是说一共没几块芯片。
你如果拆一个 MP3 随身听看看,你会发现里面比较大的半导体芯片惟独 4、5 片。
现在新一代的 MP3 随身听在技术上是非常先进的,最具代表性的是 NOMAD II,基于美国 CirrusLogic 最新的 EP7209 MCU (微程序控制器)芯片组,它的作用实际上就像电脑里的 CPU,经过软件解码,可以支持多种网络音乐格式,包括 MP3,以及日后的 WMA 格式。
而国内使用这种芯片创造的 MP3 随身听也即将问世。
起初, MP3 文件只能由电脑来播放,而随着互联网的发展,文件小、音质可与 CD 媲美的 MP3 音乐越来越适合人们在 Internet 上传递,而广为流行。
再加之全世界范围内的 MP3 下载网站泛滥,使人们传统的听音乐习惯发生了改变。
MP3 的逐渐流行,随时随地欣赏MP3 音乐的需求越来越高,这就创造了MP3 播放器的市场。
mp3 编码原理
mp3 编码原理MP3是一种音频压缩技术,其全称是动态影像专家压缩标准音频层面3(Moving Picture Experts Group Audio Layer III),简称为MP3。
它被设计用来大幅度地降低音频数据量。
利用MPEG Audio Layer 3 的技术,将音乐以1:10 甚至1:12 的压缩率,压缩成容量较小的文件,而对于大多数用户来说重放的音质与最初的不压缩音频相比没有明显的下降。
以下是MP3编码的基本原理:1. 采样:这是音频编码的第一步。
MP3在创建时,会以160000Hz的频率对音频信号进行采样。
这意味着每秒钟会获取160000个样本。
2. 量化:在采样后,每个样本都会被转化为一个数字。
在MP3中,这个数字的范围是-32768到32767。
这个过程被称为量化。
3. 编码:量化后的数据需要进行编码,才能被计算机理解和存储。
在MP3中,使用了Huffman编码和Run-Length Encoding(RLE)等压缩技术。
4. 心理声学模型:这是MP3编码中最核心的部分。
通过使用心理声学模型,MP3编码器可以预测哪些频率和声音人类难以察觉,从而进一步压缩数据。
5. 压缩:经过心理声学模型处理后,音频数据会被进一步压缩,以减少存储空间的需求。
6. 解码:当播放MP3时,解码器会逆转上述过程,从压缩的音频数据中还原出原始的音频信号。
7. 解码器:最后,音频信号会被送入扬声器或其他设备进行播放。
需要注意的是,这个过程是一个复杂且精细的过程,涉及到许多数字信号处理和心理学知识。
尽管如此,它仍然是现代音频编码的基础之一,影响了许多其他的音频编码和压缩技术。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
MPEG1 Layer3 (MP3)解码算法原理详解1、程序系统结构mp3解码流程图其中同步及差错检查包括了头解码模块在主控模块开始运行后,主控模块将比特流的数据缓冲区交给同步及差错检查模块,此模块包含两个功能,即头信息解码及帧边信息解码,根据它们的信息进行尺度因子解码及哈夫曼解码,得出的结果经过逆量化,立体声解码,混淆缩减,IMDCT,频率反转,合成多相滤波这几个模块之后,得出左右声道的PCM码流,再由主控模块将其放入输出缓冲区输出到声音播放设备。
2、主控模块主控模块的主要任务是操作输入输出缓冲区,调用其它各模块协同工作。
其中,输入输出缓冲区均由DSP控制模块提供接口。
输入缓冲区中放的数据为原始mp3压缩数据流,DSP控制模块每次给出大于最大可能帧长度的一块缓冲区,这块缓冲区与上次解帧完后的数据(必然小于一帧)连接在一起,构成新的缓冲区。
输出缓冲区中将存放的数据为解码出来的PCM数据,代表了声音的振幅。
它由一块固定长度的缓冲区构成,通过调用DSP控制模块的接口函数,得到头指针,在完成输出缓冲区的填充后,调用中断处理输出至I2S接口所连接的音频ADC芯片(立体声音频DAC和DirectDrive 耳机放大器)输出模拟声音。
3、同步及差错检测同步及差错检测模块主要用于找出数据帧在比特流中的位置,并对以此位置开始的帧头、CRC 校验码及帧边信息进行解码,这些解码的结果用于后继的尺度因子解码模块和哈夫曼解码模块。
Mpeg1 layer 3的流的主数据格式见下图:主数据的组织结构图其中granule0和granule1表示在一帧里面的粒度组1和粒度组2,channel0和channel1表示在一个粒度组里面的两个通道,scalefactor为尺度因子quantized value为量化后的哈夫曼编码值,它分为big values大值区和count1 1值区CRC校验:表达式为X16+X15+X2+13.1 帧同步帧同步目的在于找出帧头在比特流中的位置,ISO 1172-3规定,MPEG1 的帧头为12比特的“1111 1111 1111”,且相邻的两个帧头隔有等间距的字节数,这个字节数可由下式算出:N= 144 * 比特率 / 采样率如果这个式子的结果不是整数,那么就需要用到一个叫填充位的参数,表示间距为N +1。
3.2 头信息解码头信息解码目的是找出这一帧的特征信息,如采样率,是否受保护,是否有填充位等。
头信息见下图:其长度为4 字节,数据结构如下:typedef struct tagHeader {unsigned int sync : 11 ; / / 同步信息unsigned int version : 2 ; / / 版本unsigned int layer : 2 ; / / 层unsigned int error2protection : 1 ; / / CRC校正unsigned int bit2rate2index : 4 ; / / 位率索引unsigned int sample2rate2index : 2 ; / / 采样率索引unsigned int padding : 1 ; / / 空白字unsigned int extension : 1 ; / / 私有标志unsigned int channel2mode : 2 ; / / 立体声模式unsigned int mode extension : 2 ; / / 保留unsigned int copyright : 1 ; / / 版权标志unsigned int original : 1 ; / / 原始媒体unsigned int emphasis : 2 ; / / 强调方式} HEADER3.3 帧边信息解码帧边信息解码的主要目的在于找出解这帧的各个参数,包括主数据开始位置,尺度因子长度等。
帧边信息如下图所示:帧边信息(side_infomation)表3.4 main_data_beginmain_data_begin(主数据开始)是一个偏移值,指出主数据是在同步字之前多少个字节开始。
需要注意的是,1.帧头不一定是一帧的开始,帧头CRC校验字和帧边信息在帧数据中是滑动的。
2.这个数值忽略帧头和帧边信息的存在,如果main_data_begin = 0, 则主数据从帧边信息的下一个字节开始。
参见下图:同步示意图3.5 block_typeblock_type指出如下三种块类型:block_type = 0 长块block_type = 1 开始块block_type = 3 结束块block_type = 2 短块在编码过程中进行IMDCT 变换时,针对不同信号为同时得到较好的时域和频域分辨率定义了两种不同的块长:长块的块长为18个样本,短块的块长为6个样本。
这使得长块对于平稳的声音信号可以得到更高的频率分辨率,而短块对跳变信号可以得到更高的时域分辨率。
由于在短块模式下,3 个短块代替1个长块,而短块的大小恰好是一个长块的1/3,所以IMDCT 的样本数不受块长的影响。
对于给定的一帧声音信号,IMDCT 可以全部使用长块或全部使用短块,也可以长短块混合使用。
因为低频区的频域分辨率对音质有重大影响,所以在混合块模式下,IMDCT对最低频的2个子带使用长块,而对其余的30个子带使用短块。
这样,既能保证低频区的频域分辨率,又不会牺牲高频区的时域分辨率。
长块和短块之间的切换有一个过程,一般用一个带特殊长转短(即,起始块block_type = 1)或短转长(即终止块,block_type = 3)数据窗口的长块来完成这个长短块之间的切换。
因此长块也就是包括正常窗,起始块和终止块数据窗口的数据块;短块也包含18个数据,但是是由6个数据独立加窗后在经过连接计算得到的。
3.6 big_values, count1每一个粒度组的频谱都是用不同的哈夫曼表来进行编码的。
编码时,把整个从0 到奈奎斯特频率的频率范围(共576个频率线)分成几个区域,然后再用不同的表编码。
划分过程是根据最大的量化值来完成的,它假设较高频率的值有较低的幅度或者根本不需要编码。
从高频开始,一对一对的计算量化值等于“0”的数目,此数目记为“rzero”。
然后4个一组地计算绝对值不超过“1”的量化值(也就是说,其中只可能有-1,0 和+1共3 个可能的量化级别)的数目,记为“count1”,在此区域只应用了 4 个哈夫曼编码表。
最后,剩下的偶数个值的对数记为“big values”,在此区域只应用了32 个哈夫曼编码表。
在此范围里的最大绝对值限制为8191。
此后,为增强哈夫曼编码性能,进一步划分了频谱。
也就是说,对big values的区域(姑且称为大值区)再细化,目的是为了得到更好的错误顽健性和更好的编码效率。
在不同的区域内应用了不同的哈夫曼编码表。
具体使用哪一个表由table_select给出。
从帧边信息表中可以看到:当window_switch_flag == 0时,只将大值区在细分为2个区,此时region1_count无意义,此时的region0_count的值是标准默认的;但当window_switch_flag == 1时再将大值区细分为3 个区。
但是由于region0_count 和region1_count是根据从576个频率线划分的,因此有可能超出了big_values *2的范围,此时以big_values *2 为准. region0_count 和region1_count表示的只是一个索引值,具体频带要根据标准中的缩放因子频带表来查得.参见下图:缩放因子、大值区、1值区和零值区分布图3.7 处理流程4、缩放因子(scale factor)解码缩放因子用于对哈夫曼解码数据进行逆量化的样点重构。
根据帧边信息中的scalefactor_compress 和标准中的对应表格来确定的slen1和slen2 对缩放因子进行解码,即直接从主数据块中读取缩放因子信息并存入表scalefac_l[gr][ch][sfb]和scalefac_s[gr][ch][sfb]中。
对第2 粒度组解码时,若为长块,则必须考虑尺度因子选择信息。
4.1 尺度因子带(scalefactor-band)在mpeg layer 3中576条频率线根据人耳的听觉特性被分成多个组,每个组对应若干个尺度因子,这些组就叫做尺度因子带,每个长窗有21个尺度因子带而每个短窗有12个尺度因子带。
4.2 scfsiscfsi(尺度因子选择信息)用于指出是否将粒度组1的尺度因子用于粒度组2。
如果为0表示不用,则在比特流中需读取粒度组2的尺度因子。
4.3 处理流程缩放因子解码流程图5、哈夫曼解码哈夫曼编码是一种变长编码,在mp3哈夫曼编码中,高频的一串零值不编码,不超过1的下一个区域使用四维哈夫曼编码,其余的大值区域采用二维哈夫曼编码,而且可选择地分为三个亚区,每个有独立选择的哈夫曼码表。
通过每个亚区单独的自适应码表,增强编码效率,而且同时降低了对传输误码的敏感度。
在程序实现上,哈夫曼表逻辑存储采用了广义表结构,物理存储上使用数组结构。
查表时,先读入4bit数据,以这4bit数据作为索引,其指向的元素有两种类型,一种是值结构,另一种是链表指针式结构,在链表指针式结构中给出了还需要读取的bit数,及一个偏移值。
如果索引指向的是一个值结构,则这个值结构就包含了要查找的数据。
如果索引指向的是一个链表指针式结构,则还需再读取其中指定的比特数,再把读取出的比特数同偏移值相加,递归的找下去,直到找到值结构为止。
5.1 处理流程6、逆量化6.1 逆量化公式逆量化由下面公式算出:短窗模式:长窗模式:其中:is[i] :由huffman编码构造的频率线sbg :subblock_gainscalefac_multiplier:= (scalefac_scale + 1) / 2 其它值均可在帧边信息中找到。
7、联合立体声转换7.1 强度立体声转换在强度立体声模式中,左声道传的是幅值,右声道的scalefactor传的是立体声的位置is_pos。
需要转换的频率线有一个低边界,这个低边界是由右声道的zero_part决定的,并且使用右声道的尺度因子来作为is_pos。
强度立体声比左声道:右声道:7.2 M_S立体声转换在M_S立体声模式中,传送的是规格化的中间/旁边声道的信息左声道右声道其中Mi是channel[0]的值,Si是channel[1]的值7.3 处理流程强度立体声模式:MS_STEREO因公式单一,较易理解,故流程图略去。
8、重排序重排序的目的在于把哈夫曼解码之后的短块的每个尺度因子带3个窗,每个窗sfbwidth(尺度因子带宽度)个采样的顺序整理成为每个子带三个窗,每个窗六个采样xr[sb][window][freq_line]的顺序。