1.overviewdom
當使用Spectral extension時,channel中的高頻部分的transform coefficients由低頻部分合成。3d
transform coefficients合成包括:copy低頻部分的transform coefficients insert到高頻部分,做爲高頻部分的transform coefficients. inserted transform coefficients與pseudo-random noise作blending, scaling blended transform coefficients,使得blended transform coefficients match原始信號的spectral evelop, scale factor在encoder端基於spectral extension band計算,並傳送到decoder.code
spxbegf和spxendf標識spectral extension的起始和結束頻率。orm
2.Sub-Band Structureblog
transform coefficients #25到#228 組合成17個subband,每一個subband包含12個transform coefficients.ci
spx_begin_subbnd經過spxbegf獲得,標識第一個spctral extension subband的index.it
spx_end_subbnd經過spxendf獲得,標識最後一個spctral extension subband的index.io
幾個連續的spectral extension subband能夠組合成一個spectral extenssion bands,每一個spectral extension band產生一個spectral extension coordinate.table
spectral extension bands的個數和size由spectral extension band structure array(spxbndstrc[])決定。form
若是spxbndstr[bnd]爲0表示當前subband是一個新的spectral extension band的開始。
若是spxbndstr[bnd]爲1表示當前subband是屬於前一個spectral extension band。
3. Spectral extension coordinate
當使用spectral extension(chinspx[ch] == 1)時,spectral extension coordinate存在於每一個channel的每一個spectral extension band中。
spxcoe[ch] ==0,則當前channel 的spectral coordinates不包含在bitstream中,複用前面的spectral coordiantes.
spectral coordinate以浮點形式表示,包含4bit的spxcoexp[ch][bnd]和2bit的spxcomant[ch][bnd]。
spectral coordinate的mantissa是無符號的。當exponent 等於15時,mantissa的範圍爲0.5~1,當exponent小於15時,mantissa的MSB老是1因此不傳送只傳送接下來的2bit。
spectral coordinate的計算方法以下:
4.High Frequency Transform Coefficient Synthesis
1) Transform Coefficient Translation
Transform coefficient translation 主要是copy 低頻的transform coefficients並insert做爲高頻的transform coefficients.
spxstrtf是一個table中的index,用來決定被copy的第一個transform coefficients.
spx_begin_subbnd經過spxbegf獲得,是一個table的index,用來決定insert的第一個transform coefficients.
spx_end_subbnd經過spxendf獲得,是一個table的index,用來決定insert的最後一個transform coefficients.
tranform coefficient translation基於band進行,copy動做從copyindex處的transform coefficients,到copyindex+ bandsize– 1處的transform coefficients結束.
insert動做從insertindex處的transform coefficients,到insertindex+ bandsize– 1處的transform coefficients結束.
在每一個band作copy以前,copyindex+ bandsize– 1與copyendmant比較,若是大於等於copyendmant,那麼將copyindex reset成copyendmant,並將wrapflag[bnd]設置爲1.
2)Transform Coefficient Noise Blending
translated transform coefficients須要與pseudo-random noise作blending使得audio signal 聽起來更天然。
2.1)Blending Factor Calculation
首先須要計算pseudo-random noise與translated transform coefficients的blending factor.每一個band的blending factor是基於spxblend和該band的mid-point frequecy進行計算。
某一個block存在新的spectral extension coordinates,那麼當前block也存在spxblend參數,其餘block可能會複用spectral extension coordinates.
blending factor計算以下:
2.2)Banded RMS Energy Calculation
下一步計算translated coefficients的RMS energy. RMS energy用來在blending前scale pesudo-random noise sample。
RMS energy計算方法以下:
2.3)Transform Coefficient Band Border Filtering
當spectral extension attenuation 在某個channel enabled時,notch filter做用於base band和extension region的邊界周圍。
notch filter在extension region的第一個bin處是對稱的,總共cover 5個bin。filter的前3個attenuation values 經過spxattencod[ch]做爲index查找table獲得,後面2個attenuation values因爲對稱並不存在於table中。
notch filter也做用於在transorm coefficient translation時某個band處發生了wrap,即wrapflag[band]等於1時。
notch filter在transform coefficient translation和計算banded RMS energy以後,在noise scaling和transform coefficients blending以前。
2.4)Noise Scaling and Transform Coefficient Blending Calculation
爲了更合適的進行pesudo-random noise和translated transform coefficients的blending.每一個band的noise須要進行scale來match 每一個band中translated transform coefficients的RMS energy.
noise scaling和translated transform coefficients blending過程以下:
2.5)Blended Transform Coefficient Scaling
最後一步是將blended transform coefficients用spectral extension coordinates進行scale來造成最終的高頻transform coefficients.