專利名稱:基于avs運動補償的運動矢量計算裝置的硬件實現方法
技術領域:
本發明涉及數字視頻編解碼技術領域,具體是一種基于AVS運動補償的運動矢量計算裝置的硬件實現方法。
背景技術:
數字音視頻編解碼技術標準工作組(AVS工作組)由國家信息產業部科學技術司于2002年6月批準成立。工作組的任務是面向我國的信息產業需求,聯合國內企業和科研機構,制(修)訂數字音視頻的壓縮、解壓縮、處理和表示等共性技術標準,為數字音視頻設備與系統提供高效經濟的編解碼技術,服務于高分辨率數字廣播、高密度激光數字存儲媒體、無線寬帶多媒體通訊、互聯網寬帶流媒體等重大信息產業應用。
由該工作組制定的AVS音視頻編解碼技術標準的視頻部分于2006年2月22日被頒布為中華人民共和國國家標準,標準號GB/T 20090.2-2006,于2006年3月1日起實施。
運動補償作為運動估計的逆運算,是AVS解碼算法最重要的組成部分之一。運動估計和運動補償旨在消除視頻數據幀與幀之間的時間冗余,從而達到視頻數據壓縮的目的。
為了達到高標準的視頻壓縮質量,AVS音視頻編解碼技術標準共有16×16,16×8,8×16和8×8四種宏塊劃分方式,對每一個劃分后的子塊分配一組運動矢量,每組運動矢量根據其時間相鄰塊或空間相鄰塊的運動矢量計算得到,具體細節可參考AVS標準的文檔和參考軟件。
運動矢量的計算是一個計算量相對較大的模塊,采用多種宏塊劃分的目的在于提高圖像的壓縮率,但是宏塊劃分的不統一,給硬件在讀取相鄰參考塊以及運動矢量存儲上都帶來了控制復雜,存儲器利用率低等問題。
經對現有技術文獻的檢索,發現王占輝等人在電子器件,2005(9)所發表的“MPEG-4運動補償處理器的VLSI結構設計”中提到一種用于MPEG-4運動矢量計算的方法,該方法將16×16宏塊和8×8塊均統一為8×8塊進行計算,如果只有宏塊的運動向量就將該宏塊的四個子塊的運動向量都等于該宏塊的運動向量,但是,對于如AVS等宏塊劃分比較復雜的編碼方式,解碼器還需要一個合理的控制機制來調度各個子塊的計算和結果存儲。
發明內容
本發明為了解決上述問題,提供一種基于AVS運動補償的運動矢量計算裝置的硬件實現方法。本發明主要面向高清晰度視頻解碼專用芯片的設計,在對計算單元和存儲單元進行合理劃分的基礎上,將各種劃分類型的宏塊都統一到8×8塊進行計算和存儲,于是可在不擴大硬件資源使用量的情況下大規模提高了計算速度。使用該方法實現運動向量計算裝置,可在確保視頻實時播放的前提下,有效的降低系統時鐘頻率。
本發明是通過以下的技術方案實現的,包括以下步驟(1)預解碼依據當前解碼宏快所在的幀類型以及宏塊類型編號,給出每個宏塊的劃分方式。
(2)頂層計數將一個宏塊劃分為4個8×8的子塊,并對這4個子塊按照左上、右上、左下、右下得順序從0到3進行編號,依據當前宏塊的劃分方式,采用計數模塊對當前解碼的8×8子塊進行計數,具體的計數方法為a)當前宏塊為16×16劃分時,計數值始終為0;b)當前宏塊為16×8劃分時,若當前計數值為0,則下一個計數值為2,若當前計數值為2,則下一個計數值為0;c)當前宏塊為8×16劃分時,若當前計數值為0,則下一個計數值為1,若當前計數值為1,則下一個計數值為0;d)當前宏塊為8×8劃分時,若當前計數值為0、1或2,則下一個計數值為當前計數值加1,若當前計數值為3,則下一個計數值為0。
(3)計算運動矢量根據當前解碼的8×8子塊的計數值以及當前解碼宏塊的宏塊號,到運動矢量存儲器中讀取空間相鄰8×8子塊和時間相鄰8×8子塊的運動失量參考值,用該參考值計算當前8×8子塊的運動矢量,具體計算方法參照《信息技術先進音視頻編碼第二部分視頻》。
(4)存儲計算結果根據當前解碼的8×8子塊的計數值,當前解碼宏塊的宏塊號以及當前宏塊的宏塊劃分方式,采用結果存儲模塊將運動矢量的計算結果寫到運動矢量存儲器的相應位置,具體存儲方式為a)宏塊劃分為16×16時,將計算結果同時寫回到0、1、2、3四個8×8子塊對應的位置上;b)宏塊劃分為16×8時,若計數器當前計數值為0,則將結果同時寫回到0、1兩個子塊對應的位置上,若計數器當前計數值為2,則將結果同時寫回到2、3兩個子塊對應的位置上;c)宏塊劃分為8×16時,若計數器當前計數值為0,則將結果同時寫回到0、2兩個子塊對應的位置上,若計數器當前計數值為1,則將結果同時寫回到1、3兩個子塊對應的位置上;d)宏塊劃分為8×8時,將結果寫回到與當前計數值相對應的8×8子塊的位置上。
本發明上述方法主要面向AVS高清晰度視頻解碼,但又不局限于解碼AVS高清晰度視頻。通過改變步驟其中對最小解碼單位以及宏塊中對最小解碼單位的編號,可以使該實現方法適用于其它宏塊劃分方式的視頻解碼器,并同時保證硬件資源的合理分配。
特別的,本發明與前文中所提到的王占輝等人提出的方法相比,對多種宏塊劃分情況下,各個子塊的計算和存儲的次序進行詳細規劃,具有很強的擴展性。
由上可知,本發明所述的一種基于AVS運動補償的運動矢量計算裝置的VLSI實現方法,通過對計算單元和存儲單元進行合理劃分,采用8×8塊級流水線結構,將各種劃分類型的宏塊均統一到8×8子塊進行計算和存儲。使用該方法實現運動向量計算裝置,可在確保視頻實時播放的前提下,有效的降低了系統時鐘頻率。
圖1是本發明實施例使用的運動矢量計算裝置的總體結構;圖2是AVS宏塊劃分的4種類型;圖3是每個宏塊中4個8×8子塊的標記方式;圖4是四種宏塊劃分方式下當前解碼宏塊的空間相鄰子塊;其中E是當前解碼的8×8子塊,A、B、C、D是當前解碼子塊的空間相鄰子塊。
圖5是當前解碼宏塊的時間相鄰子塊;其中E是當前解碼的8×8子塊,E是當前解碼字塊的時間相鄰子塊,即顯示順序的后一幀上與當前解碼子塊相對應的塊。
具體實施例方式
結合本發明技術方案以及附圖提供以下實施例實施例1,本實施例使用的運動矢量計算裝置的總體結構,如圖1所示,共包括頂層計數模塊、預解碼模塊、運動矢量計算模塊、計算結果存儲模塊四個功能模塊以及一個分別于運動矢量計算模塊和計算結果存儲模塊相連的運動矢量存儲器。具體說明如下預解碼模塊依據外部輸入的當前解碼宏塊所在的幀類型以及宏塊類型編號,得出當前宏塊的劃分類型,劃分類型如附圖2所示,用兩個比特來表示,輸出給頂層計數控制模塊和計算結果存儲模塊。
頂層計數模塊完成計數控制功能,該模塊接收到外部的mv計算起始信號后開始計數,每收到一個計算結果存儲模塊發出的子塊mv完成信號后,依據宏塊劃分方式對計數器賦新的計數值,具體計數規則為當前宏塊為16×16劃分時,接收到8×8子塊完成信號后,計數值清0;當前宏塊為16×8劃分時,若當前計數值為0,收到8×8子塊完成信號后,計數值增加到2,若當前計數值為2,收到8×8子塊完成信號后,計數值清0;當前宏塊為8×16劃分時,若當前計數值為0,收到8×8子塊完成信號后,計數值增加到1,若當前計數值為1,收到8×8子塊完成信號后,計數值清0;當前宏塊為8×8劃分時,若當前計數值為0、1或2,收到8×8子塊完成信號后,計數值加1,若當前計數值為3,收到8×8子塊完成信號后,計數值清0。其中各個8×8子塊的序號標記方式如附圖3所示。
運動矢量計算模塊該模塊完成運動矢量的計算,根據計數控制模塊輸出的計數值以及外部輸入的運動矢量參數信息,從運動矢量存儲器中讀取如附圖4的空間相鄰8×8子塊和如附圖5的時間相鄰8×8子塊的運動失量參考值,用該參考值計算當前8×8子塊的運動矢量。
計算結果存儲模塊該模塊將計算結果輸出并寫到運動矢量存儲器中,然后返回8×8子塊完成信號給頂層計數控制模塊,存儲方法為依賴于預解碼模塊輸出的宏塊劃分方式,具體存儲方法為宏塊劃分為16×16時,將計算結果同時寫回到0、1、2、3四個8x8子塊對應的位置上;宏塊劃分為16×8時,若計數器當前計數值為0,則將結果同時寫回到0、1兩個子塊對應的位置上,若計數器當前計數值為2,則將結果同時寫回到2、3兩個子塊對應的位置上;宏塊劃分為8x16時,若計數器當前計數值為0,則將結果同時寫回到0、2兩個子塊對應的位置上,若計數器當前計數值為1,則將結果同時寫回到1、3兩個子塊對應的位置上;宏塊劃分為8×8時,將結果寫回到與當前計數值相對應的8×8子塊的位置上。
如上所述的一種AVS運動矢量計算裝置的VLSI實現,解碼一個P幀宏塊最少需要15個時鐘周期(I8×8類型宏塊),最多需要63個時鐘周期(P8×8類型宏塊),解碼一個B幀宏塊最少需要15個時鐘周期(I8×8類型宏塊),最多需要127個時鐘周期(B8×8類型宏塊)。在不擴大硬件資源使用量的情況下大規模提高了計算速度,達到了實時解碼的要求。
權利要求
1.一種基于AVS運動補償的運動矢量計算裝置的VLSI實現方法,其特征在于,包括以下步驟(1)預解碼依據當前解碼宏快所在的幀類型以及宏塊類型編號,給出每個宏塊的劃分方式;(2)頂層計數將一個宏塊劃分為4個8x8的子塊,并對這4個子塊按照左上、右上、左下、右下得順序從0到3進行編號,依據當前宏塊的劃分方式,采用計數模塊對當前解碼的8x8子塊進行計數;(3)計算運動矢量根據當前解碼的8x8子塊的計數值以及當前解碼宏塊的宏塊號,到運動矢量存儲器中讀取空間相鄰8x8子塊和時間相鄰8x8子塊的運動失量參考值,用該參考值計算當前8x8子塊的運動矢量;(4)存儲計算結果根據當前解碼的8x8子塊的計數值,當前解碼宏塊的宏塊號以及當前宏塊的宏塊劃分方式,采用結果存儲模塊將運動矢量的計算結果寫到運動矢量存儲器的相應位置。
2.根據權利要求1所述的基于AVS運動補償的運動矢量計算裝置的VLSI實現方法,其特征是,所述的依據當前宏塊的劃分方式,采用計數模塊對當前解碼的8x8子塊進行計數,具體的計數方法為a)當前宏塊為16x16劃分時,計數值始終為0;b)當前宏塊為16x8劃分時,若當前計數值為0,則下一個計數值為2,若當前計數值為2,則下一個計數值為0;c)當前宏塊為8x16劃分時,若當前計數值為0,則下一個計數值為1,若當前計數值為1,則下一個計數值為0;d)當前宏塊為8x8劃分時,若當前計數值為0、1或2,則下一個計數值為當前計數值加1,若當前計數值為3,則下一個計數值為0。
3.根據權利要求1所述的基于AVS運動補償的運動矢量計算裝置的VLSI實現方法,其特征是,所述的存儲計算結果,具體存儲方式為a)宏塊劃分為16x16時,將計算結果同時寫回到0、1、2、3四個8x8子塊對應的位置上;b)宏塊劃分為16x8時,若計數器當前計數值為0,則將結果同時寫回到0、1兩個子塊對應的位置上,若計數器當前計數值為2,則將結果同時寫回到2、3兩個子塊對應的位置上;c)宏塊劃分為8x16時,若計數器當前計數值為0,則將結果同時寫回到0、2兩個子塊對應的位置上,若計數器當前計數值為1,則將結果同時寫回到1、3兩個子塊對應的位置上;d)宏塊劃分為8x8時,將結果寫回到與當前計數值相對應的8x8子塊的位置上。
全文摘要
一種基于AVS運動補償的運動矢量計算裝置的硬件實現方法,屬于數字視頻編解碼技術領域。方法為預解碼;頂層計數將一個宏塊劃分為4個8×8的子塊,并對這4個子塊進行編號,依據當前宏塊的劃分方式,采用計數模塊對當前解碼的8×8子塊進行計數;計算運動矢量;存儲計算結果根據當前解碼的8×8子塊的計數值,當前解碼宏塊的宏塊號以及當前宏塊的宏塊劃分方式,采用結果存儲模塊將運動矢量的計算結果寫到運動矢量存儲器的相應位置。本發明將各種劃分類型的宏塊都統一到8×8塊進行計算和存儲,在不擴大硬件資源使用量的情況下大規模提高了計算速度,實現運動向量計算裝置,可在確保視頻實時播放的前提下,有效的降低了系統時鐘頻率。
文檔編號H04N7/50GK1874518SQ200610027980
公開日2006年12月6日 申請日期2006年6月22日 優先權日2006年6月22日
發明者邵楠, 劉佩林 申請人:上海交通大學