MP3编码原理概述

合集下载

mp3解码原理

mp3解码原理

mp3解码原理
MP3解码原理是指将MP3格式压缩的音频文件转换为原始音频数据的过程。

MP3是一种有损压缩技术,通过去除人耳重要性较低的音频信号和减少冗余数据来减小文件大小。

下面是MP3解码的基本步骤:
1. 分析压缩数据:将MP3文件的压缩数据进行分析,提取出有关音频信息的数据。

2. 解压缩:使用解压缩算法对压缩的音频数据进行解压,恢复成原始音频数据。

3. 重构信号:将解压缩的音频数据进行重构,恢复出原始的声音信号。

4. 反量化:将解压缩后的音频数据进行反量化,恢复出原始采样点的数值。

5. 逆变换:使用逆变换算法对反量化的音频数据进行逆变换,恢复出时域的音频样本。

6. 重建滤波:通过应用特定的重建滤波器将逆变换得到的音频样本进行滤波处理。

7. 输出音频:最终将重建滤波后的音频样本输出,生成原始的音频文件。

通过以上步骤,MP3解码器可以将MP3文件解码成原始的音频数据。

这些原始音频数据可以被音频播放器或其他应用程序使用来播放或处理音频文件。

MP3编码分析(一)

MP3编码分析(一)

MP3编码分析(⼀)⽬录⼀、MP3⽂件格式解析 (2)1、MP3⽂件及MPEG概述 (2)⼆、MP3编码原理 (4)1、MP3编码流程 (4)2、⼦带滤波器排——编码流程图中编号为1 (5)3、改良后的DCT(MDCT)——编码流程图中编号为2 (7)4、声⾳⼼理学模型——编码流程图中编号为3 (8)5、位元分配、量化和Huffman编码——4 (12)三、SHINE程序分析 (13)1、⽂件数据结构 (13)2、编码前化⼯作 (14)3、MP3编码 (14)4、后处理 (17)注:下⾯的资料参考⽹上论⽂整理⽽来⼀、MP3⽂件格式解析1、MP3⽂件及MPEG概述MP3⽂件是由帧(frame)构成的,帧是MP3 ⽂件最⼩的组成单位。

MP3 的全称应为MPEG1 Layer-3 ⾳频⽂件。

MPEG(MovingPicture Experts Group),MPGE⾳频层指MPGE⽂件中的声⾳部分,根据编码质量和复杂程度分为3层,即Layer-1、Layer2、Layer3,对应MP1、MP2、MP3三种格式⽂件。

2、MP3⽂件结构MP3⽂件分为TAG_V2(ID3V2),Frame, TAG_V1(ID3V1)共3部分。

(1)Frame格式帧头为4个字节,其结构如下typedef FrameHeader{unsigned intsync:11; //同步信息unsigned intversion:2; //版本unsigned intlayer:2; //层unsigned intprotection:1; // CRC校验unsigned intbitrate:4; //位率unsigned intfrequency:2; //采样频率unsigned intpadding:1; //帧长调节unsigned intprivate:1; //保留字unsigned intmode:2; //声道模式unsigned int mode extension:2; //扩充模式unsigned intcopyright:1; // 版权unsigned intoriginal:1; //原版标志unsigned intemphasis:2; //强调模式}HEADER, *LPHEADER;⽆论帧多长,每帧播放时间为26ms。

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解码算法原理解析

MP3解码算法原理解析1.压缩过程:MP3解码算法采用了一种称为“感知编码”的方法,这种方法可以根据人耳对声音敏感度的特点选择性地减少音频数据。

算法首先进行时域分析,将音频信号转换为频域表示,即将音频信号分解为一系列的频率分量。

然后,通过应用快速傅里叶变换将信号从时域转换到频域。

接下来,使用掩模(掩蔽阈值)来决定哪些频率分量可以被保留,哪些可以被丢弃。

掩模根据人耳对声音的感知灵敏度进行计算,对于较高音量的频率分量,掩模较高,而对于较低音量的频率分量,掩模较低。

根据掩模的结果,选择性地丢弃一些低音质部分。

接下来,对于保留的频率分量,使用非线性量化将其量化为一定数量的码字,以减少数据的表示大小。

非线性量化使用了较细的量化步长来表示低音质的区域,而使用较大的量化步长来表示高音质的区域,以更有效地利用比特位。

最后,使用霍夫曼编码对量化后的频率分量进行编码,以进一步减少数据的大小。

霍夫曼编码将出现频率较高的码字表示为较短的代码,而出现频率较低的码字表示为较长的代码,以最大程度地减少整体的数据大小。

2.解压缩过程:解压缩过程的目标是将压缩后的数据还原为原始音频信号。

首先,对于编码后的数据,使用霍夫曼解码将其还原为量化后的频率分量。

然后,使用逆量化过程将量化后的数据还原到原始的频率分量。

接下来,使用逆掩模过程,根据之前计算的掩模信息,将频率分量重新调整为原始音频的频域表示。

逆掩模过程恢复被掩模的频率分量,以便于后续的时域合成。

最后,使用逆傅立叶变换将频域信号转换回时域信号,并应用一些滤波器以平滑输出的音频信号。

这些滤波器可以去除可能出现的伪音频效应,并改善音频的质量。

综上所述,MP3解码算法通过压缩音频数据的方法实现了对音频的高效编码。

该算法通过应用感知编码,非线性量化和霍夫曼编码等技术来减少数据的表示大小。

通过解码过程,原始的音频信号可以被还原出来,使得人们可以在较小的文件大小下享受高质量的音频体验。

mp3的工作原理

mp3的工作原理

mp3的工作原理
MP3技术是指将音频信号以数字方式进行编码、压缩和存储
的技术。

它的工作原理可以分为编码和解码两个过程。

编码过程是将音频信号转换成数字形式的过程。

首先,音频信号会经过采样,即将连续的模拟音频信号转换为离散的数字信号。

然后,对采样后的数字信号进行量化处理,即将连续的取样值离散化为有限个符号值。

接着,对量化后的信号进行编码,将离散的符号值转换为比特流。

编码常使用有损压缩算法,如MP3算法中的MPEG-1音频层III算法,通过去除人耳无法察
觉的音频信号信息和利用人耳的听觉特性来实现高比特压缩。

解码过程则是将编码后的比特流还原为音频信号的过程。

首先,解码器会将比特流解析为离散的符号值。

然后,对解析得到的符号值进行解量化处理,将离散的符号值恢复为连续的取样值。

最后,通过重建取样值序列,将连续的数字信号转换为模拟音频信号。

在整个过程中,MP3技术利用了人耳的听觉特性,如掩蔽效
应和频率分辨能力差异,来减少对音质的影响。

通过合理地削减和压缩信号,移除不可听见的信号部分,MP3技术实现了
高比特压缩,并在一定程度上保持了音质的可接受性。

mp3编码原理

mp3编码原理

mp3编码原理
MP3(MPEG-1 Audio Layer III)是一种常见的音频编码格式,它使用了基于人类听觉特性的压缩算法来减小音频文件的大小。

以下是MP3 编码的基本原理:
1. 采样:音频信号首先会经过采样过程,将模拟音频信号转换为数字形式。

通常,CD音质的音频以44.1 kHz的采样率进行采样。

2. 分析与预处理:将数字化的音频信号分为小的时间片段(通常称为帧),通常每帧包含数百至数千个采样点。

在这一阶段,还会对音频信号进行一些预处理,如使用滤波器来降低高频噪音。

3. 傅里叶变换:对每个帧进行傅里叶变换,将时域的音频信号转换为频域表示。

这个步骤将音频信号分解为一系列频率成分。

4. 掩蔽模型:利用人类听觉的掩蔽效应,即在音频信号中的较强频率成分可以掩盖较弱频率成分,这样就可以有选择地保留或丢弃一些频率成分。

这有助于减小编码后的文件大小而不损失人耳感知到的音质。

5. 量化:将频域表示的音频信号进行量化,将其映射到一个较小的值集合。

这减小了文件的大小,但也引入了一些损失。

6. 编码:使用哈夫曼编码等技术对量化后的数据进行熵编码,以进一步减小文件的大小。

哈夫曼编码是一种可变长度编码,用于将频繁出现的值表示为较短的编码,而不频繁出现的值表示为较长的编码。

7. 生成比特流:最终,将所有编码后的数据组合成比特流,形成最终的MP3 文件。

MP3 编码的关键点在于利用了人耳的特性,对音频信号进行有损压缩,以尽可能减小文件大小。

由于是有损压缩,因此编码后的文件和原始音频信号之间存在一些信息损失,但通常这种损失在人耳听觉范围内是难以察觉的。

比较两种音频编码方式:MP3与FLAC

比较两种音频编码方式:MP3与FLAC

比较两种音频编码方式:MP3与FLACMP3与FLAC是两种常见的音频编码方式,在音频压缩方面具有不同的优缺点。

本文将介绍MP3和FLAC编码方式的原理、特点,以及优劣势的区别,帮助读者更好地理解音频编码技术。

一、MP3编码方式1.原理MP3是一种有损压缩音频编码技术。

具体而言,它采用了人类听觉知觉原理,通过去除人耳听不出的音频信号,减少冗余数据,以达到压缩音频的目的。

此过程中,基于FFT(快速傅里叶变换)技术,将音频数据进行分段处理,然后进行量化与编码,再保存至文件中。

2.特点①文件体积小,最多可压缩1:12;②码率可调,音质有很大的可调性;③广泛应用于音乐播放器、移动设备等终端设备;④可“刻板化”,即同等码率下,不同压缩软件产生的音质可能有较大差别。

3.优缺点①优势MP3是一种流行的编码方式,因其压缩率高、应用广泛、操作简便、可调码率等优点,很受用户喜爱。

②缺陷然而,由于其为有损数据压缩方式,故重要信息可能会有损失;此外,同样的码率下,压缩失真程度较大,无法保证音质完整性。

二、FLAC编码方式1.原理FLAC全称Free Lossless Audio Codec,即无损音频编码格式。

FLAC采用带有探测音频数据中的稳定的不规则性的预测算法,用线性预测滤波(LP)方法对音频信号进行处理,再通过编码压缩,以生成不过是自我保证完好无损数据。

2.特点①体积小、音质清晰:FLAC的良好无损压缩方式减少了音频数据大量的部分,同时还保持了最原始的音质,因此在存储、传输等方面有着较高的性价比。

②精简易懂:FLAC编码器拥有基于语句的语法,编码方式共有38个语句,易于使用,且具有良好的可读性。

③适用范围广:由于FLAC码率较小,它在网络传输和存储中非常方便,经常被用作音频存储和分发。

④无损要求:FLAC编码只适用于音频设备,不能符合设备的适用要求。

3.优缺点①优势FLAC是一种惠及于音乐爱好者和媒体制作人的编码方式,既保证了音频文件的原始质量,又能满足网络传输和存储的各种需求,因此在一些音乐爱好者和媒体发行商中受到了欢迎。

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文件中的数字音频数据解压缩,并通过一系列的处理步骤转换为可听的模拟音频信号的过程。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

音频压缩由编码和解码两个部分组成。

把波形文件里的数字音频数据转换为高度压缩的形式(称为比特流)即为编码;要解码则把比特流重建为波形文件。

音频压缩可以分为无损(lossless)压缩和有损压缩。

无损压缩就是尽量降低音频数据的冗余度,以减小其体积。

音频信号经过编码和解码之后,必须要和原来的信号一致。

无损压缩的压缩率是比较有限的,不过现在比较出色的APE能做到50%的压缩率(本人用Monkey's Audio 3.97,Extra High压缩模式下压缩WAV,压缩率最低能达到52%);有损压缩就是用尽一切手段,包括无损压缩用到的方法,丢掉一切能丢掉的数据,以减小体积。

而音频压缩后解码听起来起码是要跟原来差不多的,有损压缩的压缩比能大幅提高,MP3就是属于有损压缩,压缩比是12:1(128kbps)。

MP3文件是由帧(frame)构成的,帧是MP3文件最小的组成单位。

什么是帧?还记得最初的动画是怎么做的吗?不同的连续画面切换以达到动态效果,每幅画面就是一个“帧”,不同的是MP3里面的帧记录的是音频数据而不是图形数据。

MP3的帧速度大概是30帧/秒。

每个帧又由帧头和帧数据组成,帧头记录着该帧的基本信息,包括位率索引和采样率索引(这对理解ABR和VBR编码方式很重要)。

帧数据,顾名思义就是记录着主体音频数据。

上面说的都是MP3编码的基础,但事实上,早期的编码器都非常不完善,压缩算法近于粗暴,音质很不理想。

MP3的音质达到现在的水平有两次飞跃:人体听觉心理学模型(Perceptual Model)的导入和VBR技术的应用。

◆人体听觉心理学模型下面将简要介绍一下几个重要原理:1) 最小听觉门槛判定(The minimal audition threshold)人耳的听力范围是20Hz-20k Hz的频率范围,但是人耳对不同的频率声音的灵敏度是不同的,不同频率的声音要达到能被人耳听到的水平所需要的强度是不一样。

那么通过计算,可以把音乐文件中存在但不能被人耳听到的声音去掉。

通过这原理,我们还可以建立模型,把大部分数据空间分配到人耳最灵敏的2kHz 到5kHz范围,其余频率分配比较少的空间;2) 人耳的遮蔽效应(The Masking effect)蔽效应表现在强信号会遮蔽邻近频率的弱信号。

用生活经验来说,在安静的房间中,一根针掉到地上都能听见,可到了大街上,就算手机音量调到最大,来电时也未必能听见,而手机的声音确确实实是存在的,原因就是被周围更大的声音遮蔽了。

有了对遮蔽效应的研究成果,编码器就能根据已建立的数学模型,计算强信号对附近弱信号的遮蔽,把能引起人们注意的声音才保留。

人耳还有前遮蔽效应和后遮蔽效应:因为人需要一定的时间来处理声音信号,在强信号之前或之后的弱信号,会被遮蔽掉。

前遮蔽效应的时间约只有2-5ms,而后遮蔽的时间比较长,大约有100ms。

利用这,我们能减小强信号之前和之后的分辨率;3) 人耳的空间响应: 人耳对某些高频的声音的空间感很差,辨别不了声源的方向。

联合立体声(Joint Stereo)应运而生:在某些频率上采用“单声道”(事实上并非真正意义上的单声道),以减小流量。

◆VBR技术正如上面所说,MP3是由帧构成的,MP3能象动画那样读到哪放到哪,播放器不必预读整个文件的内容,即使部分数据损坏也不会对播放效果有太大影响(实际上这就是流媒体所具有的特性)。

而每个帧的帧头里都包含这该帧的码率(bitrate,单位是kbps)等信息,所以,我们可以对每一段音乐甚至每一个帧定义独立的码率,这就是VBR(Variable bitrate,动态码率)技术。

与VBR向对应的是CBR(Constant bitrate)。

一支交响曲,合奏大动态部分的数据量显然大于引子部分,如果用128kbps的CBR编码方式来编码,在引子部分可能有多余的数据流量,而在合奏部分却又不够,VBR就是解决这个问题的。

把在不影响音质的情况下,对流量需求小的部分分配较小的码率,把冗余字节缓存起来留给有需要的部分,在短时间内提供更高的码率,以保证音乐的质量。

所以说,VBR的作用是更合理的分配流量,在不增大文件体积的条件下提高声音的质量。

不过VBR在应用初期带给过MP3随生听不少麻烦。

因为早期大多数MP3播放器都是针对CBR设计的,其根据文件大小来获得时长的算法对VBR失效了,因为VBR MP3的bitrate可能每时每刻都在变化。

不过现在这个问题基本上不用担心了,市场上的播放器基本上都解决这问题了。

除了上面说的两方面,MP3编码还有很重要的一招:Huffman编码(Huffman 是个科学家的名字),Huffman编码广泛应用于无损压缩领域,比如我们常用的WINZIP,WINRAR等压缩软件就是以此为基础的(只能说是基础,因为这些用到的编码方法不只是Huffman编码)。

Huffman编码用途就是降低数据的冗余度,可节省大约20%的空间。

用WINZIP来再压缩MP3文件每什么效果就因为MP3编码的时候已经应用到采用Huffman编码。

下面我们看看编码器是怎样工作的。

1) 滤波器段(filterbank)数字音频信号以脉冲的形式送进编码器,首先会经过一滤波器段(filterbank),它由两个串联的滤波器段组成:一个多相分析滤波器段和一个MDCT(Modified Discrete Cosine Transform,经改良的离散余弦转换),前者也应用到layer-1和layer-2中,后者是MP3独有的。

输入的音频信号在20Hz-20k Hz的频率范围内,通过第一个滤波器段后,把信号按频率分成32个小频带,称为子带(Subband)。

20000Hz/32=625Hz,那么每个子带的宽度就是625Hz。

人耳对不同频段的灵敏度是不同的,编码器可对不同的子带进行不同的量化分层。

不过等宽的子带并没有准确反映人耳的听觉特性,这样进行等宽划分并没有考虑到不同信号的临界宽度,也就是该信号的影响范围,以及不同信号的相互影响,所以这样会产生大量的信号重叠。

MDCT转换就是为了解决这问题,它能对子带进行细分,清楚重叠部分,得到更高的频谱解析度。

2) 人体听觉心理学模型(Perceptual Model)上面已经谈到过人体听觉心理学模型,心理学模型可以说是感受编码的重中之中,它决定着编码器的编码质量(后面谈到的LAME就拥有着大量优秀的人体精神听觉模型和数学模型)。

下面将深入分析两个重要原理: 最小听觉门槛判定和遮蔽效应。

◆最小听觉门槛判定声音其实是传播在介质中的能量波,人耳对声音能量强弱的直接感受就是听到音量的大小,也就是响度,单位是分贝(dB)。

下面是人耳可听最小响度曲线:0dB是听觉灵敏度的极限,而120dB是痛苦灵敏度的极限。

人耳在2000Hz 到5000Hz范围内的灵敏度最高,两端就迅速下降。

所以人耳对中频的灵敏度远高于高低频。

◆遮蔽效应不同频率的声音有不同的遮蔽宽度,这叫临界宽度。

可以想象,弱信号越接近强信号的中心,遮蔽效应会越严重。

临界宽度跟声音频率成正比。

下面是临界宽度列表:感受编码机制可以分为两个部分:知觉噪音成型(perceptual noise shaping)和知觉边带/变换编码(perceptual subband / transform coding)。

编码器通过分析滤波器段(filterbank)分析音频信号的频谱组成并应用听觉心理学模型来估计仅仅可以注意得到的噪音电平。

在后面的量化和编码阶段,编码器会提高强信号附近的噪音电平,也就是减少量化位数,这样就能达到节省流量,压缩数据的目的。

如果所有量化噪音都能控制在屏蔽临界曲线以下,那么处理后人耳就区别不出哪个才是原音。

3) 量化和编码(Quantization and Coding)当PCM讯号被分成好几个频段并经过一系列的处理后,最后经过MDCT,将波型转换为一连串的系数。

这些系数就由Huffman编码器会选择最合适的Huffman表来做最后的压缩。

Huffman编码一般是双路工作的,但是在某些需要精密编码的情况下,它会进行四路工作。

编码器一般会有很多的Huffman编码表,很多时候为了更好的声音质量和更有效屏蔽量化噪音,编码器甚至能为每一个频段选择最合适的Huffman编码表。

不过编码不是一次就能成功的,要采取Try and Error的方式循环进行。

因为编码器一方面要削减量化噪音,让它在人耳遮蔽曲线以下;另一方面要保证bitrate满足要求。

实际上这里就是要确定两个数值:一个是确定bitrate的步进值(gain value),另一个是削减量化噪音的增益因子(ScaleFactor),这两个系数会在正式编码之前确定下来,确定过程由两个嵌套的迭代回路完成:失真控制回路(Distortion Control Loop)和量化速率控制回路(Nonuniform Quantization Rate Control Loop)◆内部迭代回路(Rate Loop )量化以后的数据送进Huffman编码器,当发现比特数大于可用流量时,编码器会返回信息,让Rate Loop调整步进值以增大量化步长,从而让数据流量减小。

循环会一直进行,尝试不同的量化步长,直到Huffman编码以后的数据流量足够小。

因为这个回路是用来控制码率的,所以叫做Rate Loop。

◆外部迭代回路(noise control loop)显然,这个回路的作用就是控制量化噪音(quantization noise),让其保持在听觉心理学提供的屏蔽临界线(masking threshold)以下。

每一个频段都会有一个增益因子,一开始编码器以1.0作为默认因子,如果量化噪音量超过允许的值,那么回路就会调整增益因子,来把量化噪音降下来。

更少的量化噪音意味着流量增大,码率需要提高,所以增益因子每次改变以后,Rate Loop都要进行调整,让码率符合要求。

所以两个回路是嵌套工作的,互相协调,中止条件是量化噪音降到屏蔽临界线以下而码率也足够小。

良好的编码器会让两个回路有条不紊的工作,因为一旦处理不好就很容易陷入死循环。

■解码MP3文件帧组成,每个帧又由帧头和帧数据组成。

帧头长4字节。

其数据结构如下:typedef struct _tagHeader{unsigned int sync:12; file://同步信息unsigned int version:1; file://版本unsigned int layer:2; file://层unsigned int error_protection:1; file://CRC校正unsigned int bit_rate_index:4; file://码率索引unsigned int sample_rate_index:2; file://采样率索引unsigned int padding:1; file://空白字unsigned int extension:1; file://私有标志unsigned int channel_mode:2; file://立体声模式 unsigned int mode extension:2; file://保留unsigned int copyright:1; file://版权标志unsigned int original:1; file://原始媒体unsigned int emphasis:2; file://强调方式} HEADER,*LPHEADER;在帧头后边是通道信息和增益因子(ScaleFactor),数据以比特流的形式送进编码器,当解码器在读到上述信息后,就可以进行解码了。

相关文档
最新文档