版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
T/CAIACN00X—2023
低延遲低復(fù)雜度高清音頻編解碼技術(shù)規(guī)范
1范圍
本文件規(guī)定了低延遲低復(fù)雜度高清音頻編解碼技術(shù)標(biāo)準(zhǔn)音頻編碼的位流表示方式及解碼過(guò)程。
本文件適用于無(wú)線音頻、實(shí)時(shí)通信、廣播流媒體、網(wǎng)絡(luò)電視、虛擬現(xiàn)實(shí)和增強(qiáng)現(xiàn)實(shí)、視頻監(jiān)控等領(lǐng)
域。
2規(guī)范性引用文件
下列文件中的內(nèi)容通過(guò)文中的規(guī)范性引用而構(gòu)成本文件必不可少的條款。其中,注日期的引用文件,
僅該日期對(duì)應(yīng)的版本適用于本文件;不注日期的引用文件,其最新版本(包括所有的修改單)適用于本
文件。
GB/T9002-2017音頻、視頻和視聽(tīng)設(shè)備及系統(tǒng)詞匯
GB/T5271.1信息技術(shù)詞匯第1部分:基本術(shù)語(yǔ)(GB/T5271.1-2000eqvISO/IEC2382-1:
1993)
GB/T5271.4信息技術(shù)詞匯第4部分:數(shù)據(jù)的組織(GB/T5271.4-2000eqvISO/IEC2382-4:
1987)
GB/T5271.9信息技術(shù)詞匯第9部分:數(shù)據(jù)通信(GB/T5271.9-2001eqvISO/IEC2382-9:
1995)
3術(shù)語(yǔ)和定義
GB/T9002-2017、GB/T5271.1、GB/T5271.4和GB/T5271.9界定的以及下列術(shù)語(yǔ)和定義適用于
本文件。
3.1
編碼coding
讀入音頻采樣值,并產(chǎn)生一個(gè)符合本文件的有效位流。
3.2
解碼decoding
在本文件中定義的一種數(shù)據(jù)處理,即讀入編碼位流并輸出音頻采樣值的過(guò)程。
3.3
編碼位流codedbitstream
音頻信號(hào)的編碼表示。
1
T/CAIACN00X—2023
3.4
邊信息sideinformation
位流中控制解碼的必要信息。
3.5
聲道channel
用于傳送到單個(gè)揚(yáng)聲器或其他重放設(shè)備的一組有序音頻樣本集合。
3.6
雙聲道立體聲stereoaudio
一種音頻格式,該格式下,使用兩個(gè)聲道承載有一定相位關(guān)系的音頻信號(hào),通常通過(guò)位于聽(tīng)音者前
方的兩個(gè)對(duì)稱的揚(yáng)聲器或使用耳機(jī)重放,帶給聽(tīng)音者更寬的聲場(chǎng)感覺(jué)。
4縮略語(yǔ)
下列縮略語(yǔ)適用于本文件。
MDCT改進(jìn)離散余弦變換modifieddiscretecosinetransform
L2HC低延遲低復(fù)雜度高清音頻編解碼lowlatencylowcomplexityhighresolutionaudio
Codec
CBR恒定比特流constantbitrate
5約定
5.1概述
本文件中使用的數(shù)學(xué)運(yùn)算符和優(yōu)先級(jí)與C語(yǔ)言使用的類似,但對(duì)整型除法和算術(shù)移位操作進(jìn)行了
特定的定義。除特別說(shuō)明外,約定編號(hào)和計(jì)數(shù)從0開(kāi)始。
5.2算數(shù)運(yùn)算符
算術(shù)運(yùn)算符定義見(jiàn)表1表1。
表1算術(shù)運(yùn)算符定義
算術(shù)運(yùn)算符定義
+加法運(yùn)算
-減法運(yùn)算(二元運(yùn)算符)或取反(一元前綴運(yùn)算符)
乘法運(yùn)算
*乘法運(yùn)算
ab冪運(yùn)算,表示a的b次冪。也可表示上標(biāo)
pow(a,b)冪運(yùn)算,表示a的b次冪
/除法運(yùn)算,不做截?cái)嗷蛩纳嵛迦?/p>
2
T/CAIACN00X—2023
表1算術(shù)運(yùn)算符定義(續(xù))
算術(shù)運(yùn)算符定義
÷除法運(yùn)算,不做截?cái)嗷蛩纳嵛迦?/p>
?
除法運(yùn)算,不做截?cái)嗷蛩纳嵛迦?/p>
?
b
fi()自變量i取由a到b(含b)的所有整數(shù)值時(shí),函數(shù)f(i)的累加和
ia
?·?下取整
√?a的算術(shù)平方根
‖·‖22-范數(shù)
5.3邏輯運(yùn)算符
邏輯運(yùn)算符定義見(jiàn)表2。
表2邏輯運(yùn)算符定義
邏輯運(yùn)算符定義
||邏輯或
&&邏輯與
!邏輯非
5.4關(guān)系運(yùn)算符
關(guān)系運(yùn)算符定義見(jiàn)表3。
表3關(guān)系運(yùn)算符定義
關(guān)系運(yùn)算符定義
>大于
大于或等于
<小于
小于或等于
==等于
不等于
5.5位運(yùn)算符
位運(yùn)算符定義見(jiàn)表4。
3
T/CAIACN00X—2023
表4位運(yùn)算符定義
位運(yùn)算符定義
&與運(yùn)算
|或運(yùn)算
~取反運(yùn)算
將以2的補(bǔ)碼形式表示的整數(shù)a向右移b位。僅當(dāng)b取正數(shù)時(shí)定義此運(yùn)算。向右移至最高有效位時(shí),
a>>b
其值與a移位運(yùn)算前的最高有效位相等
將以2的補(bǔ)碼形式表示的整數(shù)a向左移b位。僅當(dāng)b取正數(shù)時(shí)定義此運(yùn)算。向左移至最低有效位時(shí),
a<<b
其值等于0
5.6賦值
賦值運(yùn)算符定義見(jiàn)表5。
表5賦值運(yùn)算符定義
賦值運(yùn)算定義
=賦值運(yùn)算符
++自加,x+1相當(dāng)于x=x+1。當(dāng)用于數(shù)組下標(biāo)時(shí),在自加運(yùn)算前先求變量值
+=自加指定值,例如,x+=3相當(dāng)于x=x+3,x+=(-3)相當(dāng)于x=x+(-3)
-=自減指定值,例如,x-=3相當(dāng)于x=x+(-3),x-=(-3)相當(dāng)于x=x–(-3)
5.7助記符
助記符定義見(jiàn)表6。
表6助記符定義
助記符定義
rpchof多項(xiàng)式余數(shù),高階在先
位串,左位在前。位串是帶單引號(hào)的1和0串。如‘10000001’。位串內(nèi)的空格是便于閱讀的,無(wú)
bslbf
特殊意義。(bitstreamleftbitfirst)
uimsbf無(wú)符號(hào)整數(shù),最高有效位優(yōu)先。(unsignedinteger,mostsignificantbitfirst)
位串,帶單引號(hào)的1和0串,右位在前,如先編碼一個(gè)5bit的數(shù)值6,然后編碼一個(gè)3bit的數(shù)值2,
bsmbf
那么編碼位串為‘01000110’
5.8數(shù)學(xué)函數(shù)
數(shù)學(xué)函數(shù)定義見(jiàn)如下公式。
?;?>0
|?|={0;?=0
??;?<0
4
T/CAIACN00X—2023
式中:
?——自變量。
5.9位流語(yǔ)法規(guī)則
位流中的每一個(gè)數(shù)據(jù)項(xiàng)用粗體字,通過(guò)名字、按位的長(zhǎng)度及其類型和傳輸順序的助記符來(lái)描述。
位流中被解碼的數(shù)據(jù)元素所導(dǎo)致的操作依賴于該數(shù)據(jù)的值及以前解碼的數(shù)據(jù)元素。如無(wú)特殊說(shuō)明,
本文件中的“位”指二進(jìn)制位。
本文件語(yǔ)法用“C”代碼規(guī)定,變量或表達(dá)式為非零值時(shí)等價(jià)于條件為真,變量或表達(dá)式為零值時(shí)
等價(jià)于條件為非真。
while(condition){
data_element
…
}
若條件為真,則數(shù)據(jù)元素組緊接著數(shù)據(jù)流產(chǎn)生,如此重復(fù)直到條件為非真。
do{
data_element
…
}while(condition)
若條件為真,則數(shù)據(jù)元素組緊接著數(shù)據(jù)流產(chǎn)生,如此重復(fù)直到條件為非真。
if(condition){
data_element
…
}else{
data_element
…
}
若條件為真,在數(shù)據(jù)流中產(chǎn)生第一組數(shù)據(jù)元素,若條件為非真,在數(shù)據(jù)流中產(chǎn)生第二組數(shù)據(jù)元素。
for(expr1;expr2;expr3){
data_element
…
}
expr1是指定循環(huán)初始狀態(tài)表達(dá)式,通常它指定了計(jì)數(shù)器的初始狀態(tài);expr2是指定的每次循環(huán)前的
測(cè)試條件,條件為非真時(shí)循環(huán)終止;expr3是每次循環(huán)結(jié)束時(shí)執(zhí)行的表達(dá)式,一般是增加計(jì)數(shù)器。
最通常用法為:
for(i=0;i<n;i++){
data_element
…
}
5
T/CAIACN00X—2023
數(shù)據(jù)元素組產(chǎn)生n次。數(shù)據(jù)元素組內(nèi)的條件結(jié)構(gòu)可能依賴循環(huán)控制變量i的值。第一次出現(xiàn)時(shí)被置
為‘0’,第二次增加到‘1’,如此往復(fù)。
根據(jù)表達(dá)式expr的值,產(chǎn)生對(duì)應(yīng)的數(shù)據(jù)元素。expr的值為constcase1時(shí)產(chǎn)生數(shù)據(jù)元素
data_element1,expr的值為constcase2時(shí)產(chǎn)生數(shù)據(jù)元素data_element2,以此類推,expr的值為
constcasen時(shí)產(chǎn)生數(shù)據(jù)元素data_elementn。當(dāng)expr的值不等于constcase1,constcase2,…,
constcasen中的任何一個(gè)值時(shí),產(chǎn)生數(shù)據(jù)元素data_elementdefault。
switch(expr){
caseconstcase1:
data_element1
break
caseconstcase2:
data_element2
break
…
caseconstcasen:
data_elementn
break
default:
data_elementdefault
break
}
本結(jié)構(gòu)的一類變體是在case后不出現(xiàn)break,expr的值constcasex時(shí),從對(duì)應(yīng)的caseconstcasex
開(kāi)始產(chǎn)生數(shù)據(jù)元素,直到break出現(xiàn)。expr的值為constcase1時(shí)產(chǎn)生數(shù)據(jù)元素data_element1和
data_element2,expr的值為constcasen時(shí)產(chǎn)生數(shù)據(jù)元素data_elementn。
switch(expr){
caseconstcase1:
data_element1
caseconstcase2:
data_element2
break
…
caseconstcasen:
data_elementn
break
default:
data_elementdefault
break
}
數(shù)據(jù)元素組中可能含有嵌套結(jié)構(gòu)。為簡(jiǎn)便起見(jiàn),當(dāng)后面只有一個(gè)數(shù)據(jù)元素時(shí)“[]”省略。數(shù)據(jù)元素
組表示方法如下:
6
T/CAIACN00X—2023
data_element[]:一數(shù)組數(shù)據(jù),數(shù)據(jù)元素的個(gè)數(shù)由上下文而定。
data_element[n]:數(shù)組數(shù)據(jù)的第n+1個(gè)元素。
data_element[m][n]:二維數(shù)組的第m+1,n+1個(gè)元素。
data_element[l][m][n]:三維數(shù)組的第l+1,m+1,n+1個(gè)元素。
data_element[m…n]:位m到位n之間包括的位。
雖然語(yǔ)法用過(guò)程項(xiàng)表示,但不能認(rèn)為條款實(shí)現(xiàn)了可靠的解碼過(guò)程。它只是定義了一個(gè)無(wú)錯(cuò)誤的位流
輸入。
6L2HC音頻編解碼
6.1概述
本文件規(guī)定了面向低延遲、低復(fù)雜度、高保真的基于MDCT(ModifiedDiscreteCosineTransform)
實(shí)現(xiàn)的頻域音頻編解碼器,L2HC(LowDelayLowComplexityHighResolutionAudioCodec)。
L2HC編解碼器包括單聲道編解碼、立體聲(雙聲道)編解碼。L2HC支持單聲道、立體聲音頻編解
碼,編碼模式為CBR(ConstantBitRate)模式,單聲道編碼碼率范圍為64kbps到960kbps,立體聲編
碼碼率范圍為128kbps到1920kbps。在碼率支持的范圍內(nèi),編碼碼率可以在編碼端任意設(shè)置,最小步
長(zhǎng)變化為1kbps。輸入/輸出的音頻信號(hào)采樣率支持44.1kHz、48kHz、88.2kHz和96kHz。位深支持16
位定點(diǎn),24位定點(diǎn)和32位定點(diǎn)/浮點(diǎn),編碼器和解碼器位深可以不同。
L2HC編解碼器支持幀長(zhǎng)5ms和10ms。10ms幀長(zhǎng)條件下,在48kHz和96kHz采樣率下的算法時(shí)延為
12.5ms,lookahead為2.5ms,采樣率48kHz和96kHz對(duì)應(yīng)的幀長(zhǎng)分別為480點(diǎn)和960采樣點(diǎn);在
44.1kHz和88.2kHz采樣率下的算法時(shí)延為13.6ms,其中幀長(zhǎng)為10.88ms,lookahead為2.72ms,采
樣率44.1kHz和88.2kHz對(duì)應(yīng)的幀長(zhǎng)分別為480點(diǎn)和960點(diǎn)。5ms幀長(zhǎng)條件下,在48kHz和96kHz采樣
率下的算法時(shí)延為7.5ms,lookahead為2.5ms,采樣率48kHz和96kHz對(duì)應(yīng)的幀長(zhǎng)分別為240點(diǎn)和
480采樣點(diǎn);在44.1kHz和88.2kHz采樣率下的算法時(shí)延為8.16ms,其中幀長(zhǎng)為5.44ms,lookahead
為2.72ms,采樣率44.1kHz和88.2kHz對(duì)應(yīng)的幀長(zhǎng)分別為240點(diǎn)和480點(diǎn)。
L2HC編解碼器在解碼端需要配置的參數(shù)包括:解碼信號(hào)位深和解碼模式。在處理立體聲信號(hào)時(shí),
L2HC支持3種解碼模式,分別為左聲道輸出,右聲道輸出和立體聲輸出。
6.2節(jié)介紹L2HC編解碼器框架,6.3節(jié)介紹L2HC位流數(shù)據(jù)格式,6.4節(jié)描述邊信息解碼流程,6.5
節(jié)描述頻域噪聲整形參數(shù)的獲取方法,6.6節(jié)描述MDCT系數(shù)的熵解碼方法,6.7節(jié)描述殘余解碼方法,
6.8節(jié)描述MDCT系數(shù)的逆量化方法,6.9節(jié)描述立體聲信號(hào)的上混方法,6.10節(jié)描述逆時(shí)頻變換方法,
6.11節(jié)介紹L2HC位流格式,6.12節(jié)介紹L2HC信號(hào)輸入/輸出位深處理方法。附錄A包含子帶包絡(luò)劃
分表、Huffman碼表等。
6.2L2HC編解碼器框架
L2HC音頻編碼器框架如圖1所示,L2HC音頻編碼器可分為時(shí)頻變換、信號(hào)自適應(yīng)分析、立體聲下
混、子帶包絡(luò)參數(shù)獲取與編碼、頻域噪聲整形參數(shù)獲取、MDCT系數(shù)量化、熵編碼和殘余編碼等模塊。
7
T/CAIACN00X—2023
圖1L2HC音頻編碼器框架
L2HC音頻解碼器框架如圖2所示,L2HC音頻解碼器可分為邊信息解碼、頻域噪聲整形參數(shù)獲取、
熵解碼、殘余解碼、MDCT系數(shù)逆量化、立體聲上混和逆時(shí)頻變換。
圖2L2HC音頻解碼器框架
8
T/CAIACN00X—2023
以下分別對(duì)輸入信號(hào)為單聲道和立體聲的情況進(jìn)行介紹。
6.2.1L2HC單聲道編碼
L2HC在編碼單聲道信號(hào)時(shí),信號(hào)需經(jīng)過(guò)時(shí)頻變換、信號(hào)自適應(yīng)分析、子帶包絡(luò)參數(shù)獲取與編碼、頻
域噪聲整形參數(shù)獲取、MDCT系數(shù)量化、熵編碼和殘余編碼等模塊處理。下面對(duì)各模塊功能進(jìn)行簡(jiǎn)要介
紹。
6.2.1.1時(shí)頻變換
時(shí)頻變換模塊對(duì)輸入的時(shí)域信號(hào)加窗并進(jìn)行MDCT變換。
6.2.1.2信號(hào)自適應(yīng)分析
對(duì)輸入信號(hào)進(jìn)行帶寬檢測(cè),結(jié)合碼率確定子帶劃分情況,輸出邊信息包括:需要編碼的子帶個(gè)數(shù)
bandNum、子帶劃分方式索引sfId、低碼率標(biāo)識(shí)符lowBrFlag等,并寫(xiě)入位流。
6.2.1.3子帶包絡(luò)獲取與編碼
根據(jù)子帶劃分情況計(jì)算各個(gè)子帶的包絡(luò)信息并進(jìn)行編碼。編碼對(duì)象可以是子帶包絡(luò)參數(shù)或子帶包
絡(luò)參數(shù)的差分值。
6.2.1.4頻域噪聲整形參數(shù)獲取
利用子帶包絡(luò)和子帶間掩蔽關(guān)系計(jì)算頻域噪聲整形參數(shù),包括心理聲學(xué)譜包絡(luò)參數(shù)
psyScalefactor和量化等級(jí)參數(shù)quantScale。
6.2.1.5MDCT系數(shù)量化
利用心理聲學(xué)譜包絡(luò)參數(shù)psyScalefactor求得子帶的噪聲基底noisefloor,對(duì)各子帶的MDCT系
數(shù)進(jìn)行量化。其中,量化精度數(shù)值上等于噪聲基底noisefloor。
6.2.1.6熵編碼
對(duì)量化后的單聲道信號(hào)的MDCT系數(shù)進(jìn)行熵編碼,并寫(xiě)入位流。
6.2.1.7殘余編碼
利用剩余比特進(jìn)行殘余編碼,提升MDCT系數(shù)的編碼精度,相關(guān)信息寫(xiě)入位流。
6.2.2L2HC單聲道解碼
L2HC在解碼單聲道信號(hào)時(shí),位流需經(jīng)過(guò)邊信息解碼、頻域噪聲整形參數(shù)獲取、熵解碼、殘余解碼、
MDCT系數(shù)逆量化和逆時(shí)頻變換,最終獲得解碼單聲道信號(hào)。下面對(duì)各模塊功能進(jìn)行簡(jiǎn)要介紹。
6.2.2.1邊信息解碼
從位流中獲取與邊信息相關(guān)的位流信息,進(jìn)行解碼得到低碼率標(biāo)識(shí)符lowBrFlag、心理聲學(xué)譜包絡(luò)
系數(shù)動(dòng)態(tài)調(diào)節(jié)因子dr、輔助調(diào)節(jié)因子drQuater、子帶劃分方式索引sfId、編碼子帶個(gè)數(shù)bandNum、子
帶包絡(luò)差分編碼開(kāi)啟標(biāo)志diffFlag、子帶包絡(luò)參數(shù)和Huffman解碼碼表索引等。
9
T/CAIACN00X—2023
6.2.2.2頻域噪聲整形參數(shù)獲取
利用解碼獲取的子帶包絡(luò)信息和子帶間掩蔽關(guān)系得到各子帶的頻域噪聲整形因子dradjust。結(jié)合心理
聲學(xué)譜包絡(luò)系數(shù)動(dòng)態(tài)調(diào)節(jié)因子dr和輔助調(diào)節(jié)因子drQuater求得頻域噪聲整形參數(shù),包括心理聲學(xué)譜
包絡(luò)參數(shù)psyScalefactor和量化等級(jí)參數(shù)quantScale。
6.2.2.3熵解碼
從位流中獲取與MDCT系數(shù)編碼相關(guān)的位流信息,結(jié)合Huffman碼表進(jìn)行熵解碼得到量化后的MDCT
系數(shù)。
6.2.2.4殘余解碼
從位流中獲取殘余編碼相關(guān)的位流信息,進(jìn)行殘余解碼。
6.2.2.5MDCT系數(shù)逆量化
MDCT系數(shù)逆量化模塊是由心理聲學(xué)譜包絡(luò)參數(shù)psyScalefactor獲取噪聲基底noisefloor。然后
利用noisefloor參數(shù)對(duì)量化的MDCT系數(shù)進(jìn)行逆量化得到解碼的MDCT系數(shù)。
6.2.2.6逆時(shí)頻變換
逆時(shí)頻變換模塊將MDCT系數(shù)變換到時(shí)域,并進(jìn)行加窗和疊接相加操作,得到解碼的時(shí)域音頻信號(hào)。
6.2.3L2HC立體聲編碼
L2HC在編碼立體聲信號(hào)時(shí),信號(hào)需經(jīng)過(guò)時(shí)頻變換、信號(hào)自適應(yīng)分析、立體聲下混、子帶包絡(luò)參數(shù)獲
取與編碼、頻域噪聲整形參數(shù)獲取、MDCT系數(shù)量化、熵編碼和殘余編碼等模塊處理。
與L2HC單聲道編碼相比增加了立體聲下混模塊,立體聲下混模塊根據(jù)立體聲信號(hào)特征對(duì)左右聲道
MDCT系數(shù)進(jìn)行M/S下混,以去除信號(hào)間冗余信息,提升編碼效率。
6.2.4L2HC立體聲信號(hào)解碼
L2HC在解碼立體聲信號(hào)時(shí),位流需經(jīng)過(guò)邊信息解碼、頻域噪聲整形參數(shù)獲取、熵解碼、殘余解碼、
MDCT系數(shù)逆量化、M/S上混和逆時(shí)頻變換等模塊處理,最終獲得解碼立體聲信號(hào)。
與L2HC單聲道解碼流程相比,立體聲解碼增加了立體聲上混模塊,立體聲上混模塊是編碼端立體
聲下混的逆過(guò)程,對(duì)解碼所得下混聲道的MDCT系數(shù)進(jìn)行M/S上混,得到立體聲的MDCT系數(shù)。
6.3L2HC位流數(shù)據(jù)
6.3.1語(yǔ)法
L2HC位流數(shù)據(jù)語(yǔ)法見(jiàn)表7。
表7L2hcDecodeRawData()語(yǔ)法
L2hcDecodeRawData()語(yǔ)法比特?cái)?shù)助記符
L2hcDecodeRawData(){——
L2hcHeaderUnpack()——
switch(codecFormat){——
case0x0:L2hcCommonDec(chNumDec=chNum)——
10
T/CAIACN00X—2023
表7L2hcDecodeRawData()語(yǔ)法(續(xù))
L2hcDecodeRawData()語(yǔ)法比特?cái)?shù)助記符
case0x1:L2hcHighCostDec()——
}——
PcmCopyChannel()——
}——
包頭信息解碼見(jiàn)表8。
表8L2hcHeaderUnpack()語(yǔ)法
L2hcHeaderUnpack()語(yǔ)法比特?cái)?shù)助記符
L2hcHeaderUnpack(){——
codecType2uimsbf
sampleRate2uimsbf
chNum1uimsbf
chNum=chNum+1——
frameLength2uimsbf
}——
單聲道/立體聲普通解碼語(yǔ)法見(jiàn)表9。
表9L2hcCommonDec()語(yǔ)法
L2hcCommonDec()語(yǔ)法比特?cái)?shù)助記符
L2hcCommonDec(chNumDec){——
DecodeCoreSideBits(chNumDec)——
GetMdctSnsParam(chNumDec)——
for(ch=0;ch<chNumDec;ch++){——
DecodeMdctSpec()——
}——
if(bitLeft){——
DecodeMdctRes()——
}——
chBegin,chEnd=GetDecodeChRange(chNum,decMode)——
if(msFlag==1){
for(ch=0;ch<chNumDec;ch++){
QuantInvMdct()
}
MdctInvMS()
}else{
11
T/CAIACN00X—2023
表9L2hcCommonDec()語(yǔ)法(續(xù))
L2hcCommonDec()語(yǔ)法比特?cái)?shù)助記符
for(ch=chBegin;ch<chEnd;ch++){——
QuantInvMdct()——
}——
}——
for(ch=chBegin;ch<chEnd;ch++){——
InverseMdct()——
}——
}——
立體聲高清低功耗解碼模式語(yǔ)法見(jiàn)表10。
表10L2hcHighCostDec()語(yǔ)法
L2hcHighCostDec()語(yǔ)法比特?cái)?shù)助記符
L2hcHighCostDec(){——
MovPosByDecMode()——
chNumDec=1——
if(decMode==0||decMode==1){——
L2hcCommonDec(chNumDec)——
}else{——
L2hcCommonDec(chNumDec)——
L2hcCommonDec(chNumDec)——
}——
}——
解碼通道復(fù)制語(yǔ)法見(jiàn)表1表11。
表11PcmCopyChannel()語(yǔ)法
PcmCopyChannel()語(yǔ)法比特?cái)?shù)助記符
PcmCopyChannel(){——
if(chNum==2){——
if(decMode==0){——
CopyPcmL2R()——
}——
if(decMode==1){——
CopyPcmR2L()——
}——
}——
}
12
T/CAIACN00X—2023
解碼通道索引范圍獲取語(yǔ)法見(jiàn)表1表12。
表12GetDecodeChRange()語(yǔ)法
GetDecodeChRange()語(yǔ)法比特?cái)?shù)助記符
GetDecodeChRange(){——
chBegin=0——
chEnd=chNum——
if(chNum==2){——
if(decMode==0){——
chBegin=0——
chEnd=1——
}——
if(decMode==1){——
chBegin=1——
}——
}——
}——
6.3.2語(yǔ)義
L2hcHeaderUnpack()
解析包頭信息,包括幀類型、采樣率、聲道數(shù)、幀長(zhǎng)。
L2hcCommonDec()
單聲道/立體聲普通解碼。
L2hcHighCostDec()
立體聲高清低功耗解碼。
PcmCopyChannel()
解碼通道復(fù)制,用于僅解碼L通道或R通道的情況。
DecodeCoreSideBits()
解析邊信息。
GetMdctSnsParam()
頻域噪聲整形參數(shù)獲取。
DecodeMdctSpec()
MDCT系數(shù)解碼。
DecodeMdctRes()
殘余解碼。
GetDecodeChRange()
獲取解碼通道索引范圍。
QuantInvMdct()
MDCT系數(shù)逆量化。
13
T/CAIACN00X—2023
MdctInvMS()
M/S上混。
InverseMdct()
MDCT逆變換。
MovPosByDecMode()
位流讀取位置跳轉(zhuǎn),decMode等于0或者2時(shí)位流讀取位置不跳轉(zhuǎn),decMode等于1時(shí)位流讀取位
置跳轉(zhuǎn)至右聲道位流起始位置。
CopyPcmL2R()
將左聲道信號(hào)復(fù)制到右聲道。
CopyPcmR2L()
將右聲道信號(hào)復(fù)制到左聲道。
codecFormat
編碼格式,0代表單/立體聲普通格式,1代表立體聲高清低功耗格式。
codecType
2比特,代表編碼器類型;當(dāng)前版本設(shè)為1。0,2,3作為保留字段。
sampleRate
2比特,用于表示音頻信號(hào)的采樣率,取值范圍為0、1、2、3,對(duì)應(yīng)的采樣率依次為44.1kH、48kHz、
88.2kHz、96kHz。
chNum
1比特,用于表示音頻信號(hào)的聲道數(shù),0代表單聲道,1代表立體聲。
chNumDec
用于表示實(shí)際解碼的聲道數(shù),取值小于或等于chNum。
frameLength
2比特,用于表示音頻信號(hào)的幀長(zhǎng),取值范圍為0、1、2、3,對(duì)應(yīng)的幀長(zhǎng)依次為120采樣點(diǎn)、240采
樣點(diǎn)、480采樣點(diǎn)、960采樣點(diǎn)。
decMode
立體聲解碼模式,通過(guò)解碼器命令行配置,取值范圍為0、1、2,分別對(duì)應(yīng)左聲道輸出,右聲道輸出
和立體聲輸出。
bitLeft
是否有比特剩余標(biāo)識(shí)符,當(dāng)標(biāo)識(shí)符為0時(shí),表示比特已全部解碼,當(dāng)標(biāo)識(shí)符為1時(shí),表示比特有剩
余,需要進(jìn)行殘余解碼。
chBegin
解碼通道索引范圍的起始值。
chEnd
解碼通道索引范圍的終止值。
6.3.3解碼過(guò)程
L2HC解碼器獲取一幀音頻位流信息并進(jìn)行解碼,解碼過(guò)程可參照L2hcDecodeRawData(),基本過(guò)程
描述如下:
解碼器首先解析包頭信息,獲得編碼器類型、編碼采樣率、編碼通道數(shù)和幀長(zhǎng)等信息。
codecFormat參數(shù)需要根據(jù)編碼通道數(shù)、編碼采樣率和碼率綜合判斷獲得,判斷條件為:當(dāng)同時(shí)滿
足編碼通道數(shù)為2(即立體聲信號(hào)編碼),編碼碼率大于等于300kbps,編碼采樣率大于等于88.2kHz三
14
T/CAIACN00X—2023
個(gè)條件時(shí),codecFormat為1,否則codecFormat為0。其中,編碼碼率由通訊協(xié)議上層獲得的接收幀
的包大小計(jì)算得到。
codecFormat為0時(shí),編碼器選擇單聲道/立體聲普通格式,解碼過(guò)程表示為L(zhǎng)2hcCommonDec()。首
先解碼核心編碼器邊信息;而后參照GetMdctSnsParam()獲取頻域噪聲整形參數(shù);然后參照
DecodeMdctSpec()解碼MDCT系數(shù);如果仍然有比特剩余,則參照DecodeMdctRes()進(jìn)行殘余解碼;根
據(jù)chNum和decMode獲取解碼通道索引的范圍。當(dāng)msFlag等于1時(shí),參照QuantInvMdct()依次對(duì)
chNumDec個(gè)解碼通道進(jìn)行MDCT系數(shù)逆量化操作,后進(jìn)行立體聲上混操作;當(dāng)msFlag不等于1時(shí),根
據(jù)解碼通道索引范圍起始值chBegin和終止值chEnd,依次對(duì)解碼通道進(jìn)行MDCT系數(shù)逆量化操作;最
后參照InverseMdct()進(jìn)行逆時(shí)頻變換,得到解碼單聲道/立體聲信號(hào)。
codecFormat為1時(shí),編碼器選擇立體聲高清低功耗格式,解碼過(guò)程可參照L2hcHighCostDec()。
首先參照函數(shù)MovPosByDecMode()進(jìn)行位流讀取位置跳轉(zhuǎn)操作,并將通道數(shù)chNumDec設(shè)為1。而后根據(jù)
解碼器命令行配置的解碼模式decMode參數(shù)進(jìn)行不同的解碼處理。當(dāng)decMode為0時(shí),參照
L2hcCommonDec(chNumDec)進(jìn)行單聲道普通解碼來(lái)獲得左聲道的解碼信號(hào),并將左聲道的PCM值賦值給
右聲道。當(dāng)decMode為1時(shí),參照L2hcCommonDec(chNumDec)進(jìn)行單聲道普通解碼來(lái)獲得右聲道的PCM
值,并將右聲道的解碼信號(hào)賦值給左聲道。當(dāng)decMode為2時(shí),參照L2hcCommonDec(chNumDec)進(jìn)行單
聲道普通解碼來(lái)分別獲取左聲道和右聲道的解碼信號(hào)。
完成上述流程后可參照PcmCopyChannel(),根據(jù)解碼聲道數(shù)chNum和立體聲解碼模式decMode進(jìn)
行解碼通道復(fù)制,最后輸出解碼的立體聲信號(hào)。
6.4邊信息解碼
6.4.1語(yǔ)法
邊信息解碼語(yǔ)法見(jiàn)表13。
表13DecodeCoreSideBits()語(yǔ)法
DecodeCoreSideBits()語(yǔ)法比特?cái)?shù)助記符
DecodeCoreSideBits(chNumDec){——
lowBrFlag1uimsbf
if(chNumDec==2){——
msFlag1uimsbf
}else{——
msFlag
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 景區(qū)特種設(shè)備運(yùn)行安全管理制度內(nèi)容
- 房地產(chǎn)開(kāi)發(fā)項(xiàng)目成本預(yù)算與管控方案
- 玻璃玻璃夾砂管制造工藝及施工方案
- 公司疫情防控應(yīng)急方案
- 磚混結(jié)構(gòu)鋼筋施工方案
- 幼教機(jī)構(gòu)品牌建設(shè)與營(yíng)銷策劃方案
- 八年級(jí)信息技術(shù)幻燈片制作教學(xué)方案
- JAVA企業(yè)信息管理系統(tǒng)設(shè)計(jì)方案
- 主題班會(huì)活動(dòng)方案制定指南
- 職業(yè)培訓(xùn)需求調(diào)查報(bào)告及分析
- 2025北京西城區(qū)初一(下)期末英語(yǔ)試題及答案
- 2026.01.01施行的《招標(biāo)人主體責(zé)任履行指引》
- DB11∕T 689-2025 既有建筑抗震加固技術(shù)規(guī)程
- 2025年湖南公務(wù)員《行政職業(yè)能力測(cè)驗(yàn)》試題及答案
- 提前招生面試制勝技巧
- 2024中國(guó)類風(fēng)濕關(guān)節(jié)炎診療指南課件
- 2026年中國(guó)家居行業(yè)發(fā)展展望及投資策略報(bào)告
- 陜西省西安鐵一中2026屆高一物理第一學(xué)期期末教學(xué)質(zhì)量檢測(cè)試題含解析
- DB3207∕T 1046-2023 香菇菌棒生產(chǎn)技術(shù)規(guī)程
- 2025-2030腦機(jī)接口神經(jīng)信號(hào)解碼芯片功耗降低技術(shù)路線圖報(bào)告
- 空調(diào)安裝應(yīng)急預(yù)案
評(píng)論
0/150
提交評(píng)論