• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            牽著老婆滿街逛

            嚴(yán)以律己,寬以待人. 三思而后行.
            GMail/GTalk: yanglinbo#google.com;
            MSN/Email: tx7do#yahoo.com.cn;
            QQ: 3 0 3 3 9 6 9 2 0 .

            AAC 系統(tǒng)算法分析

            轉(zhuǎn)載自:http://www.vcproj.net/aac-system-algorithm-analysis/

            (英語:Advanced Audio Coding,AAC),出現(xiàn)于1997年,基于 MPEG-2的音訊編碼技術(shù)。由Fraunhofer IIS、杜比實(shí)驗(yàn)室、AT&T、Sony(新力)等公司共同開發(fā),目的是取代MP3格式。

            背景

            ?1997年制訂不兼容MPEG-1的音頻標(biāo)準(zhǔn)MPEG-2 NBC,即MPEG-2 AAC
            ?1999年MPEG-2 AAC增加LTP和PNS工具,形成MPEG-4 AAC v1
            ? 2002年MPEG-4 AAC v1增加了SBR和錯(cuò)誤魯棒性工具,形成MPEG-4 HE-AAC
            ? 2004年MPEG-4 HE-AAC引入PS模塊,提升低碼率性能,形成EAAC+

            技術(shù)指標(biāo)

            ?采樣率:8kHz – 96kHz
            ?碼率: 8kbps – 576kbps
            ?聲道:最多支持48個(gè)主聲道,16個(gè)低頻增強(qiáng)聲道

             

            1.1 系統(tǒng)框圖

            編碼框圖

              49 AAC 系統(tǒng)算法分析

             

            解碼框圖

            2012021421335992 AAC 系統(tǒng)算法分析

            1.2 編碼概述    

            其整體AAC 編解碼系統(tǒng),如圖所示,其編碼流程概述如下: 為當(dāng)一音頻信號(hào)送至編碼端時(shí),會(huì)分別送至聽覺心里模型(Psychoacoustic Model)以求得編碼所需之相關(guān)參數(shù)及增益控制(gain control)模塊中,將信號(hào)做某個(gè)程度的衰減,以降低其峰值大小,如此可減少Pre-echo 的發(fā)生。之后,再以MDCT 將時(shí)域信號(hào)轉(zhuǎn)換至頻率域,而送入至TNS(Temporal Noise Shaping Module)模塊中,來判斷是否需要啟動(dòng)TNS,此模塊系利用開回路預(yù)測(cè)(open-loop prediction) 來修飾其量化噪聲,如此可將其量化噪聲的分布,修飾到原始信號(hào)能量所能含蓋的范圍之下,進(jìn)一步的減少Pre-echo 的發(fā)生,若TNS 被啟動(dòng),則傳出其預(yù)測(cè)差值;反之,則傳出原始頻譜值。AAC 為了提升其壓縮效率,則使用了Joint Stereo Coding與預(yù)測(cè)(Prediction)模塊來進(jìn)一步消除信號(hào)間的冗余成份。在Joint Stereo Coding中又可分為Intensity Stereo Coding 與M/S Stereo Coding。在Intensity Stereo Coding模塊中,是利用信號(hào)在高頻時(shí),人耳只對(duì)能量較敏感,對(duì)于其相位不敏感之特性,將其左右聲道之頻譜系數(shù)合并,以節(jié)省使用之位;在M/S Stereo Coding 模塊中,利用左右聲道之和與差,做進(jìn)一步地壓縮,若其差值能量很小,如此便可以用較少之位編碼此一聲道,將剩余之位應(yīng)用于另一聲道上的編碼,如此來提升其壓縮率。而預(yù)測(cè)模塊的主要架構(gòu)是使用Backward Adaptive Predictors,利用前兩個(gè)音頻幀來預(yù)測(cè)現(xiàn)在的音頻幀,若決定啟動(dòng)此模塊,則傳出其預(yù)測(cè)差值,如此一來可以減少其數(shù)據(jù)量,達(dá)數(shù)據(jù)壓縮之目的。經(jīng)過上述處理頻譜信號(hào)上的壓縮tools程序后,則將其數(shù)據(jù)予以量化與編碼,為了達(dá)到量化編碼的最佳化,AAC 使用了雙巢狀式循環(huán)(two nested loop)的量化編碼結(jié)構(gòu),以得最佳的壓縮質(zhì)量,最后則將其位串送至解碼端,而完成整個(gè)編碼程序。

                為了允許其系統(tǒng)可對(duì)音頻質(zhì)量與內(nèi)存/處理功率要求之間做一舍取,因此AAC 系統(tǒng)提供了三種profiles:Main profile、Low Complexity(LC) profile、Scaleable Sampling Rate(SSR) profile。且每一種profile所使用的tools皆不同,下表表示其三種不同profile所需使用的tools。

             

            Took Name Main LC SSR
            Noiseless coding Used Used
            Quantizer Used Used Used
            M/S Used Used Used
            Prediction Used Not Use
            Intersity/Coupling Used Not Use
            TNS Used Limited Limited
            Filter Bank Used Used
            Gain Control Not Use

            2. MPEG2 AAC碼流格式與解析

            MPEG2 AAC規(guī)定了2種碼流格式ADIF和ADTS,前者用于屬于文件格式用于存儲(chǔ),后者屬于流格式,用于傳輸。如圖

            50 AAC 系統(tǒng)算法分析

             

             

             

            511 AAC 系統(tǒng)算法分析

            其中Raw_data_block為基本碼流組件,其他部分為格式信息。Raw_data_block格式如下,id_syn_ele:3位標(biāo)志位,指示后面所跟著的數(shù)據(jù)流的類型。

             

            id_syn_ele 數(shù)據(jù)流
            ID_SCE(0×0) single_channel_element()
            ID_CPE(0×1) channel_pair_element()
            ID_CCE(0×2) coupling_channel_element()
            ID_LFE(0×3) lfe_channel_element()
            ID_DSE(0×4) data_stream_element()
            ID_PCE(0×5) program_config_element()
            ID_FIL(0×6) fill_element()

            ID_DSE,ID_PCE,ID_FIL所指示的流為擴(kuò)展流或用戶數(shù)據(jù)流,非核心算法區(qū),故暫不提及。而single_channel_element(),channel_pair_element(),coupling_channel_element()

            lfe_channel_element()有如下類似的結(jié)構(gòu),

            521 AAC 系統(tǒng)算法分析

             

            individual_channel_stream的核心數(shù)據(jù)格式如下:

            531 AAC 系統(tǒng)算法分析

            2.3 MPEG2 AAC 碼流數(shù)據(jù)結(jié)構(gòu)層次圖

             

             

             

            注1:虛線表示可能存在。

            注2:section層只在huffman解碼時(shí)存在。

            注3:短窗時(shí)windows和scalefactor band 有交織

            注4:長(zhǎng)窗(含開始窗和結(jié)束窗)windows個(gè)數(shù)和windows_group的個(gè)數(shù)都是1。

            MPEG2 AAC規(guī)定1024個(gè)sample數(shù)據(jù)為一個(gè)frame,一個(gè)frame的sample從時(shí)域通過MDCT映射到頻域時(shí)由于引入50%交疊,所以變成2048個(gè)譜線。如果是長(zhǎng)塊變換則一個(gè)frame只有一個(gè)window group,每個(gè)window group有一個(gè)window,每個(gè)window 有2048個(gè)譜線。如果是短塊變換則可能有若個(gè)window group,每個(gè)window group可能有若干個(gè)window,但是所有window group的window個(gè)數(shù)加一起一定為8個(gè),此時(shí)每個(gè)windows 有256個(gè)譜線。注意分window group的意義在于同一個(gè)window group的譜線數(shù)據(jù)使用一個(gè)scalefactor。而每個(gè)windows又可以分為n個(gè)section(1≤n≤max_sfb(一個(gè)frame內(nèi)最多的scalefactor band的個(gè)數(shù))),每個(gè)section有若干個(gè)譜線數(shù)據(jù)(spectral data),但注意,section的邊界必須和scalefactor band的邊界重合,所以也可以說每個(gè)section有若干個(gè)scalefactor band。提出section的意義在于統(tǒng)一個(gè)section的譜線數(shù)據(jù)(spectral data)使用同一個(gè)huffman table編碼。

            MPEG2 AAC提出的window group和section的個(gè)數(shù)都是不定的,所以編碼端要在比特流中加入相關(guān)的side info用來指示window group和section分割方法。在isc_info()中的scale_factor_grouping和section_data()中的sect_len_incr就是起到這樣的作用.

            2.2 碼流解析

            碼流可以分為side info的解析和壓縮數(shù)據(jù)的解析,side info解析出的狀態(tài)信息和控制信息。都使用定長(zhǎng)碼。解碼只要按照格式解析出來即可。由于解碼簡(jiǎn)單和篇幅限制這里就不予提及,請(qǐng)查閱13818-7標(biāo)準(zhǔn)語法部分。其次是對(duì)壓縮數(shù)據(jù)的解析,壓縮數(shù)據(jù)屬于無損編碼,主要是變長(zhǎng)碼。使用熵編碼算法,后面會(huì)直接在無損編碼部分提及。查閱本文檔主要技術(shù)中無損編碼部分。

            3 主要技術(shù)

            3.1   Filter Bank and Block Switching

            濾波器組(Filter Bank)是MPEG-2 AAC 中一個(gè)基本的組件,扮演著將音頻信號(hào)從時(shí)間域轉(zhuǎn)換至頻譜域之表示,其在解碼端則反向處理。對(duì)Filter bank而言,它必需具備對(duì)音頻編碼有著完美的重建的特性,然而,有時(shí)其音頻還原似乎不是如此完美,其主要因素在于,處理時(shí)間域轉(zhuǎn)換至頻譜域時(shí)的音頻信號(hào),是以frame by frame 的方式送至Filter bank,也就是將目前的音頻信號(hào)切割成多個(gè)音頻幀來處理,因而會(huì)造成音頻幀間的邊緣信號(hào),給予不同精確度的編碼,并造成信號(hào)的不連續(xù)性,都將造成日后還原時(shí),所發(fā)生的質(zhì)量影響,其這種效應(yīng),稱之為塊效應(yīng)(Blocking effect),為了解決此一問題,其塊間的信號(hào)在送入filter bank 之前,一個(gè)overlapping windowing 的方式將被采用來減少其信號(hào)不連續(xù)性。

             

            3.1.1MDCT and IMDCT

                在AAC 或是其它音頻信號(hào)的編解碼器上,最普遍解決上述問題的filter bank設(shè)計(jì),即為在編碼端上的MDCT(Modified Discrete Cosine Transform)及解碼端上的IMDCT (Inverse Modified Discrete Cosine Transform)。MDCT/IMDCT 使用了一種技術(shù),稱為TDAC(Time Domain Aliasing Cancellation),它是使用了一種winow-overlape-add 的處理方式來消除時(shí)間域上的交迭(aliasing ),如圖2.10所示為AAC Filter bank 的框圖表示,對(duì)一個(gè)輸入音頻信號(hào)的目前音頻幀,是取前一個(gè)音頻幀的后面50%與目前輸入的音頻幀音頻值前50%做為此次處理的音頻。

             

             55 AAC 系統(tǒng)算法分析

            MDCT 與IMDCT 的數(shù)學(xué)式子可分別表示如(2.20)、(2.21)式:

            MDCT公式

             56 AAC 系統(tǒng)算法分析

             

            IMDCT公式

             

             57 AAC 系統(tǒng)算法分析

            3.1.2Windowing and Block Switching

              對(duì)一個(gè)MDCT filter bank 的頻率響應(yīng)的分辨率改善,進(jìn)來的音頻信號(hào)在經(jīng)MDCT 轉(zhuǎn)換前,需經(jīng)過一個(gè)window function相乘后才送至MDCT。AAC 支持兩種window shapes,即sin window 及KBD(Kaiser-Bessel Derived) window,KBD window 可以比sine window 更準(zhǔn)確的重建出原始的時(shí)間域的信號(hào)。在MPEG-2 AAC 系統(tǒng)中,可以允許其KBD 及sin window 的切換,來達(dá)到最好的來接受輸入信號(hào)的狀態(tài),而得到更好的音質(zhì)重建結(jié)果。

                另外,MPEG-AAC 編碼器中,為了在聲音特性、編碼效率與聲音壓縮質(zhì)量上取得適合的塊長(zhǎng)度,總共提供N=256(短塊)與N=2048(長(zhǎng)塊)兩種塊長(zhǎng)度作為選擇。其塊的選擇,是根據(jù)聽覺心理模型(Psychoacoustic Model)的PE值來決定。通常,長(zhǎng)塊的使用可以被選擇來減少其信號(hào)的冗余部份,并得到較高的頻率分辨率,來改善編碼質(zhì)量,但是也可能對(duì)某些瞬時(shí)信號(hào)而產(chǎn)生問題。 一般當(dāng)音頻信號(hào)在時(shí)間域上有變化較大的瞬時(shí)信號(hào)(Transient signal)時(shí),則以連續(xù)的8個(gè)短塊來處理,可以提升在音頻壓縮時(shí)的精確度并減少pre-echo的發(fā)生;相對(duì)的,當(dāng)音樂數(shù)據(jù)屬于穩(wěn)態(tài)的信號(hào)(Stationary signal),則使用長(zhǎng)塊來處理。而在長(zhǎng)短塊轉(zhuǎn)換中,還存在著兩種緩沖塊,長(zhǎng)塊切換到短塊必須經(jīng)過起始?jí)K(start block)才切換到短塊,從短塊切換到長(zhǎng)塊也必須經(jīng)過停止塊(stop block)才切換到長(zhǎng)塊。下圖則顯示其塊切換方式。

            58 AAC 系統(tǒng)算法分析

             

            3.2   Temporal Noise Shaping

            由于MPEG-2 AAC 的塊大小比MPEG-1 layer3的還要大,因此,一般在處理單一長(zhǎng)塊信號(hào)時(shí),假如在時(shí)間上有一急遽的信號(hào)變化時(shí),經(jīng)由在時(shí)間域與頻率域上的信號(hào)轉(zhuǎn)換,再經(jīng)量化后,轉(zhuǎn)回其時(shí)間域時(shí),有可能會(huì)增加造成 pre-echo的現(xiàn)象發(fā)生。而pre-echo的發(fā)生,從時(shí)間域上的遮蔽效應(yīng)可發(fā)現(xiàn),若一較高的能量是在轉(zhuǎn)換長(zhǎng)塊的前半部時(shí),其經(jīng)由量化所產(chǎn)生的噪聲,可能被postmasking 所遮蔽,但是若較高的能量是在長(zhǎng)塊的后半部時(shí),則散布到前半部的噪聲將無法被 premasking 所遮蔽,這就是由于對(duì)長(zhǎng)塊而言,其在時(shí)間域上的分辨率較低,因此噪聲分布范圍超過 premasking 的遮蔽范圍,而造成量化的噪聲將被人耳所聽到,此一現(xiàn)象,就是稱為 pre-echo。下圖所示為pre-echo現(xiàn)象發(fā)生所造成時(shí)間域上信號(hào)的失真。減少 Pre-echo 現(xiàn)象有許多種方式,如經(jīng)由動(dòng)態(tài)地切換塊大小可解決此一問題,另外,在MPEG-2 AAC 中加入了TNS,也是用來減少pre-echo的現(xiàn)象。而TNS 概念是使每個(gè)單一塊再經(jīng)過TNS編解碼后,將量化噪聲的分布能被原信號(hào)所遮蔽。

            59 AAC 系統(tǒng)算法分析

             

            在編碼端,首先將經(jīng)過 MDCT 模塊的頻域信號(hào)送入,利用 Levinson- Durbin recursion 方法取得此音頻塊的反射系數(shù)(reflection  coefficients)與預(yù)測(cè)增益(prediction gain),當(dāng)求得的預(yù)測(cè)增益大于MPEG2-AAC 標(biāo)準(zhǔn)中所設(shè)定的常數(shù)值,則使用TNS模塊,首先為了減少反射系數(shù)傳送所需的bit rate,將反射系數(shù)作量化,然后再經(jīng)過Truncate coefficients 來調(diào)整TNS 系數(shù)的階數(shù),開始會(huì)根據(jù)不同profile所定義的系數(shù)階數(shù),將后面系數(shù)小于0.1的系數(shù)值舍去,來調(diào)整系數(shù)階數(shù),使得產(chǎn)生的 LPC 預(yù)測(cè)系數(shù)階數(shù)少于 profile 定義的階數(shù),最后將反射系數(shù)經(jīng)過計(jì)算求出TNS 的預(yù)測(cè)系數(shù),送入TNS filter (MA)中。如果沒有啟動(dòng)TNS,則將原始的頻域譜線送出。 在編碼端只需要傳送量化后所需要的反射系數(shù)階數(shù)以及整數(shù)的索引值,而不必傳出所有反射系數(shù)的信息。給Index 及TNS order的信息將使用在解碼端,用來還原量化后的反射系數(shù)。當(dāng)解碼端所接收到的反射系數(shù)階數(shù)大于 0,代表有使用TNS 編碼,在解碼端就會(huì)啟動(dòng) TNS 解碼模塊,求得編碼時(shí)的預(yù)測(cè)系數(shù)送入 TNS filter(AR)中,解碼出頻率域上信號(hào)的數(shù)據(jù) 。  加入TNS 模塊后,其也有一些side information的項(xiàng)目需加入至位串(bitstream)里,以提供解碼端使用,如表所示。由于 TNS 預(yù)測(cè)級(jí)數(shù)對(duì)LONG window 而言,最多為20,對(duì)SHORT window,最多為7,因此,TNS 在編碼中對(duì)side information,最多增加的位數(shù)目為:

            LONG window:1+1*(2+1+6+5+1+1+4) = 97 bits

            SHORT window:1+8*(1+1+4+3+1+1+7*4) = 313 bits

             

            Side information 位寬 注釋
            TNS Present or not 1  
            Number of filters 2/1 長(zhǎng)/短 窗
            TNS coefficients resolution 1  
            TNS filter length in band 6/4 長(zhǎng)/短 窗
            TNS filter order 5/3 長(zhǎng)/短 窗
            TNS filter direction 1  
            Coefficient compress or not 1  
            Bit per coefficient 4  

            3.3   Joint Stereo Coding

            MPEG AAC 的系統(tǒng)為了提升其編碼效率及壓縮質(zhì)量,Joint Stereo Coding 利用了左右聲道的特性,對(duì)立體音編碼引進(jìn)了兩種技術(shù),即M/S Stereo與Intensity Stereo。

             

            3.3.1  M/S Stereo

            在MPEG-2 AAC 系統(tǒng)中,M/S(Mid/Side) Stereo coding被提供在多聲道信號(hào)中,每個(gè)聲道對(duì)(channel pair)的組合,也就是每個(gè)通道對(duì),是對(duì)稱地排列在人耳聽覺的左右兩邊,其方式簡(jiǎn)單,且對(duì)位串不會(huì)引起較顯著的負(fù)擔(dān)。 一般其在左右聲道數(shù)據(jù)相似度大時(shí)常被用到,并需記載每一頻帶的四種能量臨界組合,分別為左、右、左右聲道音頻合并(L+R)及相減(L-R)的兩種新的能量,其表示式如(2.34)式所示。然后再利用上面章節(jié)所提到聽覺心理學(xué)模型與濾波器來處理。一般,若所轉(zhuǎn)換的Sid聲道的能量較小時(shí),M/S Stereo coding 可以節(jié)省此通道的位數(shù),而將多余的位應(yīng)用于另一個(gè)所轉(zhuǎn)換的聲道,即Mid 聲道,進(jìn)而可提高此編碼效率。對(duì)M/S Stereo coding,可以選擇性地切換其在時(shí)間域上塊與塊間是否使用

            的時(shí)機(jī),其切換的旗標(biāo)(ms_used)將被設(shè)定與否而傳送至解碼端上。

            60 AAC 系統(tǒng)算法分析

             

            3.3.2  Intensity Stereo

              人類聽覺系統(tǒng)一般對(duì)低頻信號(hào)而言,其對(duì)信號(hào)的能量與相位皆較敏感 ,相對(duì)于在高頻信號(hào),人耳只對(duì)其能量較為敏感,而相位較不敏感。Intensity Stereo coding就是利用此一人耳的特性,被使用在高頻區(qū)域里,聲道對(duì)之間的不相關(guān)性條件下,這個(gè)方式,在過去對(duì)立體聲或多聲道編碼中已廣范地被使用,又可被稱為dynamic crosstalk 或是channel coupling 等等。其編碼是利用一因素來完成,也就是在高頻聲音組件的接收感覺,主要是依賴在他們的能量分析上,即時(shí)間封包(time envelopes),因此,它對(duì)某些型式的信號(hào)就有可能僅需傳送單一頻譜值來達(dá)到,其它音頻的聲道在不遺失質(zhì)量下,可以虛擬地由此一頻譜值被表示出來。而原始編碼聲道的能量,即time envelopes,對(duì)每一個(gè)scalefactor band,經(jīng)由一個(gè)調(diào)整(scaling)大小的運(yùn)算因子,近似地被表示而儲(chǔ)存,使得在解碼端,對(duì)每一個(gè)聲道的信號(hào),可藉由此一因子來重建。

              如(2.35)式所示,經(jīng)由相加通道對(duì)(channel pair)的頻譜信號(hào),再乘上一個(gè)能量調(diào)整因子,來求得其每一個(gè)scalefactor band 的Intensity Stereo 信號(hào)的頻譜系數(shù)

            在AAC 中,因?yàn)樽笥衣暤乐粋鞒鲆唤M合并后的頻譜系數(shù),其位置放置于左聲道,右聲道中頻譜系數(shù)將會(huì)被設(shè)成零,以此來降低編碼所需之位數(shù)。

            612 AAC 系統(tǒng)算法分析

             

            3.4   量化編碼

              在完成之前的頻譜處理的工具后,實(shí)際位率減少是在量化處理中來達(dá)到,這個(gè)模塊主要的目的是量化頻譜上的數(shù)據(jù),使得量化噪聲能夠滿足聲音心理模式的要求。迭代循環(huán)(Iteration loop)模塊被用來決定量化的step size,并保證其允許的失真不會(huì)超過,并在滿足迭代循環(huán)后,非線性的量化函數(shù)被執(zhí)行。另外,對(duì)每一個(gè)音頻幀被量化的有效位數(shù),也需在某個(gè)臨界之下,一般其值與取樣率及所要求的位率有關(guān),依據(jù)(2.36)式,來定義每個(gè)音頻幀可以使用的位數(shù)。在每個(gè)音頻幀開始計(jì)算時(shí),先將一些所需的變量初始化,如果此音頻幀里所有的頻域數(shù)據(jù)皆為0,則可以跳過此音頻幀不作處理,如果有頻域數(shù)據(jù)則將進(jìn)入outer iteration loop,開始進(jìn)行頻域數(shù)據(jù)的量化與位計(jì)算,最后將未使用的位數(shù),保留到下一個(gè)音頻幀時(shí)繼續(xù)使用。

            622 AAC 系統(tǒng)算法分析

             

              非均勻量化器被用在 AAC 里,其量化方式如下式所示。

            631 AAC 系統(tǒng)算法分析

             

            在公式中,MAGIC_NUM被定義為0.4054,且common_scalfac 是對(duì)所有的scalefactor bands 的通用量化步階大小(global quantizer step size)。因此量化器可能被改變1.5dB 的步長(zhǎng)大小,且量化范圍被限制在±8191 。

            3.5  無損解碼

            3.5.1解碼ics_info()

              位寬 作用
            ics_reserved_bit

            1

            一定為‘0’
            window_sequence

            2

            窗類型

            00:長(zhǎng)窗 01:起始窗
            10:短窗 11:結(jié)束窗

             

            window_shape

            1

            決定使用正弦窗還是KBD窗

            0:正弦窗 1:KBD窗

            max_sfb

            4/6

            短窗下4位,其他時(shí)6位,表示每個(gè)窗組內(nèi)的scalefactor band的個(gè)數(shù)
            scale_factor_grouping

            7

            在短窗時(shí)有效。指明window group的分割方式。7個(gè)bit表示8個(gè)窗中的1-7窗的分組情況。

            即bit(8-n)表示window(n)的分組屬性,當(dāng)bit(8-n)=‘1’表示window(n)和window(n-1)是同一個(gè)組,若bit(8-n)=‘0’表示window(n)和window(n-1)是不是同一個(gè)組。

            如下圖

            predictor_data_present

            1

            指示碼流中是否出現(xiàn)預(yù)測(cè)數(shù)據(jù)
            predictor_reset

            1

            指示預(yù)測(cè)器是否全部復(fù)位
            predictor_reset_group_number

            5

            指示預(yù)測(cè)器組是否復(fù)位
            prediction_used

            1

            指示每個(gè)scalefactor band是否是由預(yù)測(cè)器

             

            3.5.2huffman解碼算法

             AAC使用huffman編碼算法對(duì)scalefactor和量化譜線數(shù)據(jù)進(jìn)行編碼,AAC標(biāo)準(zhǔn)一共有12個(gè)有效碼本,一個(gè)碼本專用于scalefactor解碼.11個(gè)碼本用于譜線系數(shù)的解碼.有4個(gè)無效碼本,其中1個(gè)碼本表示傳輸?shù)南禂?shù)全位零,是0碼本,不需解碼.2個(gè)碼本是intensity碼本,也是0碼本.在為譜線系數(shù)解碼的11個(gè)碼本中,每個(gè)碼本有自己可以編碼的最大系數(shù)值LAV表示.如表2, 用于譜線系數(shù)的解碼的11個(gè)碼本中最后一個(gè)碼本可以解碼出譜線系數(shù)的最大值是16.但當(dāng)解碼出譜線系數(shù)的值大于0小于16的時(shí)候.解碼出的值就是實(shí)際的譜線系數(shù)的絕對(duì)值,當(dāng)解碼鋤地譜線系數(shù)是16時(shí),表示退出huffman解碼,使用其他方式解碼.所以在該碼本中解碼出的值16被定義成ESC_FLAG.表2中的unsigned_cb[i]標(biāo)志位表示該碼本是有符號(hào)碼本還是無符號(hào)碼本, unsigned_cb[i]=0時(shí)表示該碼本是有符號(hào)碼本, unsigned_cb[i]=1時(shí)表示該碼本是無符號(hào)碼本.解碼有符號(hào)數(shù)時(shí),先按照無符號(hào)解碼再從輸入的解碼比特流中提取符號(hào)位,若解碼出的譜線系數(shù)非零,則其符號(hào)位緊跟在被該譜線系數(shù)的碼字的后面.

             

            Codebook Number, i unsigned_cb[i] Dimension of Codebook LAV for codebook Codebook listed 
            in
            0 - - 0 -
            1 0 4 1 Table A.2
            2 0 4 1 Table A.3
            3 1 4 2 Table A.4
            4 1 4 2 Table A.5
            5 0 2 4 Table A.6
            6 0 2 4 Table A.7
            7 1 2 7 Table A.8
            8 1 2 7 Table A.9
            9 1 2 12 Table A.10
            10 1 2 12 Table A.11
            11 1 2 (16) ESC Table A.12
            12 - - (reserved) -
            13 - - (reserved) -
            14 - - intensity out-of-phase -
            15 - - intensity in-phase -

             

            3.5.3解碼section_data()

                Section data部分的內(nèi)容是每個(gè)section的分割方式和每個(gè)section選擇的碼本。

            3.5.4解碼scale_factor_data()

                scale_factor_data的內(nèi)容是解碼每個(gè)scalefactor band中的差分scale factor值。

            3.5.5解碼spectral_data()

            這部分內(nèi)容主要解碼量化譜線信息spectral_data(). AAC的huffman編碼算法對(duì)量化譜線有兩步分組處理.如上所述,第一步分組是分出scalefactor band中的譜線個(gè)數(shù)是4的倍數(shù).目的是進(jìn)行4個(gè)譜線一起編碼.第二步分割是標(biāo)準(zhǔn)中把1個(gè)或幾個(gè)scalefactor band合并成一個(gè)section.同一個(gè)section內(nèi)的所有scalefactor band的譜線使用同一個(gè)huffman碼表.所以,如果要進(jìn)行huffman解碼,section的寬度信息和碼本號(hào)作為side information附加在section data中傳輸.解碼端要先解出這些信息才能進(jìn)行huffman解碼.而section的長(zhǎng)度小于scalefactor band的個(gè)數(shù)而大于scalefactor windows band的個(gè)數(shù). 為了最大限度的匹配量化譜線的統(tǒng)計(jì)特性,Huffman為了使量化譜線的統(tǒng)計(jì)特性最大化的匹配huffman碼本,section的數(shù)量允許和scalefactor band的數(shù)量一樣大. Section個(gè)數(shù)的最大值是max_sfb.但注意section的邊界要與scalefactor band的邊界重合. 用huffman編碼的量化解碼系數(shù)的Four-tuple 或2-tuples的傳送順序是從低頻系數(shù)到高頻系數(shù). 對(duì)于每個(gè)塊有多個(gè)windows的情況,要注意有分組和交織情況,系數(shù)的集合需要解交織,系數(shù)存儲(chǔ)在數(shù)組x_quant[g][win][sfb][bin]。

            posted on 2013-02-21 00:17 楊粼波 閱讀(2931) 評(píng)論(0)  編輯 收藏 引用

            久久久国产精品福利免费 | www.久久精品| 久久精品国产2020| 欧美粉嫩小泬久久久久久久| 91麻精品国产91久久久久| 99精品久久久久中文字幕| 久久久噜噜噜久久熟女AA片| 色欲综合久久躁天天躁蜜桃| 三级三级久久三级久久| 狠狠色丁香婷婷久久综合五月| 香港aa三级久久三级老师2021国产三级精品三级在 | 香蕉99久久国产综合精品宅男自 | 国产精品伦理久久久久久| 久久精品一区二区三区不卡| 国内精品久久久久影院免费| 国产精品欧美久久久天天影视| 久久99精品久久久久婷婷| 国产精品久久久久AV福利动漫| 久久国产精品成人影院| 91精品国产乱码久久久久久| 69久久精品无码一区二区| 国内精品久久久久久野外| 国产成人精品久久亚洲| 久久久久无码国产精品不卡| 亚洲国产成人精品女人久久久 | 香蕉久久av一区二区三区| 久久久无码一区二区三区| 国产精品久久久久…| 亚洲国产精品久久| 久久久WWW成人免费毛片| 一97日本道伊人久久综合影院| 性做久久久久久久久浪潮| 精品国产99久久久久久麻豆| 欧美噜噜久久久XXX| 国产精品一久久香蕉国产线看| 亚洲国产精久久久久久久| 久久久精品无码专区不卡| 久久久久99这里有精品10| 久久亚洲中文字幕精品有坂深雪| 精品久久久久久亚洲精品| 91精品国产高清久久久久久国产嫩草|