專利名稱:一種基于avs編碼器的搜索窗緩沖裝置的制作方法
技術領域:
本發明涉及數字視頻編解碼技術領域,更具體地,涉及一種基于AVS編碼器的搜索窗緩沖裝置。
背景技術:
由于市場的不斷需要,基于不同標準的各類視頻編解碼芯片得到了廣泛使用和飛速發展。AVS是我國具備自主知識產權的第二代信源編碼標準。顧名思義,“信源”是信息的 “源頭”,信源編碼技術解決的重點問題是數字音視頻海量數據(即初始數據、信源)的編碼壓縮問題,也稱數字音視頻編解碼技術,它是其后數字信息傳輸、存儲、播放等環節的前提, 因此是數字音視頻產業的共性基礎標準。傳統的基于宏塊的運動補償技術可以有效降低時間冗余,但為了獲取更高的編碼效率,AVS標準進行了很多方面的改進。其中,AVS標準針對運動補償引入的新特性包括 變塊尺寸、運動矢量預測、多參考幀、直接和對稱預測模式、無限制運動矢量、1/4像素插值。 這些新特性增加了計算量和存儲帶寬,從而增加了商用解碼器的成本。對于運動補償,其中具體的運動處理有兩個過程,第一個過程是對運動物體的位移做出估計,即對運動物體從上一幀到當前幀位移的方向和像素數進行估計,求出運動矢量,該過程就叫做運動估計;第二個過程是按照運動矢量,將上一幀位移,求出對當前幀的估計,該過程稱為運動補償。運動估計用于在使用幀間編碼方式時通過參考圖像產生對被壓縮圖像的估計。運動估計的準確程度對幀間編碼的壓縮效果非常重要,如果估計做得好,那么被壓縮圖像與估計圖像相減后只留下很小的值用來傳輸。運動補償預測用于去掉圖像信號的時間冗余信息,圖像信號結構上的冗余度表現為很強的空間(幀內的)和時間(幀間的)相關性。統計測量證實了圖像信號在相鄰像素間、相鄰行間、相鄰幀間存在強的相關性。一般情況下,圖像中的大部分區域信號變化緩慢, 尤其是背景部分幾乎不變,如電影膠帶,連續幾十張畫面變化甚小。AVS把圖像序列分成一個個的圖像組,每個圖像組中包括I幀、P幀和B幀3種類型的圖像幀,對于不同的圖像幀采用不同的編碼方法。在AVS標準中獲得運動補償的塊結構大小不再局限于宏塊的基礎,可以從宏塊的分塊或子分塊中獲取運動矢量。每個宏塊可以分解為1個16X16塊、2個8X16 塊、2個16X8塊或4個8X8塊,并擁有與塊相對應的運動矢量。在AVS-P2解碼器中,運動補償的訪存量達到50%,亞像素的處理時間達到 25%。運動補償成為AVS編解碼器中數據量最密集的部分,對于HDTV1080p,圖像大小為 1920X 1080,基于CPU的軟件應用程序,無法達到高清實時解碼的數據要求。綜上所述,在AVS高清編碼器中參考像素和當前幀像素的數據量非常巨大,通常放在外存外部存儲器中存儲。而運動估計和運動補償的訪存量尤其的驚人,使得整個編碼器系統存在運行的瓶頸制約。因此,如何提高帶寬利用率,降低訪存量成為設計編碼器的關鍵。
發明內容
為克服現有AVS編碼其中訪存量大且使用外置存儲所產生的系統性能受限的缺陷,本發明提出一種基于AVS編碼器的搜索窗緩沖裝置。根據本發明的一個方面,提供一種基于AVS編碼器的搜索窗緩沖裝置,包括系統控制模塊、搜索窗更新模塊、搜索窗讀取模塊和搜索窗存儲模塊;其中,所述系統控制模塊用于在每一幀的開始處更新系統信息并將這些系統信息傳遞給搜索窗更新模塊,向搜索窗更新模塊提供宏塊級的控制;所述搜索窗更新模塊用于根據系統控制模塊提供的系統信息向外部存儲器發送讀取請求,并將外部存儲器返回的數據依次存入搜索窗存儲模塊;所述搜索窗存儲模塊用于本地保存讀入的數據;所述搜索窗讀取模塊用于響應客戶端的請求,從搜索窗存儲模塊讀取相應的數據,返回給客戶端。通過本發明,可以極大的提高帶寬利用率,降低運動估計和運動補償的訪存量,提高運動估計和運動補償的訪存效率和AVS編碼器的整體性能。
圖1是AVS編碼器的搜索窗緩沖裝置的結構框圖;圖2是AVS編碼器的搜索窗緩沖裝置的窗口結構示意圖;圖3是AVS編碼器的搜索窗緩沖裝置的更新狀態示意圖;圖4是搜索窗緩沖裝置的本地存儲空間結構示意圖。
具體實施例方式下面結合附圖和具體實施例對本發明提供的一種基于AVS編碼器的搜索窗緩沖裝置進行詳細描述。在AVS編碼器中,運動估計和運動補償的請求數據量大且頻繁進行,部分參考數據會重復讀取,嚴重制約外存訪問帶寬利用率的提高,本發明提供一種緩沖裝置,客戶端只需向緩沖裝置請求相應的數據,緩沖裝置統籌全部的數據請求,由緩沖裝置統一訪問外存外部存儲器,自動完成數據更新,將其存儲在本地存儲空間中,整合用于更高效的訪問。如圖1所示,本發明提出了一種基于AVS編碼器的搜索窗緩沖裝置(以下簡稱搜索窗緩沖裝置),包括系統控制模塊、搜索窗更新模塊、搜索窗讀取模塊和搜索窗存儲模塊。總的來說,系統控制模塊用于整個搜索窗緩沖裝置的控制,包括三部分功能第一,用于為裝置提供幀級的控制,決定針對每一幀在何時開始處理以及何時結束處理,使得在每一個不同的幀都能及時獲得相關的更新的系統信息,保證從外部存儲器中讀取正確的參考幀數據;第二,用于提供宏塊級的控制,在新的宏塊位置上移動搜索窗口、記錄當前搜索窗口的位置以及更新宏塊的位置信息;第三,用于控制從外部存儲器中讀取參考幀的數據來更新本地存儲空間中的數據。搜索窗更新模塊用于在每一幀開始時對搜索窗緩沖裝置進行初始化,并且用于更新當前宏塊行參考數據和下一宏塊行參考數據。在AVS高清編碼器中共有三個模塊需要搜索窗緩沖裝置,它們分別為IME(整像素運動估計)緩存器、FME(亞像素運動估計)緩存器以及MC (運動補償)緩存器。搜索窗存儲模塊用作搜索窗緩沖裝置的存儲空間,本地保存緩存數據,每一個搜索窗緩沖裝置包含4個存儲部分,前后向各兩個。搜索窗讀取模塊用于響應各個客戶端發起的請求,根據客戶端提供的讀取信息, 產生相應的地址,從搜索窗存儲模塊的本地存儲空間讀取相應的數據,返回給客戶端。搜索窗緩沖裝置的請求機制主要分三步第一,判斷當前窗口是否有效,在每個宏塊周期開始的時候,要先判斷搜索窗口是否可用,如果可用,可以發起讀請求,否則要等到搜索窗緩沖裝置控制移動搜索窗口,使搜索窗有效之后才可以在本宏塊周期之內發起讀請求;第二,發起當前窗口的讀請求,遵循搜索窗緩沖裝置請求時序;第三,在當前窗口請求搜索窗緩沖裝置全部結束之后,通知搜索窗緩沖裝置已經結束,由此搜索窗緩沖裝置來移動當前的窗口到適當的位置,以供下一個宏塊讀取。更具體地,繼續參考圖1,系統控制模塊首先為整個搜索窗緩沖裝置提供幀級的控制,在每一幀的開始處會更新圖像寬度、圖像高度、圖像類型、圖像結構或者參考幀基地址等系統信息并將這些信息傳遞給搜索窗更新模塊,以保證模塊及時獲得相關的更新的系統信息,并從外部存儲器讀取正確的參考幀數據;其次是向搜索窗更新模塊提供宏塊級的控制,在新的宏塊位置上記錄其搜索窗口的位置(窗口位置用來表示)以及更新宏塊的位置信息(宏塊的位置用mb_x*mb_y來表示);第三,間接通過搜索窗更新模塊從外部存儲器中讀取參考幀的數據,實時更新本地存儲空間中的數據。搜索窗更新模塊用于根據系統控制模塊提供的系統信息適時的向外部存儲器發讀取請求,并將外部存儲器返回的數據依次存入本地的存儲空間中即搜索窗存儲模塊。需要更新的數據有三種類型第一種為在每一幀開始時對搜索窗緩沖裝置進行初始化填滿當前搜索窗的所有位置的數據,第二種為對當前宏塊行參考數據的更新的數據,第三種為對下一宏塊行參考數據的更新數據。圖2示出搜索窗緩沖裝置的搜索窗,當前搜索窗的大小為[士 128,士256],每一個搜索窗緩沖裝置包含的存儲大小為2(兩倍)X2(前后向)X 056+16)(搜索窗寬度)X 128(搜索窗高度)。在搜索窗緩沖裝置的存儲空間中還會多留出一部分空間,作為預取之用。斜線和方格線部分區域是第一次初始化的區域,其中的斜線部分是當前的搜索窗口,該窗口對應一宏塊大小(16X16像素)的原圖像所用的搜索參考像素數據;方格線部分留作下一個窗口移動之用,而交叉斜線部分是正在更新的區域,空白部分是將要更新的區域。每一個搜索窗緩沖裝置包含兩套搜索窗,每套大小都是2 (前后向)X (256+16)(搜索窗寬度)X 128 (搜索窗高度)。兩套搜索窗乒乓操作,當其中一套搜索窗緩存當前宏塊行的參考圖像數據時,另一套初始化下一宏塊行的最左邊的參考圖像,為了減少初始化對外部存儲器帶寬的沖擊,將初始化的數據分塊讀入,并分散到各個時間段完成。如當前搜索窗每移動一次,另一搜索窗將讀入32(byte)*16的數據,初始化下一宏塊行參考圖像。圖3示出搜索窗緩沖裝置的工作狀態,斜線區域表示正在被當前宏塊所使用,交叉斜線區域表示目前正在讀取中,方格區域表示已經讀取,白色區域表示將來可以刷新的。搜索窗緩沖裝置當前宏塊行(包括初始化)每次向外部存儲器發起的讀請求都是 32(byte)*64的大小,即每次交叉斜線區域更新的大小。讀取如此大小的區域需要6牡2 = 1 個周期。下一宏塊行每次向外部存儲器發起的請求的大小是32 (byte) *16,是當前行數據量的1/4。讀取如此大小的區域需要16 = 32個周期。具體更新流程如下
1)初始化讀取(160+32)個像素。在一幀的開始處,所需的窗口并不在搜索窗緩沖裝置中,此時就需要進行初始化操作,此時的搜索窗緩沖裝置中的數據尚未準備好,是不允許被讀數的。對于后向參考幀,要初始化的大小是(160+32) *128,也就是搜索窗緩沖裝置要向外部存儲器發起12次上面交叉斜線部分那樣的請求。對于前向參考幀,要初始化的大小也是(160+32) *128,也需要向外部存儲器發起 12次上面交叉斜線部分那樣的請求。2). MB0y處理(斜線區域),同時讀取交叉斜線區域的像素;3). MBly處理(斜線區域),同時讀取交叉斜線區域的像素;4). MB2y處理(斜線區域),同時讀取交叉斜線區域的像素;5). MB3y處理(斜線區域),同時讀取交叉斜線區域的像素;初始化結束,當正在處理斜線的搜索窗部分的時候,同時將交叉斜線部分的像素從外部存儲器中讀取出來,也就是發起一次外部存儲器請求。然而需要更新的有當前宏塊行的前向參考幀和后向參考幀,請求的大小是32*64,以及下一宏塊行的前向參考幀和后向參考幀,請求的大小是32*16。前向參考幀和后向參考幀擁有自己的mb_x*mb_y。共發起 4次讀外部存儲器的請求,4次請求共需要128*2+32拉=320個時鐘周期才能完成,一個宏塊周期是800個時鐘周期,那么4次連續的請求需要320個時鐘周期,在一個宏塊周期即 800個時鐘周期之內可以完成這4次讀請求。搜索窗讀取模塊響應各個客戶端發起的請求,根據客戶端提供的讀取信息,產生相應的地址,從本地存儲空間中讀取相應的數據,返回給客戶端。搜索窗緩沖裝置的請求機制主要分三步1)判斷當前窗口是否有效在每個宏塊周期開始的時候,先判斷搜索窗口是否可用,如果可用,可以發起讀請求,否則,要等到搜索窗緩沖裝置控制移動搜索窗口,使搜索窗有效之后,在本宏塊周期之內發起讀請求。判斷當前窗口是否有效,每個宏塊周期只需要執行一次。2)發起當前窗口的讀請求當已經判斷當前窗口已經有效之后,可向搜索窗緩沖裝置發起讀請求,每個搜索窗緩沖裝置都有前后向兩套的請求。3)在當前窗口請求搜索窗緩沖裝置全部結束后,通知搜索窗緩沖裝置已經結束, 使用一套結束信號來移動當前的窗口到適當的位置,以供下一個宏塊讀取。讀取時地址邏輯由搜索窗緩沖裝置內部根據請求端提供的χ和y來產生。對于請求端,此部分是完全封閉不可見的。要從搜索窗緩沖裝置中讀出正確的參考數據,需要正確的地址產生邏輯,來生成正確的訪存地址。此處讀搜索窗緩沖裝置的地址產生邏輯和搜索窗緩沖裝置更新時寫入存儲空間的地址產生類似,但其把地址分成基地址和偏移地址兩部分。基地址的求法是=Bwdaddr = (Rin_x+x) % 20,基地址的作用是找到適當的窗口位置。Bwdaddr是基地址,Rin_x是當前窗口相對ram的位置,因為存儲空間的最大深度是20, 如果超過20,那么將拉回到ram的最初位置存放。偏移地址的求法是0wdaddr = y,Owdaddr是偏移地址,偏移地址的作用是對于一個窗口深度內的地址偏移。最后將基地址和偏移地址拼接,得到ram的存儲地址addr = {Bwdaddr, Owdaddr},addr ^ ram ^gMiikJat0搜索窗存儲模塊是搜索窗緩沖裝置的存儲空間,當搜索窗更新模塊向外部存儲器發讀取請求,外部存儲器將返回的數據依次存入本模塊。如圖4所示。每一個搜索窗緩沖裝置包含4個存儲部分。前后向各兩個,每一部分的寬度為1 位,也就是16個像素,需要 4個存儲單元來構成,其深度設計成2560。因此每一個存儲部分需要由20個存儲單元所組成。這樣,一個搜索窗緩沖裝置就需要80個存儲單元,根據搜索窗的大小要求每一部分至少由5段組成,每一部分就需要20個存儲單元。當正在訪問斜線部分的搜索窗時,同時要更新交叉斜線的預讀部分,當搜索窗向右移動的過程中,如果緊靠它右側的預讀部分尚沒有讀完,此時的搜索窗就不能再往右移動,直到右側的預讀部分讀取完畢。當搜索窗移動到右邊界的時候,會折返到最左邊。當然也會出現這樣一種情況,就是搜索窗在最右邊一部分,同時最左邊也會有一部分,此時就要注意對地址越界的處理,把它正確的映射到正確的區域。當前行處理完畢之后,會切換到下一行,存在一個存儲單元之間切換的問題,當然不能把其中的像素進行切換,只需切換相關標志就可以了。最后應說明的是,以上實施例僅用以描述本發明的技術方案而不是對本技術方法進行限制,本發明在應用上可以延伸為其他的修改、變化、應用和實施例,并且因此認為所有這樣的修改、變化、應用、實施例都在本發明的精神和教導范圍內。
權利要求
1.一種基于AVS編碼器的搜索窗緩沖裝置,包括系統控制模塊、搜索窗更新模塊、搜索窗讀取模塊和搜索窗存儲模塊;其中,所述系統控制模塊用于在每一幀的開始處更新系統信息并將這些系統信息傳遞給搜索窗更新模塊,向搜索窗更新模塊提供宏塊級的控制;所述搜索窗更新模塊用于根據系統控制模塊提供的系統信息向外部存儲器發送讀取請求,并將外部存儲器返回的數據依次存入搜索窗存儲模塊;所述搜索窗存儲模塊用于本地保存讀入的數據;所述搜索窗讀取模塊用于響應客戶端的請求,從搜索窗存儲模塊讀取相應的數據,返回給客戶端。
2.權利要求1的搜索窗緩沖裝置,其中,所述搜索窗更新模塊用于在每一幀開始時更新當前宏塊行參考數據和下一宏塊行參考數據。
3.權利要求1的搜索窗緩沖裝置,其中,所述搜索窗更新模塊更新的數據包括每一幀開始時填滿當前搜索窗的數據、用于當前宏塊行參考數據的更新數據和用于下一宏塊行參考數據的更新數據。
4.權利要求1的搜索窗緩沖裝置,其中,所述搜索窗更新模塊包括乒乓操作的兩套搜索窗,其中一套搜索窗緩存當前宏塊行的參考圖像數據時,而另一套初始化下一宏塊行最左邊的參考圖像。
5.權利要求1的搜索窗緩沖裝置,其中,所述搜索窗更新模塊正訪問當前更新部分的搜索窗時,同步更新預讀部分,當搜索窗向右移動過程中移動到右邊界時折返到最左邊。
6.權利要求1的搜索窗緩沖裝置,其中,所述系統信息包括圖像寬度、圖像高度、圖像類型、圖像結構或者參考幀基地址。
7.權利要求1的搜索窗緩沖裝置,其中,所述系統控制模塊在控制所述搜索窗更新模塊時在新的宏塊位置上記錄其搜索窗口的位置和更新宏塊的位置信息。
8.權利要求1的搜索窗緩沖裝置,其中,所述搜索窗讀取模塊用于響應客戶端的請求, 根據客戶端提供的讀取信息,產生相應的地址,從搜索窗存儲模塊讀取相應的數據。
9.權利要求1的搜索窗緩沖裝置,其中,所述搜索窗讀取模塊在每個宏塊周期開始的時候判斷搜索窗口可用后發起當前窗口的讀請求,根據請求時序讀取數據,并在當前窗口請求結束之后移動當前的窗口到適當的位置,以供下一個宏塊讀取。
10.權利要求1的搜索窗緩沖裝置,其中,所述搜索窗存儲模塊包括4個存儲部分,前后向各兩個,每一部分的寬度為1 位,深度為2560。
全文摘要
本發明提供一種基于AVS編碼器的搜索窗緩沖裝置,系統控制模塊用于在每一幀的開始處更新系統信息并將這些系統信息傳遞給搜索窗更新模塊,向搜索窗更新模塊提供宏塊級的控制;搜索窗更新模塊用于根據系統控制模塊提供的系統信息向外部存儲器發送讀取請求,并將外部存儲器返回的數據依次存入搜索窗存儲模塊;搜索窗存儲模塊用于本地保存讀入的數據;搜索窗讀取模塊用于響應客戶端的請求,從搜索窗存儲模塊讀取相應的數據,返回給客戶端。本發明可以極大的提高帶寬利用率,降低運動估計和運動補償的訪存量,提高運動估計和運動補償的訪存效率和AVS編碼器的整體性能。
文檔編號H04N7/26GK102377999SQ201010253659
公開日2012年3月14日 申請日期2010年8月13日 優先權日2010年8月13日
發明者呼大明, 宋益波, 王佳薇, 鄧磊, 鄭海鷗 申請人:聯合信源數字音視頻技術(北京)有限公司