T-CAIACN00X-2023低延遲低復(fù)雜度高清音頻編解碼技術(shù)規(guī)范_第1頁(yè)
T-CAIACN00X-2023低延遲低復(fù)雜度高清音頻編解碼技術(shù)規(guī)范_第2頁(yè)
T-CAIACN00X-2023低延遲低復(fù)雜度高清音頻編解碼技術(shù)規(guī)范_第3頁(yè)
T-CAIACN00X-2023低延遲低復(fù)雜度高清音頻編解碼技術(shù)規(guī)范_第4頁(yè)
T-CAIACN00X-2023低延遲低復(fù)雜度高清音頻編解碼技術(shù)規(guī)范_第5頁(yè)
已閱讀5頁(yè),還剩37頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論