一种MP3编码中的量化方法及装置制造方法及图纸

技术编号:3847366 阅读:245 留言:0更新日期:2012-04-11 18:40
一种MP3编码中的量化方法及装置;方法包括:A.设置缩放因子n↓[i]为0;B.使用量化步长QS量化xr(i)得到ixr(i)(公式如右所示);根据ixr(i)统计量化之后得到的编码长度CL,如果CL大于CL_limit,则增大量化步长QS,重新量化xr(i),直到CL小于或等于CL_limit时,保存量化结果,进入步骤C;C.检查量化结果,如果没有量化子带的量化噪声能量大于掩蔽阈值,则当前颗粒的量化完成;否则将n↓[i]加上m↓[i],得到新的n↓[i],然后返回步骤B;其中,m↓[i]为整数,由外循环中改变xr(i)时,xr(i)所要乘以的系数*得到m↓[i]。本发明专利技术能减少运算量,提高量化效率,降低实现复杂度,并且满足动态范围和精度的需要。

【技术实现步骤摘要】

本专利技术涉及音频编码领域,尤其涉及一种MP3编码中的量化方法及装
技术介绍
目前,MP3的量化公式为(参见ISO 11172-3 ANNEX C)的)="、丄:(+2L/)。." -0.0946) 等式1在等式1中,xr为输入到量化过程的MDCT ( Modified Discrete Cosine Transform,改良离散余弦滤波)系数。MP3的量化以granule (颗粒)为单 位,每个granule包括576个MDCT系数,因此0《i《575。量化步长为 QS=qquant+quantanf,其中quantanf是一个计算得出的初始量化步长。qquant 的初始值为O,量化过程通过不断增大qquant来增加量化步长,从而减小ix 的值,得到一个较小的码长CL, ^f吏CL满足CL《CL—limit。 CL—limit为由 外部码率控制得出的当前granule的最大编码长度。函数nint(x)的作用是找出离x最近的整数。MP3量化由外循环和内循环来控制。内循环的作用是量化MDCT系数 xr,并且统计量化之后得到的编码长度CL。如果CL大于CL—limit,则增大 量化步长,直到CL小于或等于CL—limit。外循环的作用是检查内循环的量 化结果如果某个量化子带(scale-factor band)的量化噪声能量大于由心理声 学模型(Psychoacoustics Model)计算得出的掩蔽阈值,则放大该量化子带的 MDCT系数xr,再次调用内循环。等式1所示的量化计算在量化过程完成 之前要计算多次,可能达到几十次。在嵌入式平台中实现MP3编码往往只能使用定点运算;如果此MP3编 码器想要达到比较好的音质(比如HiFi音质),就需要在量化过程中达到6高的精度;而要保证等式1的计算有相当的精度,定点化过程必须保证MDCT系数xr的精度。xr可以^皮表示为一个Qnl形式的整数,即 nr(O = m7^(xr(/) x 2"1) 等式 1例如在32位的系统中,取111=15,则rxr(i)可以是Q15的整数,其最低 的15位表示小数位,其余包括16位整数位和1位符号位。由于大多数DSP和嵌入式CPU中实现定点除法需要的计算量远比定点 乘法的运算量大,等式1中的除法可以用定点的乘法来实现,即^^=lx"/)|x_^_ 等式2由于^ "。"加/在(0, i)区间内,而且QS:qquant+quantanf为在0 到255之间的整数,包括0和255,可以用一张表(包括256个元素)来表 示;的值。;可以被表示为Qn2整数的形式,为了提高精度,n2应该尽可能得大。比如在32位系统中,可以取n2-31。但是当QS非常大时,比如QS-200, J^是一个非常小的数,即使用Qn2的整数来表示也只能达到V^-很低的精度。当运算^ ^丄:(:)丄吣完成之后要计算x的0.75次方。根据实现的不同, 求xG75的定点算法相比乘法操作需要比较大的运算量或者存储量。而求x075 的运算是等式1中必须使用到的计算,经常要被多次调用。另外,在外循环中,当某个子带的需要被放大时,由于MDCT系数全 部被表示为Qnl形式的整数,放大计算有可能得到超出Qnl整数所能表示 的范围。可见,由于在嵌入式CPU比如ARM或一些DSP都采用32位或者24 位的字长,这种字长的限制导致了 一个整数单元不能满足数据动态范围和精 度两方面的要求。
技术实现思路
本专利技术要解决的技术问题是提供一种MP3编码中的量化方法及装置,, 乂能减少运算量,提高量化效率,降低实现复杂度,并且满足动态范围和精度 的需要。为了解决上述问题,本专利技术提供了一种MP3编码时的量化方法,包括A、 设置缩放因子w,为0;B、 使用量化步长QS量化xr(i)得到ixr(i):根据ixr(i)统计量化之后得到的编码长度CL,如果CL大于CL一limit, 则增大量化步长QS,重新量化xr(i),直到CL小于或等于CL—limit时,保 存量化结果,进入步骤C;C、 检查量化结果,如果没有量化子带的量化噪声能量大于掩蔽阁值, 则当前颗粒的量化完成;否则将rii加上mi,得到新的ni,然后返回步骤B; 其中,mi为整数,由外循环中改变xr(i)时,xr(i)所要乘以的系数VT^s得到进一步地,所述步骤A还包括计算=1 w(O T5并且保存结果;步骤B中使用量化步长QS量化xr(i)得到ixr(i)时hr(/) = wint-0SxO.75进一步地,所述步骤A中计算戸KO的步骤具体包括:0.75"p31、保存i的0.75次方与2T的乘积TP(i):0.75"/ 7T5(/) = "int(,75 x = 1,2,...2£i为1到2L之间的各整数,包括1和2L; L为8到12之间的值,包括8 和12;22、如果lxrl等于O,则pxr(i"O;否则令top二2、 "p,= -np, scale=l;如果!xrj大于top,贝'将top乘以16 得到新的top, "a加上16得到新的"a, scale乘以16得到新的scale,直到lxr卜J、于或等于top;当lxrl小于或等于top时,得到pxr(i) = TP(dn)十(TP(dn+l)-TP(dn》x rec/scale; 其中,dn = floor(|xr|/scale), rec = |xr|-dn x scale, floor(X)表示求小 于或等于数X的最大整数;步骤B中,使用量化步长QS量化xr(i)得到ixr(i)时,(0 、进一步地,步骤B中,使用量化步长QS量化xr(i)得到ixr(i)的步骤具 体包括41、 计算TQ(i)的值并保存-0.75(i+l)r0(/) = 2^^x2ei; i为0到15之间的各整数,包括0和.15;42、 求Ti和Ri的值'—1(15-0%16),Q<O 及=|77離股—1)/I6)x3,e,>0 '—U ooK(Q-l)/16)x(-3),Q^0其中,2,=05 —43、 计算ixr(i): ^(!〕=((戸"( 7^(7;) + 2,化—i))x2-(e"《))。 进一步地,步骤42具体包括求出各Qi所对应的Ti和Ri并保存; 根据Qi查询获得该Qi所对应的Tj和Ri。本专利技术还提供了一种MP3编码中的量化装置,包括初始化模块、量 化模块、编码长度检查模块和量化结果检查模块;所述初始化模块用于设置缩放因子n,为0;所述量化模块用于使用量化步长QS量化xr(i)得到ixr(i):<formula>formula see original document page 9</formula>所述编码长度检查模块用于根据ixr(i)统计量化模块量化之后得到的编码长度CL,如果CL大于CL—limit,则增大量化步长QS,指示量化模块重 新量化xr(i);如果CL小于或等于CL—limit,则将量化结果发送给所述量化 结果检查模块;所述量化结果检查模块用于检查量化结果,如果没有量化子带的量化噪 声能量大于掩蔽阈值,则当前颗粒的量化完成,输出量化结果;否则将A 加上mi,得到新的rii,然后指示量化模块重新量化xr(i);其中mi为整数, 由外循环中改变本文档来自技高网
...

【技术保护点】
一种MP3编码时的量化方法,包括: A、设置缩放因子ni为0; B、使用量化步长QS量化xr(i)得到ixr(i): ixr(i)=nint(|xr(i)|↑[0.75]/*↑[QS-n↓[i])×0.75]) 根据 ixr(i)统计量化之后得到的编码长度CL,如果CL大于CL_limit,则增大量化步长QS,重新量化xr(i),直到CL小于或等于CL_limit时,保存量化结果,进入步骤C; C、检查量化结果,如果没有量化子带的量化噪声能量大于掩 蔽阈值,则当前颗粒的量化完成;否则将n↓[i]加上m↓[i],得到新的n↓[i],然后返回步骤B;其中,m↓[i]为整数,由外循环中改变xr(i)时,xr(i)所要乘以的系数*↑[mi×0.75]得到m↓[i]。

【技术特征摘要】

【专利技术属性】
技术研发人员:林中松侯培新
申请(专利权)人:北京中星微电子有限公司
类型:发明
国别省市:11[中国|北京]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1