專利名稱:H.263視頻編碼的可變長編碼方法和系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及H.263視頻編碼,尤其是涉及H.263視頻編碼中的可變長編碼方法。
背景技術(shù):
H.263標準是一種用于低比特率視頻業(yè)務(wù)中運動圖像部分的壓縮編碼方法。這種方法的基本思想是基于ITU-T (國際電信聯(lián)盟遠程通信標準化組織)的H.261標準,把減少空間冗余的幀內(nèi)預(yù)測和減少時間冗余的幀間預(yù)測結(jié)合起來。編碼器有運動補償能力,并有一些功能、編碼方法選項。與H.261協(xié)議相比,H.263編碼器能夠占用更少的帶寬資源,編碼出對應(yīng)H.261協(xié)議高帶寬能達到相同的視頻質(zhì)量。因此,目前被廣泛應(yīng)用于無線網(wǎng)絡(luò)的視頻通話以及手機視頻錄制。為進一步改善圖像質(zhì)量和提高壓縮比,H.263標準與H.261標準相比增加了一些功能,例如采用基于語法的算術(shù)編碼在不損失信噪比和圖像重建的前提下,可以大量減少數(shù)據(jù)量。在未使能這一功能時,H.263標準采用的編碼方式為:可變長編碼(VLC)。VLC的基本思想是對一組出現(xiàn)概率各不相同的信源符號,采用不同長度的碼字表示,對出現(xiàn)概率高的信源符號采用短碼字,對出現(xiàn)概率低的信源符號采用長碼字;并且在VLC過程中,碼字之間通常不會加入任何分隔標識。在H.263標準中,對宏塊類型、運動矢量預(yù)測差值、子宏塊編碼模式以及DCT(離散余弦變換)變換系數(shù)的編碼都是用VLC編碼。其中,DCT變換系數(shù)的編碼最為復(fù)雜,并且耗時最多。H.263標準是以8X8塊為單位進行DCT變換以及量化的,殘差系數(shù)編碼也是以8X8塊為單位。在編碼殘差系數(shù)之前,首先將量化后的數(shù)據(jù)按照某種特定順序進行掃描,再用(LAST、RUN、LEVEL)的組合表示一個掃描之后的非零系數(shù)。其中,LAST標志當前的非零系數(shù)是否為最后一個非零系數(shù)(“O”表示此塊中仍有非零系數(shù),“I”表示當前非零系數(shù)為此塊中最后的非零系數(shù)),RUN表示當前非零系數(shù)前緊鄰的連續(xù)零個數(shù),LEVEL則表示系數(shù)的非零值。因此,假設(shè)某個8X8塊有N個非零系數(shù),對應(yīng)N個(LAST、RUN、LEVEL)組合,編碼殘差系數(shù)就是在可變長編碼碼表中找到對應(yīng)的碼字依次表示這N個組合。在H.263標準中,常用的(LAST、RUN、LEVEL)組合有對應(yīng)的碼字表示,編碼時可以直接查表獲知,剩余組合用固定結(jié)構(gòu)的22比特編碼,它由7比特ESCAPEU比特LAST、6比特RUN和8比特的LEVEL組成。殘差數(shù)據(jù)的VLC編碼過程參見
圖1,具體說明如下:步驟101為重排序。每個8X8塊進行DCT以及量化之后,數(shù)據(jù)形式是二維的8X8矩陣,重排序就是按照已知的掃描順序,重新排列這64個數(shù)據(jù),并使之成為一維數(shù)據(jù)。在步驟103依次掃描排列之后的64個數(shù)據(jù),并記錄第η個(η從“O”開始計數(shù))非零系數(shù)的RUN值和LEVEL值(步驟110)。繼續(xù)掃描,如果后面仍有第n+1個非零系數(shù)存在,則將第η個非零系數(shù)的LAST標記為“0”,并根據(jù)LAST、RUN和LEVEL值判斷,當前的非零系數(shù)是否能夠用H.263標準中的碼表編碼(步驟106)。對于在步驟105確定的第O個非零系數(shù),將跳過這一階段。
如果當前的非零系數(shù)在已知碼表中,再以LAST、RUN和LEVEL值為索引,查找對應(yīng)碼字(步驟107),在步驟108確定找到對應(yīng)的碼字后,查找到的碼字即為當前非零系數(shù)對應(yīng)碼字,寫入碼流中(步驟109),否則編碼成固定結(jié)構(gòu)的22比特碼字寫入碼流中(步驟111);重復(fù)步驟103-111,直至64個數(shù)據(jù)全部搜索完成。當在步驟102判斷當前塊所有系數(shù)掃描完成后,如果在步驟112判斷當前塊存在非零系數(shù),則在步驟113編碼最后的非零系數(shù):先將LAST標記為“1”,并根據(jù)LAST、RUN和LEVEL值判斷,當前的非零系數(shù)是否能夠用H.263標準中的碼表編碼;如果在已知碼表中,再以LAST、RUN和LEVEL值為索引,查找對應(yīng)碼字寫入碼流中,否則編碼成固定結(jié)構(gòu)的22比特碼字寫入碼流中。在步驟114完成當前塊編碼?,F(xiàn)有技術(shù)在掃描過程中,遇見非零系數(shù)即馬上查表編碼。由于協(xié)議中(RUN,LEVEL)碼表并不整齊,完全對齊占用空間過大,折中方法是將原來的一張不對齊的碼表分割成四個整齊的碼表,不整齊的地方補零。碼表按照如下方式設(shè)置:
權(quán)利要求
1.一種H.263視頻編碼的可變長編碼方法,包括以下步驟: 1)讀取離散余弦變換和量化之后的數(shù)據(jù); 2)記錄所述數(shù)據(jù)中非零系數(shù)的LEVEL值和RUN值,其中LEVEL值表示非零系數(shù)的非零值,RUN值表示當前非零系數(shù)前緊鄰的連續(xù)零個數(shù); 3)以非零系數(shù)的LEVEL值查找第一索引表以獲得所述LEVEL值對應(yīng)的RUN值的取值范圍; 4)通過判斷非零系數(shù)的LEVEL值和RUN值是否滿足各自的取值范圍來預(yù)先判斷所述非零系數(shù)是否能夠在可變長編碼碼表中查找到碼字;以及 5)如果能夠在所述碼表中查找到碼字,則以所述LEVEL值為一級索引,所述RUN值為二級索引,在所述碼表中找到所述碼字。
2.如權(quán)利要求1所述的方法,其特征在于,還包括步驟6): 如果不能夠在所述碼 表中查找到碼字,則將非零系數(shù)編碼成固定結(jié)構(gòu)的22比特碼字。
3.如權(quán)利要求1所述的方法,其特征在于,直接按照掃描順序讀取所述離散余弦變換和量化之后的數(shù)據(jù)。
4.如權(quán)利要求2所述的方法,其特征在于,重復(fù)所述步驟2),直至記錄所述數(shù)據(jù)中所有非零系數(shù)的LEVEL值和RUN值。
5.如權(quán)利要求4所述的方法,其特征在于,在記錄所述數(shù)據(jù)中所有非零系數(shù)的LEVEL值和RUN值后,開始執(zhí)行所述步驟3)。
6.如權(quán)利要求4所述的方法,其特征在于,每記錄所述數(shù)據(jù)中的一個非零系數(shù)的LEVEL值和RUN值,則執(zhí)行所述步驟3)。
7.如權(quán)利要求4-6任一項所述的方法,其特征在于,重復(fù)所述步驟3)-6),直至所有的非零系數(shù)編碼完成。
8.如權(quán)利要求1所述的方法,其特征在于,所述碼表是非對齊的。
9.如權(quán)利要求1所述的方法,其特征在于,所述碼表沒有冗余碼字。
10.如權(quán)利要求1所述的方法,其特征在于,在所述碼表中,以非零系數(shù)的LEVEL值為一級索引,RUN值為二級索引,每個LEVEL值對應(yīng)一個或多個RUN值。
11.如權(quán)利要求10所述的方法,其特征在于,所述碼表根據(jù)非零系數(shù)的LAST值分為兩個部分,其中LAST值標志當前的非零系數(shù)是否為最后一個非零系數(shù)。
12.如權(quán)利要求1所述的方法,其特征在于,以所述LEVEL值為一級索引,所述RUN值為二級索引,在所述碼表中找到所述碼字的步驟包括: 以所述LEVEL值查找第二索引表以獲得所述碼字在所述碼表中的起始偏移地址; 基于所述起始偏移地址并以所述RUN值為附加偏移地址,在所述碼表中找到所述碼字。
13.如權(quán)利要求1所述的方法,其特征在于,所述第一索引表包括以非零系數(shù)的LEVEL值為索引的RUN值的取值范圍。
14.如權(quán)利要求11所述的方法,其特征在于,所述第二索引表包括以非零系數(shù)的LEVEL值為索引的碼字在所述碼表中的起始偏移地址。
15.一種H.263視頻編碼的可變長編碼系統(tǒng),包括: 用于讀取離散余弦變換和量化之后的數(shù)據(jù)的裝置;用于記錄所述數(shù)據(jù)中非零系數(shù)的LEVEL值和RUN值的裝置,其中LEVEL值表示非零系數(shù)的非零值,RUN值表示當前非零系數(shù)前緊鄰的連續(xù)零個數(shù); 用于以非零系數(shù)的LEVEL值查找第一索引表以獲得所述LEVEL值對應(yīng)的RUN值的取值范圍的裝置; 用于通過判斷非零系數(shù)的LEVEL值和RUN值是否滿足各自的取值范圍來預(yù)先判斷所述非零系數(shù)是否能夠在可變長編碼碼表中查找到碼字的裝置; 用于如果能夠在所述碼表中查找到碼字,則以所述LEVEL值為一級索引,所述RUN值為二級索引,在所述碼表中找到所述碼字的裝置。
16.如權(quán)利要求15所述的系統(tǒng),其特征在于還包括:用于如果不能夠在所述碼表中查找到碼字,則將非零系數(shù)編碼成固 定結(jié)構(gòu)的22比特碼字的裝置。
全文摘要
本發(fā)明涉及一種H.263視頻編碼的可變長編碼方法,包括以下步驟讀取離散余弦變換和量化之后的數(shù)據(jù);記錄所述數(shù)據(jù)中非零系數(shù)的LEVEL值和RUN值,其中LEVEL值表示非零系數(shù)的非零值,RUN值表示當前非零系數(shù)前緊鄰的連續(xù)零個數(shù);以非零系數(shù)的LEVEL值查找第一索引表以獲得所述LEVEL值對應(yīng)的RUN值的取值范圍;通過判斷非零系數(shù)的LEVEL值和RUN值是否滿足各自的取值范圍來預(yù)先判斷所述非零系數(shù)是否能夠在可變長編碼碼表中查找到碼字;以及如果能夠在所述碼表中查找到碼字,則以所述LEVEL值為一級索引,所述RUN值為二級索引,在所述碼表中找到所述碼字。
文檔編號H04N7/26GK103188486SQ201110447989
公開日2013年7月3日 申請日期2011年12月28日 優(yōu)先權(quán)日2011年12月28日
發(fā)明者于娜, 孫皓 申請人:聯(lián)芯科技有限公司