專利名稱:一種mp3編碼量化中的內(nèi)循環(huán)方法及mp3編碼器的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及音頻編碼領(lǐng)域,尤其涉及一種MP3編碼量化中的內(nèi)循環(huán)方法及MP3編碼器。
背景技術(shù):
在MP3編碼的量化過程中,其內(nèi)循環(huán)需要尋找一個使編碼的長度小于規(guī)定長度的最小量化步長。MP3編碼參考標準的內(nèi)循環(huán)步驟如圖1所示,內(nèi)循環(huán)通過不斷增加量化步長QS來使編碼長度CL小于或等于由外部控制決定的最大編碼長度CL—Limit。量化步長的范圍為0-QS—MAX(最大量化步長)之間的整數(shù)。 一般的情況下,量化步長越小,碼長CL就越大,量化噪聲越小;反之,當量化步長增大時,碼長CL會減小,但是量化噪聲增大。
內(nèi)循環(huán)的目的是尋找一個最小的量化步長QS_min,在使用QS—min進行量化后,編碼得到的碼長CL—max小于CL—Limit,并且保存量化結(jié)果。內(nèi)循環(huán)每循環(huán)一次,如果量化得到的編碼長度大于CL—Limit,則量化步長QS增加1,否則就保存量化結(jié)果退回到外循環(huán)。在外循環(huán)再次進入內(nèi)循環(huán)時,使用的步長初始值為上一次內(nèi)循環(huán)最后得到的步長QS—min。而當外循環(huán)第一次進入內(nèi)循環(huán)時,量化步長的初始值可以i殳為0,當然這時內(nèi)循環(huán)要循環(huán)QS一min次才能得到符合要求的量化步長QS—min。
在ISO 11172-3 ANNEX—C推薦的方法中,第一次進入內(nèi)循環(huán)時,量化步長QS的初始值quantanf的計算方法為
quantanf = system—const * loge(sfm) 等式1
等式1中sfm是一種頻i普平滑度測度,其計算公式可見于ISO 11172-3ANNEX-C。 sfm的計算過程中使用了函數(shù)log(x)和pow(e, x),使其的定點化變得困難。另外sysstem—const時ISO 11172-3 ANNEX—C標準留給具體得
6編碼器指定的常數(shù)。System—const的選擇最好能夠使得量化步長quantanf得 到的編碼長度CL比CL—Limit稍大。在內(nèi)循環(huán)中使用得量化步長QS = quantanf + qquant。 qquant是量化步長QS相對初始化量化步長quantanf增長 的值,每次內(nèi)循環(huán)通過qquant = qquant + 1來增加量化步長??梢娭灰x擇 適當?shù)某跏剂炕介Lquantanf,在內(nèi)循環(huán)中就可以減少循環(huán)次數(shù)來得到 QS—min。
但是在ISO 11172-3 ANNEX—C推薦的方法中,計算quantanf中用到 的常數(shù)system—const的選擇非常困難如果選擇的過大,quantanf大于 QS—min,得到的編碼長度CL可能小于CLJimit,這樣不能保證每次編碼都 在規(guī)定的范圍內(nèi)使用最大的碼長;如果system—const選擇得過小,則可能 quantanf距離QS—min很遠,這樣在編碼器第一次進入內(nèi)循環(huán)時要循環(huán)的次 數(shù)很多才能得到QS—min,導致計算量的浪費。另外,測度sfm的計算不利于 定點實現(xiàn)。所以在^艮多MP3編碼器中第一次內(nèi)循環(huán)都使用binsearch的方法 來得QS—min.
在下文中,QS—min專指第一次進入內(nèi)循環(huán)時求得的最小量化步長。
binSearch算法并不采用逐步累加的方式來得到QS—min;其計算量從理 "^侖上來講最多只需循環(huán)8次就可以在0 - 255的范圍內(nèi)找出QS—min;其步驟 如下:
1、 初始化top(最小量化步長)=0, bot(最大量化步長)=QS—MAX, 找出頻譜xr的絕對值最大值xrabsmax。
2、 使用top作為量化步長,對xrabsmax進行量化,得到量化值q-max, 如果q-max在標準Huffman表允許的最大值內(nèi),則跳至步驟3;否則 top=top+l,返回步驟2。
3、 step=(top+bot+l)/2,使用step作為量化步長,對xr進行量化,并且 執(zhí)行內(nèi)循環(huán)的步驟(參考標準IS011172-3 ANNEXC中的內(nèi)循環(huán)步驟), 得到的編碼長度為CL。
4、 如果CL<=CL_limit,且step等于bot,貝'J QS_min = step,結(jié)束。
5、 如果CL< = CLJimit,且step等于top,則QS_min=step,結(jié)束。6、如果CL<CL—limit,則令bot-step,跳至步驟3;如果CL>=CL—limit 且step既不等于bot也不等于top,則令top3tep,返回步驟3。
發(fā)明內(nèi)容
本發(fā)明要解決的技術(shù)問題是提供一種MP3編碼量化中的內(nèi)循環(huán)方法及 MP3編碼器,能夠在量化過程中快速找到第一次內(nèi)循環(huán)時的最小量化步長, 提高量化效率。
為了解決上述問題,本發(fā)明提供了 一種MP3編碼量化中的內(nèi)循環(huán)方法, 包括
A、 將同一聲道中的前若干個顆粒的第一次內(nèi)循環(huán)時的最小量化步長 QS—min分別乘以預定系數(shù)后相加,得到當前顆粒預計的第一次內(nèi)循環(huán)時的 最小量化步長QS一minp;所述系數(shù)的總和為1;
B、 使用QS一minp作為量化步長對當前的頻譜xr進行量化,得到的編碼 長度為CL;反復根據(jù)CL與CL—limit的大小關(guān)系相應調(diào)節(jié)QS一minp的大小、 并采用調(diào)節(jié)后的QS—minp得到CL,直到CL等于CL—limit、或在小于CL—limit 的情況下盡可能接近CL—limit時,得到當前顆粒的QS—min為QS_minP;
其中,根據(jù)CL與CL—limit的大小關(guān)系相應調(diào)節(jié)QS—minp的大小是指 當CL〉CL—limit時增大QS—minP,當CL < CL—limit時減小QS—minP。
進一步地,將同 一聲道中的前若干個顆粒的第 一次內(nèi)循環(huán)時的最小量化 步長QS一min分別乘以預定系數(shù)后相加是指
將同一聲道中的前一個顆粒的QS_min乘以2,同一聲道中當前顆粒之 前第二個顆粒的QS—min乘以-1,然后相加。
進一步地,當CL 〉 CL—limit時增大QS—minP,當CL < CL—limit時減小 QS—minp具體包括
得到CL和CL—limit的差為<formula>formula see original document page 8</formula>;當AD>0時,增大 QS—minp,當AD<0時,減小QS—minP;增大和減小QS—minP的幅度與AD 的絕對Y直成正比。
進一步地,步驟B具體包:fe:31、 設(shè)置top和AS為0, bot為最大量化補償;得到頻譜xr的絕對值最 大值xrabsmax;
32、 使用top作為量化步長對xrabsmax進行量化,得到量化值q-max,如 果q-max在標準Huffman表允許的最大值內(nèi),則進行步驟33;否則將top 增力口 1,返回步驟32;
33、 i殳置up為bot力口 1, dn為top減1 , step為QS—minP,長口果step小 于top,則令step等于top;
34、 使用step作為量化步長對xr進行量化,得到的編碼長度為CL,得 到CL減去CLJimit的差AD;
35、 當AD等于0時進行步驟37;
當AD大于0時,設(shè)置AS為大于或等于1的值,設(shè)置dn等于step,進 行步驟36;
當AD小于0時,如果AS大于或等于1、或是step等于top、或是step -dn<=l則跳至步驟37;否則設(shè)置AS為小于或等于-1的值,設(shè)置叩等于 step,進行步驟36;
36、 ?文變step, 4吏step 土曾力口 △ S;
如果改變后的step小于或等于dn,則step等于dn加l,返回步驟M;
如果改變后的step大于或等于up,則令step等于up減1,如果得到的 step等于或小于dn,則令st印等于up后返回步驟34,如果得到的step大于 dn則直接返回步驟34;
如果改變后的step小于up且大于dn,則直接返回步驟34;
37、 得到當前顆粒的QS一min為step,結(jié)束。 進一步地,步驟35中
當AD小于O時,AS為AD除以C后減去1的差;當AD大于O時, △ S為AD除以C后加上1的和;C為一在16到1024之間的常凄t。
本發(fā)明還提供了一種MP3編碼量化中的內(nèi)循環(huán)裝置,包括量化單元,用于當接收到QS—minp時,以QS—minp作為量化步長對當前 的頻譜xr進行量化,得到的編碼長度為CL;
預估單元,用于將同一聲道中的前若干個顆粒的第一次內(nèi)循環(huán)時的最小 量化步長QS—min分別乘以預定系數(shù)后相加,得到當前顆粒預計的第 一次內(nèi) 循環(huán)時的最小量化步長QS—minp,并發(fā)送給所述量化單元;所述系數(shù)的總和
為i;
調(diào)節(jié)單元,用于根據(jù)所述CL與CL—limit的大小關(guān)系相應調(diào)節(jié)QS—minP 的大小,并將調(diào)節(jié)后的QS一minp發(fā)送給所述量化單元;當CL等于CL—limit、 或在小于CL—limit的情況下盡可能接近CL—limit時,輸出當前顆粒的 QS—min為QS—minP;其中,根據(jù)CL與CL—limit的大小關(guān)系相應調(diào)節(jié)QS—minP 的大小是指當CL〉CL—limit時增大QS—minP,當CL < CL—limit時減小 QS一minp。
進一步地,所述預估單元將同一聲道中的前若千個顆粒的第一次內(nèi)循環(huán) 時的最小量化步長QS—min分別乘以預定系數(shù)后相加是指將同 一 聲道中的前 一個顆粒的QS一min乘以2,同一聲道中當前顆粒之前第二個顆粒的QS—min 乘以-1,然后相加得到所述QS—minp。
進一步地,所述預估單元當CL〉CL—limit時增大QS—minP,當CL < CL—limit時減小QS—minp具體是指
所述預估單元得到CL和CL—limit的差為AD=CL - CL—limit;當AD>0 時,增大QS—minp,當AD<0時,減小QS—minP;增大和減小QS—minP的幅 度與AD的絕對值成正比。
進一步地,調(diào)節(jié)單元具體包括修正模塊;
初始化模塊,用于設(shè)置top和AS為0, bot為最大量化補償;得到頻譜 xr的絕對值最大值xrabsmax;使用top作為量化步長對xrabsmax進4亍量化, 得到量化值q-max;如果q-max不在標準Huffman表允許的最大值內(nèi),則將 top增力口 1再次量化;否則i殳置up為bot力口 1 , dn為top減1, step為QS—minP, 如果step小于top,則令step等于top,并將step作為QS—minp發(fā)送給所述 量化單元;輸出模塊,用于將step作為當前Granule的QS_min輸出; 調(diào)節(jié)沖莫塊,用于將量化單元得到的CL減去CLJimit得到AD;當AD 等于O時指示所述輸出單元輸出;當AD小于0時,如果AS大于或等于1、 或是step等于top、或是step-drK^則指示所述輸出單元輸出,否則設(shè)置 AS為小于或等于-1的值,設(shè)置up等于step,指示所述修正模塊工作;當 AD大于0時,設(shè)置AS為大于或等于1的值,設(shè)置dn等于step,指示所述 修正模塊工作;
所述修正才莫塊用于改變step,使step增加△ S;如果改變后的step小于 up且大于dn,則直接將step作為QS一minp發(fā)送給所述量化單元;如果改變 后的step小于或等于dn,則step等于dn加l,將step作為QS—minp發(fā)送給 所述量化單元;如果改變后的step大于或等于up,則令step等于up減1, 如果得到的step等于或小于dn,則令step等于up后將step作為QS—minP 發(fā)送給所述量化單元,大于dn則直接將step作為QS—minp發(fā)送給所述量化 單元。
進一步地,所述修正模塊當AD小于O時,令AS為AD除以C后減去 1的差;當AD大于0時,令AS為AD除以C后加上1的和;C為一在16 到1024之間的常數(shù)。
本發(fā)明在MP3編碼量化的內(nèi)循環(huán)步驟中,通過預測方法來減少確定量 化步長所需的運算量,提高了量化效率;本發(fā)明的優(yōu)化方案根據(jù)編碼長度和 規(guī)定的最大編碼長度的差來實時調(diào)節(jié)步長,使得該過程的計算量大大減小, 可以進一 步提高量化效率。
圖1是現(xiàn)有技術(shù)中內(nèi)循環(huán)的流程示意圖; 圖2是本發(fā)明實施例一中的流程示意圖。
具體實施例方式
下面將結(jié)合附圖及實施例對本發(fā)明的技術(shù)方案進行更詳細的說明。本發(fā)明的提出基于以下思路在研究了音頻信號、頻譜能量及量化步長 之間的關(guān)系后,發(fā)現(xiàn)音頻信號往往在頻i普能量和特征上前后相關(guān),因此可以 根據(jù)前面的信號特征來預測后來的音頻信號;而第一次進入內(nèi)循環(huán)時的最小 量化步長QS—min的大小和頻譜能量的大小也密切相關(guān)當頻譜能量大時, 往往(^_1^11也大,當頻譜能量小時,往往QS—min也小。所以預測方法也 可以使用在量化步長的估算中。
實施例一, 一種MP3編碼量化中的內(nèi)循環(huán)方法,包括
A、 # 據(jù)在同一個聲道中以前得到的QS—min值來預測當前的QS—min 值。由于MP3編碼量化是以Granule (顆粒)為單位( 一個Granule包含576 個樣本Sample值),當前Granule可以參考前一個或者更多Granule的QS—min 值來估計當前Granule的QS—min值。
將同 一聲道中的前若干個Granule的QS一min分別乘以預定系數(shù)后相加, 得到預計的當前Granule的QS—min;所述系數(shù)的總和為1。
下文中,QS—min.i表示同一聲道中當前顆粒之前第i個Granule的 QS—min值,QS—minp 表示對當前Granule的QS— min的予頁測i"直。
比如QS—minp 二 ( QS一min.! + QS—min_2) /2, QSmin.,和QS_min.2的 系數(shù)均為1/2,總和為1。再比如QS—minP = (3QS—min., + 2QS__min—2+ QS—min.3)/6, QS—min陽,、QS—min》QS—min.3的系數(shù)分別為1/2、 1/3和 1/6,總和也為1??梢愿鶕?jù)實際情況或?qū)嶒瀬泶_定使用同一聲道中前幾個 Granule的QS—min ,以及各QS—min的系數(shù)。
本實施例中,可以但不限于使用下式來估計當前Granule的QS—min值
QS—minP = 2 x QS—min—i — QS—min—2 等式2
B、 使用QS—minp作為量化步長對當前的頻譜xr進行量化,得到的編碼 長度為CL;反復根據(jù)CL與CL—limit的大小關(guān)系相應調(diào)節(jié)QS—minp的大小、 并采用調(diào)節(jié)后的QS一minp得到CL,直到CL等于CLJimit、或在小于CL—limit 的情況下盡可能接近CL—limit時,得到當前顆粒的QS一min為QS—minP。才艮 據(jù)CL與CL—limit的大小關(guān)系相應調(diào)節(jié)QS—minp的大小可以是指當CL> CL—limit時,增大QS—minp;當CL < CL—limit時,減小QS—minP。
12所述的"盡可能接近"的情況是指只要再減小QS—minP,所得到的 CL就會大于CL—limit的情況。
本實施例中,步驟B中根據(jù)CL與CL—limit的大小關(guān)系調(diào)節(jié)QS—minP 的大小也可以是指先得到CL和CL—limit的差為AD二 CL - CL—limit;根 據(jù)AD來對QS—minp進行調(diào)整以逼近最終的QS—min值當AD>0時,增大 QS—minP,當AD<0時,減小QS—minP。增大和減小的幅度可以與AD的絕 對值成正比。
本實施例的一種實施方式中,步驟B如圖2所示,具體可以包括
Bl、初始化top(最小量化步長)O, bot(最大量化步長)-QS—MAX。
△ S=0( △ S表示量化步長的改變值)。找出頻譜xr的絕對值最大值xrabsmax。
B2、使用top作為量化步長對xrabsmax進行量化,得到量化值q-max,如 果q-max在標準Huffman表允許的最大值內(nèi),則進行步驟B3;否則 top=top+l,返回步驟B2。
B3、設(shè)置變量up=bot+l (表示已知的使CL小于CL—limit的最大步長), dn=top — 1 (表示已知的使CL大于CL—limit的最小步長),step = QS—minP, ^口果step<top, step = top。
實際應用中,步驟A和B不需要依次進行,步驟A可以在步驟B4前 的任一步進行。
B4、使用step作為量化步長對xr進行量化,并且執(zhí)行內(nèi)循環(huán),得到的 編碼長度為CL, △ D= CL - CL—limit。
B5、如果AD二O,則跳至步驟BIO,否則進行步驟B6。
B6、如果ADO則進行步驟B7,否則設(shè)置ASX,且設(shè)置dn=step, 然后跳至步驟B9。
B7、如果AS大于或等于l,則跳至步驟B10; AS》1意味著前一次時
△ D>0,本次是step加上AS后計算AD,該AD〈0,因此得到的CL是在 小于CL—limit的情況下盡可能接近CL—limit,所以可以認為此時的st印就是 當前Granule的QS—min 了 ;
如果step等于top (表明了量化步長為最小允許的步長,且編碼長度CL),則跳至步驟B10;因為此時step已經(jīng)減小 到下限了 ,不能再減小step以提高CL,所以得到的CL是在小于CLJimit 的情況下盡可能接近CL—limit,可以認為top就是當前Granule的QS—min 了;
如果step - dn<=l,則跳至步驟BIO; 如果沒有跳至步驟BIO,則進行步驟B8。
圖2中是依次判斷是否AS大于或等于1、是否step等于top、是否st印 -dn<=l,而實際應用時這三次判斷步驟的先后可以任意調(diào)整,或并行。
B8、設(shè)置AS《-1,且設(shè)置up-step,進行步驟B9。
B9、改變量化步長step=step+ △ S;
如果改變后的step小于或等于dn,則step=dn+l,返回步驟B4;
如果改變后的step大于或等于up,則令step=up- 1,如果得到的step 等于dn,則令step=up后返回步驟B4,如果得到的step大于dn則直接返回 步驟B4;
如果改變后的step小于up且大于dn,則直接返回步驟B4。 B10、得到當前Granule的QS—min為step,結(jié)束。
為了接下來計算同一聲道的下一個Granule的QS—min,此時還可以令 QS—mirL2 = QS—min—, , QS—min-產(chǎn)QS一min。
實際應用中,可以不按照從B5到B8的順序依次進行;比如可以先比 較AD和0的大小,當AD=0時進行步驟B10;當AD大于0時,設(shè)置AS〉4, 設(shè)置dn二step,進行步驟B9;當AD小于0時,如果△ S小于1并且step大 于top,則設(shè)置AS〈^- 1,設(shè)置up-step,進行步驟B9,否則進行步驟BIO。
另夕卜,實際應用中也可以采用其它以QS—mhip為基礎(chǔ)值,逐步逼近的方 法來實現(xiàn)步驟B,不限于上述具體步驟。比如采用binSearch算法,但第一 次的step采用QS—minp。再比如可以不引入AD,直接用CL和CL—limit之 間的大小關(guān)系判斷所要進行的步驟。
14本實施例中,所述△S可以為
[-1,AD<0〗 |l,A£ >0
等式3
本實施例中,所述AS也可以為
tAD/C + l,A£ >Oj 等式4
此時是根據(jù)AD的大小相應改變厶S的大小,計算步驟將進一步縮減。
在等式4中,所述C是根據(jù)經(jīng)驗或?qū)嶒灥贸龅某?shù), 一般來說C在16 到1024之間。C的最佳選擇應該使循環(huán)次數(shù)最小,往往和編碼所要達到的 比特率相關(guān)。比如在MP3編碼比特率為192Kbits/s時,選擇C=128能夠把
循環(huán)次數(shù)減到很少。
實施例二、 一種MP3編碼量化中的內(nèi)循環(huán)裝置,包括
量4b單元,用于當才妻4丈到QS一minp時,以QS—minP 作為量化步長對當前 的頻譜xr進行量化,得到的編碼長度為CL;
預估單元,用于將同一聲道中的前若千個顆粒的第 一次內(nèi)循環(huán)時的最小 量化步長QS_min分別乘以預定系數(shù)后相加,得到當前顆粒預計的第一次內(nèi) 循環(huán)時的最小量化步長QS—minp,并發(fā)送給所述量化單元;所述系數(shù)的總和
為i;
調(diào)節(jié)單元,用于#4居所述CL與CL—limit的大小關(guān)系相應調(diào)節(jié)QS—minP 的大小,并將調(diào)節(jié)后的QS一minp發(fā)送給所述量化單元;當CL等于CL—limit、 或在小于CLJimit的情況下盡可能接近CL—limit時,輸出當前顆粒的 QS—min為QS—minP;其中,根據(jù)CL與CL—limit的大小關(guān)系相應調(diào)節(jié)QS—minP 的大小是指當CL〉CL—limit時增大QS—minP,當CL < CL—limit時減小 QS—minp。
本實施例中,所述預估單元將同 一聲道中的前若干個顆粒的第 一次內(nèi)循 環(huán)時的最小量化步長QS一min分別乘以預定系數(shù)后相加是指將同 一聲道中的 前一個顆粒的QS_min乘以2,同 一聲道中當前顆粒之前第二個顆粒的
15QS—min乘以-1,然后相加得到所述QS—minp。
本實施例中,所述預估單元當CL〉CL—limit時增大QS—minP,當CL〈 CL—limit時減小QS—minp具體是指
所述預估單元得到CL和CL—limit的差為AD= CL - CL—limit;當AD>0 時,增大QS—minp,當AD<0時,減小QS—minP;增大和減小QS—minP的幅 度與AD的絕對值成正比。
本實施例的一種實施方式中,調(diào)節(jié)單元具體包括修正模塊;
初始化模塊,用于設(shè)置top和AS為0, bot為最大量化補償;得到頻譜 xr的絕對值最大值xrabsmax;使用top作為量化步長對xrabsmax進行量化, 得到量化值q-max;如果q-max不在標準Huffman表允許的最大值內(nèi),則將 top增加1再次量化;否則設(shè)置up為bot力口 1, dn為top減1 , step為QS_minP, 如果step小于top,則令step等于top,并將step作為QS—minP發(fā)送給所述 量化單元;
輸出模塊,用于將step作為當前Granule的QS—min輸出;
調(diào)節(jié)才莫塊,用于將量化單元得到的CL減去CL—limit得到AD;當AD 等于0時指示所述輸出單元輸出;當AD小于0時,如果AS大于或等于1、 或是step等于top、或是step - dn<=l則指示所述輸出單元輸出,否則設(shè)置 AS為小于或等于-1的值,設(shè)置up等于step,指示所述修正模塊工作;當 △ D大于0時,設(shè)置AS為大于或等于1的值,設(shè)置dn等于step,指示所述 修正模塊工作;
所述修正模塊用于改變step,使step增加△ S;如果改變后的step小于 up且大于dn,則直接將step作為QS—minP發(fā)送給所述量化單元;如果改變 后的step小于或等于dn,則step等于dn加1 ,將step作為QS—minp發(fā)送給 所述量化單元;如果改變后的step大于或等于up,則令step等于up減1, 如果得到的step等于或小于dn,則令step等于up后將step作為QS—minP 發(fā)送給所述量化單元,大于dn則直接將step作為QS—minp發(fā)送給所述量化 單元。
該實施方式中,所述修正模塊可以當AD小于0時,令AS為AD除以
16C后減去l的差;當AD大于0時,令AS為AD除以C后加上1的和;C 為一在16到1024之間的常數(shù);也可以當AD小于O時,令AS為-1;當 △ D大于0時,令AS為1。
其它實現(xiàn)細節(jié)可以同實施例一中所述。
當然,本發(fā)明還可有其他多種實施例,在不背離本發(fā)明精神及其實質(zhì)的 形,但這些相應的改變和變形都應屬于本發(fā)明的權(quán)利要求的保護范圍。
權(quán)利要求
1、一種MP3編碼量化中的內(nèi)循環(huán)方法,包括A、將同一聲道中的前若干個顆粒的第一次內(nèi)循環(huán)時的最小量化步長QS_min分別乘以預定系數(shù)后相加,得到當前顆粒預計的第一次內(nèi)循環(huán)時的最小量化步長QS_minp;所述系數(shù)的總和為1;B、使用QS_minP作為量化步長對當前的頻譜xr進行量化,得到的編碼長度為CL;反復根據(jù)CL與CL_limit的大小關(guān)系相應調(diào)節(jié)QS_minP的大小、并采用調(diào)節(jié)后的QS_minP得到CL,直到CL等于CL_limit、或在小于CL_limit的情況下盡可能接近CL_limit時,得到當前顆粒的QS_min為QS_minP;其中,根據(jù)CL與CL_limit的大小關(guān)系相應調(diào)節(jié)QS_minP的大小是指當CL>CL_limit時增大QS_minP,當CL<CL_limit時減小QS_minP。
2、 如權(quán)利要求1所述的內(nèi)循環(huán)方法,其特征在于,將同一聲道中的前 若干個顆粒的第一次內(nèi)循環(huán)時的最小量化步長QS一min分別乘以預定系數(shù)后 相加是指將同 一聲道中的前一個顆粒的QS—min乘以2,同一聲道中當前顆粒之 前第二個顆粒的QS—min乘以-1,然后相加。
3、 如權(quán)利要求1或2所述的內(nèi)循環(huán)方法,其特征在于,當CL〉CL—limit 時增大QS—minP,當CL<CL—limit時減小QS—minp具體包括得到CL和CL—limit的差為AD二 CL - CL—limit;當AD>0時,增大 QS—minp,當AD<0時,減小QS—minP;增大和減小QS—minP的幅度與AD 的絕對l直成正比。
4、 如權(quán)利要求1或2所述的內(nèi)循環(huán)方法,其特征在于,步驟B具體包括31、 設(shè)置top和AS為O, bot為最大量化補償;得到頻語xr的絕對值最 大值xmbsmax;32、 4吏用top作為量化步長對xrabsmax進行量化,得到量化值q-max,如果q-max在標準Huffman表允許的最大值內(nèi),則進行步驟33;否則將top 增加1,返回步驟32;,33、 i殳置up為bot力口 1, dn為top減1, step為QS—minP,長口果step小 于top,則令step等于top;,34、 使用step作為量化步長對xr進行量化,得到的編碼長度為CL,得 到CL減去CL—limit的差△ D;,35、 當AD等于0時進行步驟37;當AD大于0時,設(shè)置AS為大于或等于1的值,設(shè)置dn等于step,進 行步驟36;當AD小于0時,如果AS大于或等于1、或是step等于top、或是step -dn<=l則跳至步驟37;否則設(shè)置AS為小于或等于-1的值,設(shè)置up等于 step,進4亍步驟36;,36、 改變step,使step增力口AS;如果改變后的step小于或等于dn,則step等于dn加l,返回步驟34;如果改變后的step大于或等于up,則令step等于up減1,如果得到的 step等于或小于dn,則令step等于up后返回步驟34,如果得到的step大于 dn則直接返回步驟34;如果改變后的step小于up且大于dn,則直接返回步驟34;,37、 得到當前顆粒的QS—min為step,結(jié)束。
5、 如權(quán)利要求4所述的內(nèi)循環(huán)方法,其特征在于,步驟35中當AD小于O時,AS為AD除以C后減去1的差;當AD大于O時, △ S為AD除以C后加上1的和;C為一在16到1024之間的常數(shù)。
6、 一種MP3編碼量化中的內(nèi)循環(huán)裝置,其特征在于,包括量化單元,用于當接收到QS—rninp時,以QS—minp作為量化步長對當前 的頻譜xr進行量化,得到的編碼長度為CL;預估單元,用于將同一聲道中的前若干個顆粒的第一次內(nèi)循環(huán)時的最小量化步長QS一min分別乘以預定系數(shù)后相加,得到當前顆粒預計的第 一次內(nèi) 循環(huán)時的最小量化步長QS一mitip,并發(fā)送給所述量化單元;所述系數(shù)的總和為i;調(diào)節(jié)單元,用于根據(jù)所述CL與CL—limit的大小關(guān)系相應調(diào)節(jié)QS一minp 的大小,并將調(diào)節(jié)后的QS—minp發(fā)送給所述量化單元;當CL等于CL—limit、 或在小于CL一limit的情況下盡可能接近CL—limit時,輸出當前顆粒的 QS—min為QS—minP;其中,根據(jù)CL與CL—limit的大小關(guān)系相應調(diào)節(jié)QS—minP 的大小是指當CL〉CL—limit時增大QS—minP,當CL<CL—limit時減小 QS—minP。
7、 如權(quán)利要求6所述的內(nèi)循環(huán)裝置,其特征在于所述預估單元將同一聲道中的前若干個顆粒的第一次內(nèi)循環(huán)時的最小 量化步長QS一min分別乘以預定系數(shù)后相加是指將同 一聲道中的前一個顆粒 的QS一min乘以2,同一聲道中當前顆粒之前第二個顆粒的QS一min乘以-1, 然后相加得到所述QS—minp。
8、 如權(quán)利要求6或7所述的內(nèi)循環(huán)裝置,其特征在于,所述預估單元 當CL 〉 CL—limit時增大QS—minP,當CL < CLJimit時減小QS—minP具體是 指所述預估單元得到CL和CL—limit的差為AD= CL - CL—limit;當AD>0 時,增大QS—minp,當ADO時,減小QS—minP;增大和減小QS—minP的幅 度與AD的絕對^i成正比。
9、 如權(quán)利要求1或2所述的內(nèi)循環(huán)裝置,其特征在于,調(diào)節(jié)單元具體 包括修正模塊;初始化模塊,用于設(shè)置top和AS為0, bot為最大量化補償;得到頻譜 xr的絕對值最大值xrabsmax;使用top作為量化步長對xrabsmax進行量化, 得到量化值q-max;如果q-max不在標準Huffman表允許的最大值內(nèi),則將 top增力口 1再次量4b;否則i殳置up為bot力口 1, dn為top減1, step為QS—minP, 如果step小于top,則令step等于top,并將step作為QS—minp發(fā)送給所述量化單元;輸出模塊,用于將step作為當前Granule的QS—min輸出;調(diào)節(jié)模塊,用于將量化單元得到的CL減去CL—limit得到AD;當AD 等于O時指示所述輸出單元輸出;當AD小于0時,如果AS大于或等于1、 或是step等于top、或是step - dn<=l則指示所述輸出單元輸出,否則設(shè)置 AS為小于或等于-1的值,設(shè)置up等于step,指示所述修正模塊工作;當 AD大于0時,設(shè)置AS為大于或等于1的值,設(shè)置dn等于step,指示所述 修正模塊工作;所述修正模塊用于改變step,使step增加AS;如果改變后的step小于 up且大于dn,則直4妻將step作為QS—minp發(fā)送給所述量化單元;如果改變 后的step小 于或等于dn,則step等于dn加l,將step作為QS—minp發(fā)送給 所述量化單元;如果改變后的step大于或等于up,則令step等于up減1, 如果得到的step等于或小于dn,則令step等于up后將step作為QS—minP 發(fā)送給所述量化單元,大于dn則直接將step作為QS—minp發(fā)送給所述量化 單元。
10、如權(quán)利要求4所述的內(nèi)循環(huán)方法,其特征在于所述修正模塊當AD小于0時,令AS為AD除以C后減去1的差;當 AD大于0時,令AS為AD除以C后加上1的和;C為一在16到1024之間的常數(shù)。
全文摘要
MP3編碼量化中的內(nèi)循環(huán)方法及MP3編碼器;方法包括將同一聲道中的前若干個顆粒第一次內(nèi)循環(huán)時的最小量化步長分別乘以預定系數(shù)后相加,得到當前顆粒預計的第一次內(nèi)循環(huán)時的最小量化步長QS_min<sub>p</sub>;所述系數(shù)的總和為1;使用QS_min<sub>P</sub>作為量化步長對當前的頻譜xr進行量化,得到的編碼長度為CL;反復根據(jù)CL與CL_limit的大小關(guān)系相應調(diào)節(jié)QS_min<sub>P</sub>的大小、并采用調(diào)節(jié)后的QS_min<sub>P</sub>得到CL,直到CL等于CL_limit、或在小于CL_limit的情況下盡可能接近CL_limit時,得到當前顆粒的QS_min為QS_min<sub>P</sub>。本發(fā)明能快速找到第一次內(nèi)循環(huán)時的最小量化步長,提高效率。
文檔編號G10L19/00GK101593521SQ200910088069
公開日2009年12月2日 申請日期2009年7月1日 優(yōu)先權(quán)日2009年7月1日
發(fā)明者林中松 申請人:北京中星微電子有限公司