專利名稱:在音頻編碼過(guò)程中根據(jù)mdct數(shù)據(jù)進(jìn)行視窗類型判定的方法
技術(shù)領(lǐng)域:
本發(fā)明總體上涉及音頻編碼。更具體而言,本發(fā)明涉及在音頻編碼過(guò)程中進(jìn)行視 窗類型確定。版權(quán)標(biāo)記/許可這篇專利文件的部分公開(kāi)內(nèi)容包含受版權(quán)保護(hù)的材料。版權(quán)所有者不反對(duì)由出現(xiàn) 在專利商標(biāo)局專利文檔或記錄中的專利文件或?qū)@_(kāi)中的任何一種的影印復(fù)制,但在別 的方面卻無(wú)論如何保留所有版權(quán)。將以下通告應(yīng)用于如下所述的及附圖中的軟件和數(shù)據(jù) Copyright 2001,Sony Electronics,Inc.,All Rights Reserved。
背景技術(shù):
標(biāo)準(zhǔn)化機(jī)構(gòu)運(yùn)動(dòng)圖象專家組(MPEG)在他們的標(biāo)準(zhǔn)中公開(kāi)了通用數(shù)據(jù)壓縮方法, 例如,所述標(biāo)準(zhǔn)諸如是MPEG-2高級(jí)音頻編碼(AAC)標(biāo)準(zhǔn)(參見(jiàn)IS0/IEC 13818-7)和 MPEG-4AAC標(biāo)準(zhǔn)(參見(jiàn)IS0/IEC 14496-3)。這些標(biāo)準(zhǔn)在此統(tǒng)稱為MPEG標(biāo)準(zhǔn)。MPEG標(biāo)準(zhǔn)所定義的音頻編碼器接收音頻信號(hào),通過(guò)修正離散余弦變換(MDCT)運(yùn) 算將它轉(zhuǎn)換成頻譜數(shù)據(jù),并且利用失真率控制機(jī)制來(lái)判定用于量化頻譜數(shù)據(jù)的最優(yōu)比例因 子。音頻編碼器還利用最優(yōu)比例因子來(lái)量化頻譜數(shù)據(jù),將所得到的量化后的頻譜系數(shù)編組 成比例因子帶,然后對(duì)編組的量化系數(shù)進(jìn)行Huffman編碼。根據(jù)MPEG標(biāo)準(zhǔn),以使相鄰變換值域沿時(shí)間軸重疊50%的方式對(duì)音頻信號(hào)執(zhí)行 MDCT,以便抑制失真發(fā)生在相鄰變換值域之間的邊界部分上。另外,利用長(zhǎng)變換值域(由長(zhǎng) 視窗定義的)或短變換值域(每一個(gè)都是由短視窗定義的)將音頻信號(hào)映射到頻率域中。 長(zhǎng)視窗包括2048個(gè)樣值,而短視窗包括256個(gè)樣值。從長(zhǎng)視窗產(chǎn)生的MDCT系數(shù)的數(shù)目為 1024,而從每一個(gè)短視窗產(chǎn)生的MDCT系數(shù)的數(shù)目為128。一般而言,對(duì)于信號(hào)波形變化細(xì)微 的穩(wěn)定部分,需要使用長(zhǎng)視窗類型。對(duì)于信號(hào)波形變化劇烈的沖擊部分,需要使用短視窗類 型。使用其中哪一個(gè)是重要的。如果為瞬態(tài)信號(hào)使用長(zhǎng)視窗類型,則稱作預(yù)回波的噪聲發(fā) 生在沖擊部分之前。當(dāng)為穩(wěn)定信號(hào)使用短視窗類型時(shí),由于在頻域中的分辯率缺乏、編碼效 率降低以及噪聲出現(xiàn),同樣也不能執(zhí)行適當(dāng)?shù)谋忍胤峙?。這種缺陷對(duì)于低頻聲音是格外顯 著的。根據(jù)MPEG標(biāo)準(zhǔn)所提出的方法,對(duì)于頻譜數(shù)據(jù)幀的視窗類型的確定始于對(duì)時(shí)域音 頻數(shù)據(jù)執(zhí)行快速傅里葉變換(FFT)以及計(jì)算FFT系數(shù)。然后使用FFT系數(shù)來(lái)計(jì)算所述幀 內(nèi)的每個(gè)比例因子帶的音頻信號(hào)強(qiáng)度。同樣,利用音質(zhì)建模來(lái)確定所述幀的可容許失真 級(jí)別??扇菰S失真級(jí)別表示能在不可聽(tīng)到的情況下被注入到頻譜數(shù)據(jù)中的最大噪聲量。根據(jù)所述幀的可容許失真級(jí)別和該幀內(nèi)的每個(gè)比例因子帶的音頻信號(hào)強(qiáng)度,計(jì)算知覺(jué)熵 (perceptual entropy)。如果知覺(jué)熵大于預(yù)定常量,則為所述幀使用短視窗類型。否則,為 所述幀使用長(zhǎng)視窗類型。進(jìn)行視窗類型確定的上述方法要進(jìn)行大量的計(jì)算。另外,如果信號(hào)強(qiáng)度高,則不論所述信號(hào)是瞬態(tài)的還是穩(wěn)定的,所得到的知覺(jué)熵的數(shù)值都可能是高的。也就是說(shuō),即使所述 幀不處于轉(zhuǎn)變中,也可能給一幀指定短視窗類型。正如上面所論述的那樣,這將導(dǎo)致編碼效 率降低以及噪聲出現(xiàn)。此外,如果判定使用短視窗類型,則產(chǎn)生MDCT系數(shù)的8個(gè)連續(xù)塊(短視窗)。為了 減少與短視窗相關(guān)聯(lián)的輔助信息量,可以將短視窗編組。每個(gè)群組都包括一個(gè)或多個(gè)連續(xù) 的短視窗,其比例因子是相同的。然而,當(dāng)沒(méi)有適當(dāng)?shù)貓?zhí)行編組時(shí),出現(xiàn)代碼數(shù)量的增加或 音質(zhì)的下降。當(dāng)群組的數(shù)量相對(duì)于短視窗的數(shù)量而言過(guò)大時(shí),原本可以被共同編碼的比例 因子將被重復(fù)編碼,由此使編碼效率降低。當(dāng)群組的數(shù)量相對(duì)于短視窗的數(shù)量而言過(guò)小時(shí), 即使是當(dāng)音頻信號(hào)變化劇烈時(shí)也使用公共比例因子。其結(jié)果是,音質(zhì)被降低。所述MPEG標(biāo) 準(zhǔn)未提供任何用于編組短視窗的特定方法。
發(fā)明內(nèi)容
利用長(zhǎng)視窗類型來(lái)為數(shù)據(jù)的當(dāng)前幀和數(shù)據(jù)的下一幀來(lái)計(jì)算初級(jí)修正離散余弦變 換(MDCT)系數(shù)。然后,使用所計(jì)算出的當(dāng)前幀和下一幀的初級(jí)MDCT系數(shù)來(lái)確定當(dāng)前幀的 視窗類型。如果所確定的視窗類型不是長(zhǎng)視窗類型,則利用所確定的視窗類型來(lái)為當(dāng)前幀 計(jì)算最終MDCT系數(shù)。
通過(guò)如下詳細(xì)說(shuō)明以及本發(fā)明各種實(shí)施例的附圖,將更充分地理解本發(fā)明,然而 不應(yīng)該將這些理解為將本發(fā)明限制到特定的實(shí)施例,而是僅用來(lái)解釋和幫助理解。圖1是編碼系統(tǒng)的一個(gè)實(shí)施例的框圖。圖2是對(duì)頻譜數(shù)據(jù)幀執(zhí)行MDCT的過(guò)程的一個(gè)實(shí)施例的流程圖。圖3是視窗類型判定過(guò)程的一個(gè)實(shí)施例的流程圖。圖4是用于檢測(cè)幀當(dāng)中從穩(wěn)定信號(hào)到瞬態(tài)信號(hào)的轉(zhuǎn)變的指示的過(guò)程的一個(gè)實(shí)施 例的流程圖。圖5是用于根據(jù)下一幀的初級(jí)視窗類型和前一幀的視窗類型來(lái)確定當(dāng)前幀的視 窗類型的過(guò)程的一個(gè)實(shí)施例的流程圖。圖6是用于編組幀內(nèi)的短視窗的過(guò)程的一個(gè)實(shí)施例的流程圖。圖7是用于確定短視窗類型的過(guò)程的一個(gè)實(shí)施例的流程圖。圖8是用于創(chuàng)建短視窗的兩個(gè)初級(jí)群組的過(guò)程的一個(gè)實(shí)施例的流程圖。圖9是用于執(zhí)行短視窗的最終編組的過(guò)程的一個(gè)實(shí)施例的流程圖。圖10舉例說(shuō)明了幀的短視窗的編組。圖11是適用于實(shí)施本發(fā)明的實(shí)施例的計(jì)算機(jī)環(huán)境的框圖。
具體實(shí)施方式
在本發(fā)明實(shí)施例的下列詳細(xì)說(shuō)明中,給附圖加上了參考標(biāo)記,其中同樣的參考標(biāo) 記表示相似的元件,并且附圖中作為例子示出了可以實(shí)施本發(fā)明的特定實(shí)施例。這些實(shí)施 例被足夠詳細(xì)地描述以使本領(lǐng)域的技術(shù)人員能實(shí)施本發(fā)明,而且將理解可以使用其它的實(shí) 施例并且在不偏離本發(fā)明的范圍的情況下可以作出邏輯的、機(jī)械的、電學(xué)的、功能性的及其它 的改變。因此,下列詳細(xì)說(shuō)明不是一種限制,而本發(fā)明的范圍僅由所附的權(quán)利要求來(lái)限定。從本發(fā)明的操作的概述起,圖1舉例說(shuō)明了編碼系統(tǒng)100的一個(gè)實(shí)施例。所述編 碼系統(tǒng)100不遵循在此統(tǒng)稱為MPEG標(biāo)準(zhǔn)的MPEG音頻編碼標(biāo)準(zhǔn)(例如,MPEG-2AAC標(biāo)準(zhǔn)、 MPEG-4AAC標(biāo)準(zhǔn)等等)。所述編碼系統(tǒng)100包括濾波器組模塊102、編碼工具104、音質(zhì)建 模器106、量化模塊110和霍夫曼編碼模塊114。所述濾波器組模塊102接收音頻信號(hào)并且執(zhí)行修正離散余弦變換運(yùn)算(MDCT)以 將音頻信號(hào)映射到頻率域中。所述映射是利用長(zhǎng)變換值域(由長(zhǎng)視窗定義的)或短變換值 域(由短視窗定義的)來(lái)執(zhí)行的,在所述長(zhǎng)變換值域中待分析信號(hào)在時(shí)間上擴(kuò)展以提高頻 率分辨率,在所述短變換值域中待分析信號(hào)在時(shí)間上縮減以提高時(shí)間分辨率。在只有穩(wěn)定 信號(hào)的情況下使用長(zhǎng)視窗類型,而當(dāng)存在快速的信號(hào)變化時(shí)使用短視窗類型。通過(guò)根據(jù)待 分析信號(hào)的特性而使用這兩個(gè)類型的操作,就可以防止稱作預(yù)回波的令人厭惡的噪聲的產(chǎn) 生,否則由于不充分的時(shí)間分辨率將產(chǎn)生預(yù)回波。正如將在下面更詳細(xì)論述的那樣,所述濾波器組模塊102負(fù)責(zé)確定使用哪一個(gè)視 窗類型以及利用所確定的視窗類型來(lái)產(chǎn)生MDCT系數(shù)。在一個(gè)實(shí)施例中,所述濾波器組模塊 102還可以負(fù)責(zé)在使用短視窗類型來(lái)產(chǎn)生MDCT系數(shù)時(shí)執(zhí)行編組。編組減少了與短視窗相關(guān) 聯(lián)的輔助信息量。每一個(gè)群組都包括一個(gè)或多個(gè)連續(xù)的短視窗,其比例因子是相同的。所述編碼工具104包括用于頻譜處理的一組任選工具。例如,所述編碼工具可以 包括臨時(shí)噪聲整形(TNS)工具和預(yù)測(cè)工具以執(zhí)行預(yù)測(cè)編碼,還包括強(qiáng)度/耦合工具和MS制 立體聲(M/S)工具以執(zhí)行立體聲相關(guān)編碼。所述音質(zhì)建模器106分析樣值以確定聽(tīng)覺(jué)遮蔽曲線。聽(tīng)覺(jué)遮蔽曲線表示能在不可 聽(tīng)的情況下被注入到各個(gè)樣值的每一個(gè)中的最大噪聲量。在這點(diǎn)上,什么是可聽(tīng)得到的是 基于人類聽(tīng)覺(jué)的音質(zhì)模型的。聽(tīng)覺(jué)遮蔽曲線充當(dāng)期望噪聲譜的估計(jì)。所述量化模塊110負(fù)責(zé)為頻率頻譜數(shù)據(jù)選擇最優(yōu)比例因子。比例因子選擇過(guò)程是 基于根據(jù)遮蔽曲線計(jì)算出的容許的失真和根據(jù)依據(jù)編碼所規(guī)定的比特率計(jì)算出的可容許 比特?cái)?shù)的。一旦選擇了最優(yōu)比例因子,所述量化模塊110就使用它們來(lái)量化頻率頻譜數(shù)據(jù)。 將所得到的量化后的頻譜系數(shù)編組成比例因子帶(SFB)。每個(gè)SFB都包括由相同比例因子 的使用而產(chǎn)生的系數(shù)。所述霍夫曼編碼模塊114負(fù)責(zé)為量化后的頻譜系數(shù)的每一個(gè)群組選擇最優(yōu)霍夫 曼代碼本并且利用最優(yōu)霍夫曼代碼本來(lái)執(zhí)行霍夫曼編碼操作。所得到的可變長(zhǎng)度編碼 (VLC),標(biāo)識(shí)在編碼中使用的代碼本的數(shù)據(jù)、量化模塊110所選的比例因子和一些其它信息 都是隨后被匯編到比特流中的。在一個(gè)實(shí)施例中,所述濾波器組模塊102包括視窗類型確定器108、MDCT系數(shù)計(jì)算 器112和短視窗編組確定器116。所述視窗類型確定器108負(fù)責(zé)確定為MDCT運(yùn)算而使用的 視窗類型。在一個(gè)實(shí)施例中,正如將在下面更詳細(xì)地論述的那樣,所述確定是利用適于使用長(zhǎng)視窗的視窗類型判定方法來(lái)作出的。所述MDCT系數(shù)計(jì)算器112負(fù)責(zé)利用所確定的視窗類型來(lái)計(jì)算MDCT系數(shù)。在一個(gè) 實(shí)施例中,所述MDCT系數(shù)計(jì)算器112首先利用假定的長(zhǎng)視窗類型來(lái)計(jì)算初級(jí)MDCT系數(shù)。然 后,如果視窗類型確定器108確定將要使用的視窗類型不是長(zhǎng)視窗類型,則所述MDCT系數(shù) 計(jì)算器112就利用所確定的視窗類型來(lái)重新計(jì)算MDCT系數(shù)。否則,初級(jí)M DCT系數(shù)就無(wú)需 被重新計(jì)算。所述短視窗編組確定器116在使用短視窗類型時(shí)進(jìn)行工作并且負(fù)責(zé)定義如何編 組短視窗。在一個(gè)實(shí)施例中,所述短視窗編組確定器116根據(jù)與每個(gè)短視窗相關(guān)聯(lián)的能量 來(lái)執(zhí)行短視窗的初級(jí)編組,將其劃分為兩個(gè)群組。正如在下面將更詳細(xì)地論述的那樣,如果 兩個(gè)初級(jí)群組中的任何一個(gè)過(guò)大的話,則就進(jìn)一步將大的群組分成兩個(gè)或多個(gè)群組。圖2-9是根據(jù)本發(fā)明的各種實(shí)施例的、可以由圖1的濾波器組模塊102執(zhí)行的過(guò) 程的流程圖。所述過(guò)程可以由處理邏輯來(lái)執(zhí)行,所述處理邏輯可以包括硬件(例如,電路、 專用邏輯等等)、軟件(比如運(yùn)行在通用計(jì)算機(jī)系統(tǒng)或?qū)S脵C(jī)上的)或者上述兩者的組合。 對(duì)于軟件實(shí)現(xiàn)的過(guò)程,流程圖的描述使本領(lǐng)域的技術(shù)人員能開(kāi)發(fā)這種包含能在適當(dāng)配置的 計(jì)算機(jī)(執(zhí)行來(lái)自于計(jì)算機(jī)可讀介質(zhì)的指令的計(jì)算機(jī)的處理器,所述計(jì)算機(jī)可讀介質(zhì)包括 存儲(chǔ)器)上執(zhí)行所述過(guò)程的指令的程序。計(jì)算機(jī)可執(zhí)行指令可以用計(jì)算機(jī)程序設(shè)計(jì)語(yǔ)言來(lái) 編寫(xiě)或者可以嵌入在固件邏輯中。如果用遵循所標(biāo)識(shí)的標(biāo)準(zhǔn)的程序設(shè)計(jì)語(yǔ)言進(jìn)行編寫(xiě),則 可以在各種硬件平臺(tái)上執(zhí)行這類指令并且可以接口連接于各種操作系統(tǒng)。另外,沒(méi)有參考 任何特定程序設(shè)計(jì)語(yǔ)言來(lái)描述本發(fā)明的實(shí)施例。將會(huì)認(rèn)識(shí)到的是,可以使用各種程序設(shè)計(jì) 語(yǔ)言來(lái)實(shí)現(xiàn)這里所描述的教導(dǎo)。此外,說(shuō)到采取動(dòng)作或?qū)е陆Y(jié)果的軟件,可以采取一種形式 或其它的形式(例如,程序、步驟、過(guò)程、應(yīng)用、模塊、邏輯…),這是本領(lǐng)域所公知的。這樣的 表達(dá)僅僅是計(jì)算機(jī)執(zhí)行軟件令該計(jì)算機(jī)的處理器執(zhí)行動(dòng)作或產(chǎn)生結(jié)果的簡(jiǎn)述方式。將會(huì)認(rèn) 識(shí)到的是,在不脫離本發(fā)明的范圍的情況下,可以將更多或更少的操作并入到圖2-9中所 舉例說(shuō)明的過(guò)程當(dāng)中,而且這里所示出和所述的塊的排列并不暗指特定的順序。圖2是用于對(duì)頻譜數(shù)據(jù)幀執(zhí)行MDCT的過(guò)程200的一個(gè)實(shí)施例的流程圖。參照?qǐng)D2,處理邏輯始于計(jì)算當(dāng)前幀的初級(jí)MDCT系數(shù)集合和下一幀的初級(jí)MDCT系 數(shù)集合(處理塊202)。計(jì)算是在假定當(dāng)前幀和下一幀兩者的視窗類型都為長(zhǎng)視窗類型的情 況下執(zhí)行的。所計(jì)算出的當(dāng)前幀和下一幀的初級(jí)MDCT系數(shù)都被存儲(chǔ)在緩沖器中。在一個(gè) 實(shí)施例中,當(dāng)前幀和下一幀是沿時(shí)間軸產(chǎn)生以使相鄰幀彼此重疊(例如,50%重疊)的樣值 的幀序列(也稱為塊)中的兩個(gè)相鄰幀。所述重疊抑制了在相鄰幀之間的邊界部分上發(fā)生 的失真。在處理塊204,處理邏輯利用當(dāng)前幀的初級(jí)MDCT系數(shù)和下一幀的初級(jí)MDCT系數(shù)來(lái) 確定當(dāng)前幀的視窗類型。所述視窗類型確定是利用適于使用長(zhǎng)視窗的視窗類型判定方法來(lái) 作出的。下面將結(jié)合圖3更詳細(xì)地論述這類方法的一個(gè)實(shí)施例。在判定框206,處理邏輯確定所判定的當(dāng)前幀的視窗類型是否是長(zhǎng)視窗類型。如 果不是,則處理邏輯利用所判定的視窗類型來(lái)計(jì)算當(dāng)前幀的最終MDCT系數(shù)集合(處理塊 208)。如果是,則處理邏輯考慮將當(dāng)前幀的初級(jí)MDCT系數(shù)作為最終系數(shù)集合(處理塊210)。圖3是視窗類型判定過(guò)程300的一個(gè)實(shí)施例的流程圖。參照?qǐng)D3,處理邏輯始于確定在下一幀中是否存在從穩(wěn)定信號(hào)到瞬態(tài)信號(hào)的轉(zhuǎn)變的指示(判定框302)。在一個(gè)實(shí)施例中,這一確定是通過(guò)將與當(dāng)前幀相關(guān)聯(lián)的能量和與下 一幀相關(guān)聯(lián)的能量相比較來(lái)作出的。下面結(jié)合圖4來(lái)更詳細(xì)地論述用于檢測(cè)幀當(dāng)中從穩(wěn)定 信號(hào)到瞬態(tài)信號(hào)的轉(zhuǎn)變的過(guò)程的一個(gè)實(shí)施例。如果在判定框302確定為肯定的,則處理邏輯就判定下一幀的初級(jí)視窗類型是短 視窗類型(處理塊304)。否則,處理邏輯判定下一幀的初級(jí)視窗類型是長(zhǎng)視窗類型(處理 塊 306)。此外,處理邏輯根據(jù)下一幀的初級(jí)視窗 類型和前一幀的視窗類型來(lái)確定當(dāng)前幀的 視窗類型(處理塊308)。當(dāng)前幀的視窗類型的確定適于使用長(zhǎng)視窗類型。在一個(gè)實(shí)施例 中,其中正如MPEG標(biāo)準(zhǔn)所定義的那樣,每個(gè)不同的視窗類型后面可能跟著兩個(gè)過(guò)渡視窗類 型,處理邏輯選擇使當(dāng)前幀和后續(xù)幀中的短視窗的使用最小化的視窗類型。也就是說(shuō),所述 MPEG標(biāo)準(zhǔn)提供了從每個(gè)不同視窗類型開(kāi)始的兩個(gè)過(guò)渡視窗類型,其中一個(gè)過(guò)渡視窗類型允 許在當(dāng)前幀或下一幀中使用短視窗,而另一個(gè)過(guò)渡視窗類型允許在當(dāng)前幀或下一幀中使用 長(zhǎng)視窗。具體地說(shuō),所述MPEG標(biāo)準(zhǔn)允許下列轉(zhuǎn)變a.從長(zhǎng)視窗類型到長(zhǎng)視窗類型或者長(zhǎng)_短視窗類型;b.從長(zhǎng)_短視窗類型到短視窗類型或者短_長(zhǎng)視窗類型;c.從短_長(zhǎng)視窗類型到長(zhǎng)視窗類型或者長(zhǎng)_短視窗類型;和d.從短視窗類型到短視窗類型或短長(zhǎng)視窗類型。因此,如果前一幀的視窗類型例如是短_長(zhǎng)視窗類型并且下一幀的初級(jí)視窗類型 是長(zhǎng)視窗類型,則處理邏輯就為當(dāng)前幀選擇長(zhǎng)視窗類型,而不是選擇其它的選項(xiàng),即方便下 一幀使用短視窗的長(zhǎng)_短視窗類型。下面將結(jié)合圖5更詳細(xì)地論述用于根據(jù)下一幀的初級(jí)視窗類型和前一幀的視窗 類型來(lái)確定當(dāng)前幀的視窗類型的過(guò)程的一個(gè)實(shí)施例。上述視窗類型判定方法與MDCT計(jì)算相結(jié)合,直接對(duì)MDCT數(shù)據(jù)進(jìn)行運(yùn)算而不需要 快速傅里葉變換(FFT)運(yùn)算和計(jì)算知覺(jué)熵。另外,上述視窗類型判定方法適于使用長(zhǎng)視窗, 由此使短視窗的使用最小化。它只有當(dāng)檢測(cè)到從穩(wěn)定信號(hào)到瞬態(tài)信號(hào)的轉(zhuǎn)變的指示時(shí)才使 用短視窗。圖4是用于檢測(cè)幀當(dāng)中從穩(wěn)定信號(hào)到瞬態(tài)信號(hào)的轉(zhuǎn)變的指示的過(guò)程400的一個(gè)實(shí) 施例的流程圖。參照?qǐng)D4,處理邏輯始于計(jì)算當(dāng)前幀的MDCT系數(shù)集合和下一幀的初級(jí)MDCT系數(shù)的 集合(處理塊402)。然后,處理邏輯在緩沖器中存儲(chǔ)所計(jì)算出的MDCT系數(shù)集合。在處理塊404,處理邏輯利用所計(jì)算出的當(dāng)前幀的初級(jí)MDCT系數(shù)來(lái)計(jì)算當(dāng)前幀的 總能量。在一個(gè)實(shí)施例中,按如下計(jì)算當(dāng)前幀的總能量current_total_energy = sum (current_coef [i] *current_coef [i] /C) for i = 0 to 1023,其中CUrrent_COef [i]是當(dāng)前幀中的第i個(gè)MDCT系數(shù)的數(shù)值,而C是用來(lái)防止總 和溢出的常量(例如,對(duì)于16位寄存器,C = 32767)。在處理塊406,處理邏輯利用所計(jì)算出的下一幀的初級(jí)MDCT系數(shù)來(lái)計(jì)算下一幀的 總能量。同樣,按如下計(jì)算下一幀的總能量next_total_energy = sum(next_coef[i]*next_coef[i]/C)for i = Oto 1023,
其中next_COef [i]是下一幀中的第i個(gè)MDCT系數(shù)的數(shù)值,而C是用來(lái)防止總和
溢出的常量。 在處理塊408,處理邏輯以對(duì)數(shù)方式縮放當(dāng)前幀的總能量和下一幀的總能量。在一 個(gè)實(shí)施例中,所述縮放是按如下完成的c—pow = log (current_total_energy)禾口 η—pow = log (next_total_energy)。在處理塊410,處理邏輯通過(guò)將縮放后的下一幀的總能量減去縮放后的當(dāng)前幀的 總能量來(lái)計(jì)算梯度能量。在判定框412,處理邏輯確定梯度能量是否超出閾值(例如,1)。在一個(gè)實(shí)施例中, 所述閾值是實(shí)驗(yàn)上定義的。如果在判定框412確定為肯定的,則處理邏輯就判定在下一幀 中很可能發(fā)生到瞬態(tài)信號(hào)的轉(zhuǎn)變(處理塊414)。圖5是用于根據(jù)下一幀的初級(jí)視窗類型和前一幀的視窗類型來(lái)確定當(dāng)前幀的視 窗類型的過(guò)程500的一個(gè)實(shí)施例的流程圖。參照?qǐng)D5,處理邏輯從確定下一幀的初級(jí)視窗類型是否是長(zhǎng)視窗類型開(kāi)始(判定 框502)。如果是,則處理邏輯進(jìn)一步確定前一幀的視窗類型是長(zhǎng)視窗類型還是短_長(zhǎng)視窗 類型(判定框504)。如果是,則處理邏輯就判定當(dāng)前幀的視窗類型是長(zhǎng)視窗類型(處理塊 506)。如果不是,則處理邏輯就判定當(dāng)前幀的視窗類型是短-長(zhǎng)視窗類型(處理塊508)。如果在判定框502確定為否定的,即下一幀的初級(jí)視窗類型是短視窗類型,則處 理邏輯進(jìn)一步確定前一幀的視窗類型是長(zhǎng)視窗類型還是短-長(zhǎng)視窗類型(判定框510)。如 果是,則處理邏輯就判定當(dāng)前幀的視窗類型是長(zhǎng)-短視窗類型(處理塊512)。如果不是,則 處理邏輯就判定當(dāng)前幀的視窗類型是短視窗類型(處理塊514)。在一個(gè)實(shí)施例中,如果判定為一幀使用短視窗類型,則利用短視窗編組來(lái)減少與 短視窗相關(guān)聯(lián)的輔助信息量。每個(gè)群組都包括一個(gè)或多個(gè)連續(xù)的短視窗,其比例因子是相 同的。在一個(gè)實(shí)施例中,關(guān)于編組的信息被包含在所指定的比特流元素當(dāng)中。在一個(gè)實(shí)施 例中,關(guān)于編組的信息包括幀內(nèi)的群組數(shù)量和每一幀中的短視窗的數(shù)量。圖6是用于編組幀內(nèi)的短視窗的過(guò)程600的一個(gè)實(shí)施例的流程圖。參照?qǐng)D6,處理邏輯從識(shí)別幀內(nèi)的第一類型的短視窗和第二類型的短視窗開(kāi)始 (處理塊602)。短視窗的類型是根據(jù)與這個(gè)視窗相關(guān)聯(lián)的能量來(lái)確定的。下面將結(jié)合圖7 更詳細(xì)地論述用于確定短視窗類型的過(guò)程的一個(gè)實(shí)施例。在處理塊604,處理邏輯調(diào)整其分類很可能不正確的短視窗的類型。在一個(gè)實(shí)施例 中,如果其類型不匹配相鄰視窗的類型并且相鄰視窗具有相同的類型,則短視窗的分類很 可能是不正確的。在一個(gè)實(shí)施例中,其中幀內(nèi)短視窗的數(shù)量等于8,所述調(diào)整過(guò)程可以表示 為for win_i ndex 1 to 6if (candidate [win_index_l] = candidate [win_index+l]),candidate [win_index] = candidate [win_index_l],其中 win_index 指的是中貞內(nèi) 的短視窗的號(hào)石馬,而 candidate [win_index]、candidate [win_index_l]禾口 candidate [win_ index+l]分別表示當(dāng)前視窗、前一視窗、和下一視窗的類型。在處理塊606,處理邏輯將幀內(nèi)的短視窗根據(jù)它們的類型編組成兩個(gè)初級(jí)群組。下 面將結(jié)合圖8更詳細(xì)地論述用于創(chuàng)建短視窗的兩個(gè)初級(jí)群組的過(guò)程的一個(gè)實(shí)施例。
在判定框608,處理邏輯確定任何初級(jí)群組中的短視窗的數(shù)量是否超出閾值數(shù)量。在一個(gè)實(shí)施例中,閾值數(shù)量是一個(gè)實(shí)驗(yàn)上確定的常量。取決于閾值數(shù)量,可能沒(méi)有一個(gè)群組 是過(guò)大的,或者一個(gè)或兩個(gè)初級(jí)群組是過(guò)大的。在另一個(gè)實(shí)施例中,所述閾值數(shù)量是其它初 級(jí)群組中的短視窗的數(shù)量,并且如果一個(gè)初級(jí)群組中的短視窗的數(shù)量超出其它初級(jí)群組中 的短視窗的數(shù)量則處理邏輯就判定它超出閾值。當(dāng)使用比較時(shí),可能沒(méi)有一個(gè)初級(jí)群組是 過(guò)大的,或一個(gè)初級(jí)群組可能是過(guò)大的。當(dāng)群組過(guò)大時(shí),很可能它將具有不同特性的短視窗 組合起來(lái)。然后,這個(gè)群組的公共比例因子的使用可能導(dǎo)致音質(zhì)的下降。如果處理邏輯在判定框608確定兩個(gè)初級(jí)群組中的任何群組過(guò)大,則處理邏輯就 進(jìn)一步將大的初級(jí)群組劃分成兩個(gè)或多個(gè)最終群組(處理塊610)。按這樣的方法來(lái)完成最 終群組,以便群組數(shù)量能夠?qū)崿F(xiàn)編碼效率和音質(zhì)之間的平衡。下面將結(jié)合圖9更詳細(xì)地描 述用于執(zhí)行短視窗的最終編組的過(guò)程的一個(gè)實(shí)施例。在處理塊612,處理邏輯根據(jù)最終群組來(lái)確定幀內(nèi)的群組的數(shù)量以及每個(gè)群組中 的短視窗的數(shù)量。圖7是用于確定短視窗的類型的過(guò)程700的一個(gè)實(shí)施例的流程圖。參照?qǐng)D7,處理邏輯從計(jì)算幀內(nèi)的每個(gè)短視窗的能量開(kāi)始(處理塊702)。在一個(gè) 實(shí)施例中,按如下計(jì)算每個(gè)短視窗的能量win_energy [win_index] = log[sum(coef[i]*coef[i])+0· 5],其中[win_index] 標(biāo)識(shí)幀內(nèi)的當(dāng)前短視窗的號(hào)碼,wiruenergy是所得到的能量,而coef[i]是短視窗內(nèi)的第i 個(gè)頻譜系數(shù)。接下來(lái),處理邏輯找到具有最小能量的短視窗(處理塊704)并且計(jì)算所述幀中的 每個(gè)短視窗的偏移能量值(處理塊706)。在一個(gè)實(shí)施例中,偏移能量值是通過(guò)將相應(yīng)的短 視窗的能量減去最小能量而計(jì)算出的。在處理塊708,處理邏輯通過(guò)用所述幀內(nèi)的所有偏移能量值的總和除以所述幀中 的短視窗數(shù)量來(lái)計(jì)算所述幀的平均偏移能量值。在判定框710,處理邏輯為第一短視窗確定是否其偏移能量值超出平均偏移能量 值。如果是,則處理邏輯判定該短視窗具有第一類型(處理塊712)。如果不是,則處理邏輯 判定該短視窗具有第二類型(處理塊714)。接下來(lái),處理邏輯確定在所述幀中是否有更多的未處理的視窗(判定框715)。如 果是,則處理邏輯移動(dòng)到下一個(gè)短視窗(處理塊716)并且前進(jìn)至判定框710。如果不是,則 過(guò)程700結(jié)束。圖8是用于創(chuàng)建短視窗的兩個(gè)初級(jí)群組的過(guò)程800的一個(gè)實(shí)施例的流程圖。參照?qǐng)D8,處理邏輯從初始化一組變量開(kāi)始(處理塊802)。例如,處理邏輯可以將 前一視窗類型變量的值設(shè)置為第一短視窗類型,將初級(jí)群組數(shù)目變量的數(shù)值設(shè)置為1,并且 將第一初級(jí)群組長(zhǎng)度變量的數(shù)值設(shè)置為1。接下來(lái),處理邏輯從所述幀中的第二短視窗起,開(kāi)始處理短視窗。具體地說(shuō),處理 邏輯確定當(dāng)前短視窗的類型是否與第一短視窗類型相同(判定框804)。如果是,則處理邏 輯使第一初級(jí)群組長(zhǎng)度增加1 (處理塊806),并且檢查是否還有更多的短視窗仍未處理(判 定框808)。如果還有更多的短視窗仍未處理,則處理邏輯移動(dòng)到下一個(gè)短視窗(處理塊 810)并且返回到判定框804。如果沒(méi)有還未處理的短視窗,則過(guò)程800結(jié)束。
如果處理邏輯在判定框804確定當(dāng)前短視窗的類型與第一短視窗的類型不同,則 處理邏輯就將初級(jí)群組數(shù)目設(shè)置為2 (處理塊812)并且通過(guò)將短幀的總數(shù)量減去第一初級(jí) 群組的長(zhǎng)度來(lái)計(jì)算第二初級(jí)群組的長(zhǎng)度(處理塊814)。圖9是用于執(zhí)行短視窗的最終編組的過(guò)程900的一個(gè)實(shí)施例的流程圖。過(guò)程900 根據(jù)MPEG標(biāo)準(zhǔn)進(jìn)行操作,根據(jù)該標(biāo)準(zhǔn)所述幀中的短視窗的數(shù)量等于8。
參照?qǐng)D9,處理邏輯從確定第一初級(jí)群組的長(zhǎng)度是否超出閾值(例如,4)開(kāi)始(判 定框902)。如果是,則處理邏輯進(jìn)一步確定第一初級(jí)群組的長(zhǎng)度是否等于8 (判定框904)。 如果是,則處理邏輯將最終的群組數(shù)量設(shè)置為2,將第一最終群組的長(zhǎng)度設(shè)置為第一初級(jí)群 組的長(zhǎng)度,并且將第二最終群組的長(zhǎng)度設(shè)置為第二初級(jí)群組的長(zhǎng)度(處理塊906)。如果不 是,則處理邏輯將群組的最終數(shù)量設(shè)置為3 (處理塊908),將第三最終群組的長(zhǎng)度設(shè)置為第 二初級(jí)群組的長(zhǎng)度(處理塊910),通過(guò)用初級(jí)第二群組的長(zhǎng)度除以二來(lái)計(jì)算第二最終群組 的長(zhǎng)度(所述計(jì)算可以用wind0w_gr0up_length[l] >> 1來(lái)表示)(處理塊912),并且通 過(guò)將第一初級(jí)群組的長(zhǎng)度減去第二最終群組的長(zhǎng)度來(lái)計(jì)算第一最終群組的長(zhǎng)度(處理塊 914)。如果處理邏輯在判定框902確定第一初級(jí)群組的長(zhǎng)度沒(méi)有超出閾值,則它就進(jìn)一 步確定第一初級(jí)群組的長(zhǎng)度是否小于閾值(判定框916)。如果是,處理邏輯將群組的最終 數(shù)量設(shè)置為3 (處理塊917),通過(guò)用第二初級(jí)群組的長(zhǎng)度除以二來(lái)計(jì)算第三最終群組的長(zhǎng) 度(所述計(jì)算可以用Wind0W_gr0up_length[2] >> 1來(lái)表示)(處理塊918),通過(guò)從第二 初級(jí)群組的長(zhǎng)度減去第三最終群組的長(zhǎng)度來(lái)計(jì)算第二最終群組的長(zhǎng)度(處理塊920),并且 將第一最終群組的長(zhǎng)度設(shè)置為第一初級(jí)群組的長(zhǎng)度(處理塊922)。如果處理邏輯在判定框916確定第一初級(jí)群組的長(zhǎng)度不小于閾值,則它就將群組 的數(shù)量設(shè)置為2并且將第一最終群組的長(zhǎng)度設(shè)置為第一初級(jí)群組的長(zhǎng)度并且將第二最終 群組的長(zhǎng)度設(shè)置為第二初級(jí)群組的長(zhǎng)度(處理塊924)。圖10舉例說(shuō)明了幀的短視窗的編組的示例。參照?qǐng)D10,正在編組的短視窗的類型被示出為grouping_bitS" 11100011〃。短 視窗的類型可以由圖7的過(guò)程700來(lái)確定。根據(jù)短視窗的這些類型,可以首先通過(guò)圖8的 過(guò)程800將短視窗編組成兩個(gè)初級(jí)群組,由此創(chuàng)建具有3個(gè)短視窗的第一初級(jí)群組和具有 5個(gè)短視窗的第二初級(jí)群組。接下來(lái),可以利用閾值數(shù)量4來(lái)執(zhí)行圖9的過(guò)程900,以進(jìn)一 步將第二初級(jí)群組劃分成兩個(gè)群組。其結(jié)果是,創(chuàng)建了三個(gè)最終群組,其中第一最終群組具 有3個(gè)短視窗,第二最終群組具有3個(gè)短視窗,并且第三最終群組具有2個(gè)短視窗。圖11的下列描述意在提供對(duì)適用于實(shí)現(xiàn)本發(fā)明的計(jì)算機(jī)硬件及其它工作的組件 的概述,但是不意在限制應(yīng)用環(huán)境。圖11舉例說(shuō)明了適合用作為編碼系統(tǒng)100或僅用作為 圖1的濾波器組模塊102的計(jì)算機(jī)系統(tǒng)的一個(gè)實(shí)施例。所述計(jì)算機(jī)系統(tǒng)1140包括處理器1150、存儲(chǔ)器1155和耦合于系統(tǒng)總線1165的 輸入/輸出能力1160。所述存儲(chǔ)器1155被配置成能存儲(chǔ)當(dāng)由處理器1150執(zhí)行時(shí)運(yùn)行這 里所述的方法的指令。輸入/輸出1160還包含各種類型的計(jì)算機(jī)可讀介質(zhì),包括可由處理 器1150訪問(wèn)的任何類型的存儲(chǔ)設(shè)備。本領(lǐng)域的技術(shù)人員將會(huì)立即認(rèn)識(shí)到術(shù)語(yǔ)"計(jì)算機(jī)可 讀媒體/介質(zhì)"還包含編碼數(shù)據(jù)信號(hào)的載波。還將認(rèn)識(shí)到的是所述系統(tǒng)1140是由存儲(chǔ) 器1155中所執(zhí)行的操作系統(tǒng)軟件來(lái)控制的。輸入/輸出和相關(guān)介質(zhì)1160存儲(chǔ)用于操作系統(tǒng)的可執(zhí)行指令以及本發(fā)明的方法。圖1中所示的濾波器組模塊102可以是耦合于處理器1150的獨(dú)立組件或者可以由處理器1150所執(zhí)行的計(jì)算機(jī)可執(zhí)行指令加以具體化。在一個(gè) 實(shí)施例中,所述計(jì)算機(jī)系統(tǒng)1140可以是ISP(因特網(wǎng)服務(wù)提供商)的一部分或者通過(guò)輸入 /輸出1160耦合于ISP以便在因特網(wǎng)上發(fā)送或接收?qǐng)D像數(shù)據(jù)。顯而易見(jiàn)的是本發(fā)明不限 于因特網(wǎng)訪問(wèn)以及因特網(wǎng)基于Web的站點(diǎn);還可以設(shè)想直接耦合的網(wǎng)絡(luò)和專用網(wǎng)絡(luò)。將會(huì)認(rèn)識(shí)到的是,所述計(jì)算機(jī)系統(tǒng)1140是具有不同的體系結(jié)構(gòu)的許多可能的計(jì) 算機(jī)系統(tǒng)中的一個(gè)例子。典型的計(jì)算機(jī)系統(tǒng)將通常至少包括處理器、存儲(chǔ)器和將存儲(chǔ)器 耦合于處理器的總線。本領(lǐng)域的技術(shù)人員將會(huì)立即認(rèn)識(shí)到可以利用其它計(jì)算機(jī)系統(tǒng)結(jié)構(gòu) 來(lái)實(shí)施本發(fā)明,包括多處理器系統(tǒng)、微型計(jì)算機(jī)、大型計(jì)算機(jī)等等。本發(fā)明還可以在分布計(jì) 算環(huán)境中實(shí)施,在所述分布計(jì)算環(huán)境中任務(wù)是由通過(guò)通信網(wǎng)絡(luò)鏈接的遠(yuǎn)程處理設(shè)備來(lái)執(zhí)行 的。已經(jīng)描述了在音頻編碼過(guò)程中進(jìn)行視窗類型確定的各種不同的方面。盡管在這里 已經(jīng)舉例說(shuō)明和描述了特定實(shí)施例,但是本領(lǐng)域的技術(shù)人員將會(huì)認(rèn)識(shí)到的是,計(jì)算以達(dá)到 相同目的的任何方案都可以替代所示的特定實(shí)施例。本申請(qǐng)意在涵蓋本發(fā)明的任何修改或 變形。
權(quán)利要求
一種方法,包括利用長(zhǎng)視窗類型來(lái)為數(shù)據(jù)的當(dāng)前幀和數(shù)據(jù)的下一幀中的每一個(gè)計(jì)算當(dāng)前幀的多個(gè)初級(jí)修正離散余弦變換(MDCT)系數(shù)和下一幀的多個(gè)初級(jí)MDCT系數(shù);利用當(dāng)前幀的多個(gè)初級(jí)MDCT系數(shù)和下一幀的多個(gè)初級(jí)MDCT系數(shù)來(lái)確定當(dāng)前幀的視窗類型;以及如果所確定的當(dāng)前幀的視窗類型不是長(zhǎng)視窗類型,則利用所確定的視窗類型來(lái)計(jì)算當(dāng)前幀的多個(gè)最終MDCT系數(shù)。
2.根據(jù)權(quán)利要求1所述的方法,其中多個(gè)初級(jí)MDCT系數(shù)是根據(jù)沿時(shí)間軸產(chǎn)生的多個(gè)相 應(yīng)的樣值計(jì)算的。
3.根據(jù)權(quán)利要求1所述的方法,進(jìn)一步包括如果所確定的當(dāng)前幀的視窗類型是長(zhǎng)視窗類型,則將當(dāng)前幀的多個(gè)初級(jí)MDCT系數(shù)用 作為當(dāng)前幀的多個(gè)最終MDCT系數(shù)。
4.根據(jù)權(quán)利要求1所述的方法,其中確定當(dāng)前幀的視窗類型包括確定下一幀的初級(jí)視窗類型;以及使用下一幀的初級(jí)視窗類型和前一幀的視窗類型來(lái)確定當(dāng)前幀的視窗類型。
5.根據(jù)權(quán)利要求4所述的方法,其中確定下一幀的初級(jí)視窗類型包括利用當(dāng)前幀的多個(gè)初級(jí)MDCT系數(shù)來(lái)計(jì)算當(dāng)前幀的總能量;利用下一幀的多個(gè)初級(jí)MDCT系數(shù)來(lái)計(jì)算下一幀的總能量;根據(jù)當(dāng)前幀的總能量和下一幀的總能量來(lái)確定是否很可能在下一幀中發(fā)生從穩(wěn)定信 號(hào)到瞬態(tài)信號(hào)的轉(zhuǎn)變;以及如果很可能發(fā)生轉(zhuǎn)變,則判定下一幀的初級(jí)視窗類型是短視窗類型。
6.根據(jù)權(quán)利要求5所述的方法,進(jìn)一步包括如果不大可能發(fā)生轉(zhuǎn)變,則判定下一幀的初級(jí)視窗類型是長(zhǎng)視窗類型。
7.根據(jù)權(quán)利要求5所述的方法,其中使用下一幀的初級(jí)視窗類型和前一幀的視窗類型 來(lái)確定當(dāng)前幀的視窗類型包括識(shí)別前一幀的視窗類型;以及為當(dāng)前幀選擇過(guò)渡視窗類型以便從前一幀的視窗類型轉(zhuǎn)變到下一幀的初級(jí)視窗類型, 所述選擇優(yōu)先使用長(zhǎng)視窗類型而非短視窗類型。
8.一種設(shè)備,包括用于利用長(zhǎng)視窗類型來(lái)為數(shù)據(jù)的當(dāng)前幀和數(shù)據(jù)的下一幀中的每一個(gè)計(jì)算當(dāng)前幀的多 個(gè)初級(jí)修正離散余弦變換(MDCT)系數(shù)和下一幀的多個(gè)初級(jí)MDCT系數(shù)的裝置;用于利用當(dāng)前幀的多個(gè)初級(jí)MDCT系數(shù)和下一幀的多個(gè)初級(jí)MDCT系數(shù)來(lái)確定當(dāng)前幀的 視窗類型的裝置;以及用于如果所確定的當(dāng)前幀的視窗類型不是長(zhǎng)視窗類型,則利用所確定的視窗類型來(lái)計(jì) 算當(dāng)前幀的多個(gè)最終MDCT系數(shù)的裝置。
9.一種設(shè)備,包括修正離散余弦變換(MDCT)系數(shù)計(jì)算器,用于利用長(zhǎng)視窗類型來(lái)為數(shù)據(jù)的當(dāng)前幀和數(shù) 據(jù)的下一幀中的每一個(gè)計(jì)算當(dāng)前幀的多個(gè)初級(jí)修正離散余弦變換(MDCT)系數(shù)和下一幀的 多個(gè)初級(jí)MDCT系數(shù);和視窗類型確定器,用于利用當(dāng)前幀的多個(gè)初級(jí)MDCT系數(shù)和下一幀的多個(gè)初級(jí)MDCT系 數(shù)來(lái)確定當(dāng)前幀的視窗類型,其中所述MDCT系 數(shù)計(jì)算器進(jìn)一步執(zhí)行如下操作如果所確定的當(dāng)前幀的視窗類型不 是長(zhǎng)視窗類型,則利用所確定的視窗類型來(lái)計(jì)算當(dāng)前幀的多個(gè)最終MDCT系數(shù)。
全文摘要
利用長(zhǎng)視窗類型來(lái)為數(shù)據(jù)的當(dāng)前幀和數(shù)據(jù)的下一幀計(jì)算初級(jí)修正離散余弦變換(MDCT)系數(shù)。然后,使用計(jì)算出的當(dāng)前幀和下一幀的初級(jí)MDCT系數(shù)來(lái)確定視窗類型不是長(zhǎng)視窗類型,利用所確定的視窗類型來(lái)為當(dāng)前幀計(jì)算最終MDCT系數(shù)。
文檔編號(hào)G10LGK101968781SQ201010268819
公開(kāi)日2011年2月9日 申請(qǐng)日期2004年9月20日 優(yōu)先權(quán)日2003年9月29日
發(fā)明者J·雍 申請(qǐng)人:索尼電子有限公司