專利名稱:用于視頻編解碼芯片中幀內預測的數據存儲和交換方法
技術領域:
本發(fā)明涉及一種數據存儲和交換方法,特別涉及用于視頻編解碼 芯片中幀內預測的數據存儲和交換方法。
背景技術:
隨著集成電路(ic)產業(yè)的高速發(fā)展,IC集成度的提高,使得
視頻編解碼的芯片化得以實現。視頻編解碼的算法固定,因此芯片的 設計圍繞著如何能獲得最小的芯片面積開銷和最佳的芯片性能兩個 問題不斷深入。好的解決方案能夠優(yōu)化芯片內、外部存儲器的體系結
構,達到節(jié)省芯片面積的目標;同時又能夠優(yōu)化芯片內、外部存儲器 的數據交換,提高芯片速度。
視頻圖像幀一般分為I幀、P幀、B幀三類基本幀。I幀只采用 幀內預測方法,P幀可參考前面幾幀圖像進行幀間預測,而B幀則可 以進行前、后向雙向預測。由于視頻編解碼算法多是基于塊的預測技 術,因此圖像幀被進行了塊劃分, 一般以NXN的像素塊為基本單位, NXN可以是16X16、 8X8或4X4等,其中16X 16的像素塊一般稱 為一個宏塊Mb (Macroblock)。以像素塊為單位的預測包括了幀內 塊(I塊)預測和幀間塊(P塊)兩大類預測。I幀只包含I塊,而P 幀、B幀既可以包含I塊也可以包含P塊。另有一類特殊的塊,允許 編碼器不經過預測和變換編碼過程而直接把編碼時的采樣值傳送到
解碼端,稱為IPCM方式,這樣的塊簡稱IPCM塊。
編碼時對I塊采用幀內預測技術,只需對像素塊的預測值和原始
值的差值進行編碼,數據量小;解碼時也只需利用碼流中傳輸的差值 和編碼時所設定的參數重構像素塊,充分利用相鄰像素塊的相關性, 最大程度地減少空間冗余信息。無論編碼還是解碼中的幀內預測,均 需利用當前塊周圍緊鄰的塊的像素值作為參考進行預測,所以每當預 測當前塊時,其緊鄰塊的相關像素值都需要提取出來作為參考。對于 軟件編解碼器而言,所有數據都存儲在內存中,由于無需考慮內存的 開銷和帶寬的占用;但對于硬件編解碼器,如何合理的安排幀內預測 所需的數據信息的存儲以及數據之間的交互,既能夠節(jié)約芯片內部的 存儲空間,又能夠優(yōu)化與片外的數據交互,成為亟待解決的兩個問題。
目前己有的解決方案主要是基于行緩沖的參考存儲裝置及方法, 此方案是利用了視頻解碼芯片中有先進先出的行緩沖隊列。參考存儲 方法包括處理器從行緩沖隊列中取出預測當前編碼元素所需的已保 存在隊列中的相鄰元素值,進行空間預測,并得到新的元素解碼值, 將當前位置的元素值解碼更新到行緩沖隊列中步驟。如圖1所示,幀 內預測時,所取得的參考點是當前塊最緊鄰的左邊一列和上邊一行的 解碼像素值。詳細步驟為從行緩沖中取出左邊一塊和上邊一塊相鄰 像素點的解碼像素值存于內部寄存器中進行預測;預測結束后,將該 塊中最下面一行解碼像素值存于行緩沖中相應位置。
但是現有的方案是基于行緩沖的存儲,解碼是按照塊的順序一個 一個從左向右進行,未考慮解碼順序并不一定是按照從左向右連續(xù)的 塊順序進行的。事實上,在現有的視頻編解碼算法中,為了提高碼流 的抗干擾性能,均提出了片組的概念,屬于同一片組的宏塊空間位置
并不一定是連續(xù)的,因此也一定可以不是相鄰的。另一方面,現有方 案對于塊左上方的緊鄰像素點的存儲和使用卻未能提供說明,而如果 按照現有方案替換行緩沖裝置中的對應像素值,則塊左上方的緊鄰像 素點就無法保存,進而在下一次預測時不可獲得而無法實現預測。
發(fā)明內容
本發(fā)明的目的在于提供一種用于視頻編解碼芯片中幀內預測的 數據存儲和交換方法,從而既能夠節(jié)約芯片內部的存儲空間,又能夠 優(yōu)化與片外的數據交互。
本發(fā)明的目的可通過以下的技術措施來實現 一種用于視頻編解 碼芯片中幀內預測的數據存儲和交換方法,包括以下步驟
(1) 、初始化分別以亮度和色度方式記錄存儲的當前NXN像素
塊上方一圖像行像素值、當前NXN像素塊左方緊鄰列像素值和當前 NXN像素塊左上方緊鄰點像素值,此三組像素的亮度和色度值共六
個數組作為當前像素塊進行幀內預測時所需的參考像素
(2) 、處理當前一個幀內圖像的像素塊,即I塊,從步驟(1)中
的六個數組中對應取出預測當前I塊所需要的像素值,按照指定的預
測模式進行幀內預測,完成其幀內預測;
(3) 、分別用當前像素塊最右下角的像素點的值以及下邊界行 的像素值和右邊界列的像素值替換(1)中六個數組中對應的點、行 和列像素的值;
(4) 、當一個I塊處理完畢,退出當前I塊,使數組更新;
(5) 、把處理完的一個I塊的所有像素值寫入到片外的幀存中 的對應位置,即所預測的I塊位于一幀圖像中的位置。
在解碼過程中要處理IPCM塊或幀間預測圖像的像素塊,即P塊, 在完成PCM預測或幀間預測之后,將新產生當前像素塊的最右下角的 像素點的值以及下邊界行的像素值和右邊界列的像素值分別替換權 利要求l所述步驟(1)的六個數組中對應的點、行和列像素的值。
本發(fā)明所述步驟(1)六個數組為-
叩Y[N] [M]:當前NXN像素塊上方一圖像行的像素亮度值, 叩UV[2] [P] [M]:當前NXN像素塊上方一圖像行的像素色度值, leftY[N]:當前NXN像素塊左方緊鄰列的像素亮度值, leftUV[2] [P]:當前NXN像素塊左方緊鄰列的像素色度值, left_upY:當前NXN像素塊左上方緊鄰點的像素亮度值, left—叩UV[2]:當前NXN像素塊左上方緊鄰點的像素色度值。 其中,N表示所處理的I塊是以NXN像素塊為單位解碼,NXN 可以是16X16、 8X8、 4X4等像素塊單位;M值為當前一幅圖像以N XN像素塊劃分下,每一行的塊數目;而P的值取決于亮度、色度YUV 的采樣比例,亮度的采樣一般是色度的整數倍例如YUV4: 4: 4采 樣,則P二16; YUV4: 2: 2或4: 1: 1或4: 2: 0采樣,則P二8。
本發(fā)明所述列像素對應亮度和色度僅存儲一個NXN像素塊左方 緊鄰的N個像素值。
本發(fā)明所述步驟(3)首先用當前塊最右下角的像素點的值替換 left—upY中的值,然后用當前塊下邊界行的像素值替換upY[N][M] 中與當前塊橫坐標相同的對應域的值,最后用當前塊右邊界列的像素
值替換leftY[N]中與當前塊縱坐標相同的對應域的值,若處理的是 色度像素,則替換點、行和列像素的色度數組中對應域的值。
本發(fā)明所述步驟(5)幀存中的對應位置為當前像素塊在當前幀 中的位置。
采用本發(fā)明所述的方法,大大節(jié)省存儲空間,在同樣大小的圖像 情況下,存儲空間只有現有技術的l/8甚至更小,以像素為單位,存 儲上一圖像行的解碼值,加上左邊像素塊最右列的解碼值和左上角像 素的解碼值,存儲空間大小為(圖像寬度+像素塊邊長+l)字節(jié),本 發(fā)明還說明了僅在一幀開始時初始化參考像素的數組,每次處理完一 個像素塊即寫出數據到片外,使片內外數據交換合理。此外,本發(fā)明 也詳細描述了要作為參考的左上角像素點的存儲和數據交換方式,并 且考慮到了FM0 (Flexible Macroblock Ordering)的情況,FMO突破 了傳統(tǒng)意義上的片的劃分,允許獨立和分散的宏塊以一定的邏輯規(guī)則 映射到相應的片組里。
圖1為現有技術基于行緩沖的參考存儲方法流程示意圖2為本發(fā)明的流程示意圖3為4X4像素塊幀內預測的常用模式示意圖4為16X16像素塊幀內預測的常用模式示意圖5為4X4像素塊幀內預測所需要的參考像素分布示意圖6為16X16像素塊幀內預測所需要的參考像素分布示意圖7為8X8像素塊幀內預測所需要的參考像素分布示意圖。
具體實施例方式
本發(fā)明基于視頻編解碼器芯片關鍵環(huán)節(jié)一一幀內預測的設計實
現。幀內預測主要是基于塊的預測技術,幀內預測的圖像幀一般以N XN像素(N可以等于16、 8、 4 )為基本單元塊被劃分。
如圖3、圖4所示,以4X4像素塊和16X16像素塊為例(8X8 類同), 一般而言,當前像素塊的預測需要用到的緊鄰塊的參考像素 值可以分為三類, 一類是當前像素塊上方塊(有時也包括右上方塊) 的行像素、 一類是當前像素塊左方塊的列像素,還有一類特殊的是左 上方塊一個像素點。
歸納起來,以像素塊為單位進行幀內預測時,所需要用到的參考 像素分布基本上如圖5、 6和7所示的三種情況
16X16像素塊在進行幀內預測時,所需參考像素為當前塊上方 塊下邊界的16個像素、左方塊右邊界的16個像素以及左上方塊右下 角緊鄰的l個像素,共計33個參考像素點。8X8像素塊在進行幀內 預測時,所需參考像素為當前塊上方塊下邊界的8個像素、左方塊右 邊界的8個像素以及左上方塊右下角緊鄰的1個像素,共計17個參 考像素點。
4X4像素塊在進行幀內預測時,所需參考像素為當前塊上方塊 下邊界的4個像素、右上方塊下邊界的4個像素、左方塊右邊界的4 個像素以及左上方塊右下角緊鄰的1個像素,共計13個參考像素點。
這些參考像素點的值無論是編碼時還是解碼時都必須是已經存 在的,才能保證當前塊的預測能夠進行。而由于芯片內部存儲空間有
限,存儲一幀圖像的數據量相當大,為了合理的把幀內預測所需參考 像素值存儲在芯片內部,本發(fā)明采用存儲三類參考像素值(即行像 素、列像素、點像素)的方式為
(1) 行像素的存儲 亮度upY[N] [M] 色度upUV[2] [P] [M]
M值為當前一幅圖像以NXN像素塊劃分下,每一行的塊數目。 例如CIF (352X288)圖像,若N二16,貝U M=22; Dl (720X576)圖 像,若N:16,則M二45。
P的值取決于亮度、色度YUV的采樣比例,若YUV4: 4: 4采樣,
P二16;若YUV4: 2: 2采樣,P=8;若YUV4: 2: 0或者4: 1: 1采樣, P二8。 (4: 2: 2與4: 1: 1與4: 2: 0采樣僅在算法上有區(qū)別,在 此不贅述。)
則upY[N] [M]即表示當前塊上方一圖像行的所有亮度像素,色度 upUV[2] [P] [M]表示當前塊上方一圖像行的所有色度像素。
(2) 列像素的存儲 亮度leftY[N] 色度leftUV[2] [P]
亮度僅需要存儲一個NXN像素塊左方緊鄰的N個像素值即可; 色度以此類推。
(3) 點像素的存儲 亮度left—upY
色度left_upUV[2] 當前塊左上方緊鄰像素點的存儲。
其中具體幀內預測的數據存儲和交換方法為以下步驟,如圖2所
示
1、 處理當前I塊,從六個數組中對應的取出預測所需要的像素 值按照某種指定的預測模式進行幀內預測,完成幀內預測。
2、 首先用當前塊最右下角的像素點的值替換left—upY中的值; 若處理的是色度像素,則替換left—upUV[2]中的值。
3、 然后用當前塊下邊界行的像素值替換upY[N][M]中與當前塊 橫坐標相同的對應域的值;若處理的是色度像素,則替換 upUV[2] [P] [M]中對應域的值。
4、 最后用當前塊右邊界列的像素值替換leftY[N]中與當前塊縱 坐標相同的對應域的值;若處理的是色度像素,則替換leftUV[P]中 對應域的值。
5、 一個I塊處理完畢,退出當前塊,數組被更新。
6、 若處理P塊或IPCM塊,同樣需要在完成其幀間預測或PCM預 測之后,將新產生的像素值按照步驟3、 4、 5的順序依次替換三組數 組的對應域,因為P塊或IPCM塊的像素值,也可能作為其緊鄰I塊 的預測參考像素值。
7、 處理完一個I塊,將該塊的所有像素值寫入到片外的幀存中 的對應位置(即當前像素塊在當前幀中的位置)。
權利要求
1、一種用于視頻編解碼芯片中幀內預測的數據存儲和交換方法,其特征在于包括以下步驟(1)、初始化分別以亮度和色度方式記錄存儲的當前N×N像素塊上方一圖像行像素值、當前N×N像素塊左方緊鄰列像素值和當前N×N像素塊左上方緊鄰點像素值,此三組像素的亮度和色度值共六個數組作為當前像素塊進行幀內預測時所需的參考像素;(2)、處理當前一個幀內圖像的像素塊,即I塊,從步驟(1)中的六個數組中對應取出預測當前I塊所需要的像素值,按照指定的預測模式進行幀內預測,完成其幀內預測;(3)、分別用當前像素塊最右下角的像素點的值以及下邊界行的像素值和右邊界列的像素值替換(1)中六個數組中對應的點、行和列像素的值;(4)、當一個I塊處理完畢,退出當前I塊,使數組更新;(5)、把處理完的一個I塊的所有像素值寫入到片外的幀存中的對應位置,即所預測的I塊位于一幀圖像中的位置。
2、 根據權利要求1幀內預測的數據存儲和交換方法,其特征在 于如果要處理IPCM塊或幀間預測圖像的像素塊,即P塊,在完成 PCM預測或幀間預測之后,將新產生當前像素塊的最右下角的像素點 的值以及下邊界行的像素值和右邊界列的像素值分別替換權利要求1 所述步驟(1)的六個數組中對應的點、行和列像素的值。
3、 根據權利要求1幀內預測的數據存儲和交換方法,其特征在 于所述步驟(1)六個數組為-upY[N] [M]:當前NXN像素塊上方一圖像行的像素亮度值, 叩UV[2] [P] [M]:當前NXN像素塊上方一圖像行的像素色度值, leftY[N]:當前NXN像素塊左方緊鄰列的像素亮度值, leftUV[2] [P]:當前NXN像素塊左方緊鄰列的像素色度值, left—upY:當前NXN像素塊左上方緊鄰點的像素亮度值, left—upUV[2]:當前NXN像素塊左上方緊鄰點的像素色度值; 其中,N值表示當前像素塊以NXN為大??;M值表示當前一幅圖像以NXN像素塊劃分下,每一行這樣的像素塊數目;而P的值取決于亮度、色度的采樣比例。
4、 根據權利要求1或2幀內預測的數據存儲和交換方法,其特 征在于所述列像素對應亮度和色度僅存儲一個NXN像素塊左方緊 鄰的N個像素值。
5、 根據權利要求1幀內預測的數據存儲和交換方法,其特征在 于所述步驟(2)的I塊是以NXN像素塊為單位解碼,NXN可以 是16X16、 8X8、 4X4等像素塊單位。
6、 根據權利要求1幀內預測的數據存儲和交換方法,其特征在 于所述步驟(3)首先用當前塊最右下角的像素點的值替換left一upY 中的值,然后用當前塊下邊界行的像素值替換upY[N][M]中與當前塊 橫坐標相同的對應域的值,最后用當前塊右邊界列的像素值替換 leftY[N]中與當前塊縱坐標相同的對應域的值,若處理的是色度像素,則替換點、行和列像素的色度數組中對應域的值。
7、 根據權利要求1幀內預測的數據存儲和交換方法,其特征在于所述步驟(5)幀存中的對應位置為當前像素塊在當前幀中的位
全文摘要
本發(fā)明公開一種用于視頻編解碼芯片中幀內預測的數據存儲和交換方法,包括以下步驟(1)初始化空間預測所需的參考像素值的六個數組upY[16][M]、upUV[2][P][M]、leftY[16]、leftUV[2][P]、left_upY、left_upUV[2];(2)從步驟(1)中的六個數組中對應的取出預測所需要的像素值,進行幀內預測;(3)分別用當前塊最右下角的像素點的值以及下邊界行的像素值和右邊界列的像素值替換其對應的點、行和列像素值的三組數組值;(4)當一個I宏塊處理完畢,使數組更新;(5)把處理完的一個I宏塊的所有像素值寫入到片外的幀存中的對應位置。采用本發(fā)明方法,既能節(jié)約芯片內部的存儲空間,又能優(yōu)化與片外的數據交互。
文檔編號H04N7/32GK101193305SQ200610123658
公開日2008年6月4日 申請日期2006年11月21日 優(yōu)先權日2006年11月21日
發(fā)明者婷 張 申請人:安凱(廣州)軟件技術有限公司