專(zhuān)利名稱(chēng):用于avs視頻解碼器的高效流水線(xiàn)系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種數(shù)字視頻編解碼技術(shù)領(lǐng)域的方法,具體是一種用于AVS視頻解碼器的高效流水線(xiàn)系統(tǒng)。
背景技術(shù):
數(shù)字音視頻編解碼技術(shù)標(biāo)準(zhǔn)工作組(AVS工作組)制定的AVS音視頻編解碼技術(shù)標(biāo)準(zhǔn)的視頻部分于2006年2月22日被頒布為中華人民共和國(guó)國(guó)家標(biāo)準(zhǔn),標(biāo)準(zhǔn)號(hào)GB/T 20090.2-2006,于2006年3月1日起實(shí)施。
視頻解碼系統(tǒng)需要處理的數(shù)據(jù)量非常大,其巨大的計(jì)算量給系統(tǒng)的VLSI實(shí)現(xiàn)帶來(lái)了挑戰(zhàn)。在一定的頻率要求下,如何保證視頻解碼的實(shí)時(shí)性,成為了設(shè)計(jì)過(guò)程中一個(gè)值得關(guān)注的問(wèn)題。
流水線(xiàn)是一種能夠使多個(gè)任務(wù)重疊操作的技術(shù)。在解碼系統(tǒng)中,流水線(xiàn)的應(yīng)用就體現(xiàn)在將整個(gè)系統(tǒng)劃分為相互獨(dú)立的幾個(gè)任務(wù),然后根據(jù)數(shù)據(jù)的依賴(lài)關(guān)系把任務(wù)合理分配到流水線(xiàn)的某一階段,從整體來(lái)看,數(shù)據(jù)等待時(shí)間減少,整體效率大大提高,系統(tǒng)的性能也隨之得到改善。具體來(lái)講,合理劃分處理模塊和流水線(xiàn)層次,是AVS視頻解碼器流水線(xiàn)結(jié)構(gòu)設(shè)計(jì)中的關(guān)鍵。合理的設(shè)計(jì)將有效減少每級(jí)流水線(xiàn)的時(shí)間冗余,達(dá)到高速視頻解碼的目標(biāo)。
AVS視頻解碼器主要的數(shù)據(jù)處理模塊包括變長(zhǎng)碼解碼模塊、反量化/反變換模塊、幀內(nèi)預(yù)測(cè)模塊、幀間預(yù)測(cè)模塊、去塊效應(yīng)濾波模塊,其中部分模塊間存在數(shù)據(jù)相關(guān)問(wèn)題,而且各模塊處理時(shí)間并不一致。合理劃分處理模塊和流水線(xiàn)層次,是AVS視頻解碼器流水線(xiàn)設(shè)計(jì)的關(guān)鍵步驟。
經(jīng)對(duì)現(xiàn)有技術(shù)文獻(xiàn)的檢索發(fā)現(xiàn)To-Wei等人在2005.ISCAS 2005.IEEEInternational Symposium on Circuits and Systems(2005年IEEE電路與系統(tǒng)國(guó)際研討會(huì))上所發(fā)表的“Architecture design of H.264/AVC decoder withhybrid task pipelining for high definition videos”中(采用混合流水線(xiàn)的高清晰度H.264/AVC視頻解碼器架構(gòu)設(shè)計(jì))提到一種用于H.264/AVC視頻解碼器的流水線(xiàn)機(jī)制(由于H.264/AVC和AVS在硬件實(shí)現(xiàn)上具有很強(qiáng)的相似性,故有比對(duì)的價(jià)值),該方法考慮到每個(gè)模塊處理數(shù)據(jù)的粒度不同,采取了分級(jí)流水線(xiàn)的思想,但其缺點(diǎn)在于其宏塊級(jí)流水線(xiàn)僅分為兩級(jí),第一級(jí)包括變長(zhǎng)碼解碼模塊、反量化/反變換模塊、幀內(nèi)預(yù)測(cè)模塊和幀間預(yù)測(cè)模塊,第二級(jí)由去塊效應(yīng)濾波模塊組成。第一級(jí)劃分過(guò)于粗糙,導(dǎo)致存在嚴(yán)重的數(shù)據(jù)等待現(xiàn)象。幀內(nèi)預(yù)測(cè)模塊和幀間預(yù)測(cè)模塊要等變長(zhǎng)碼解碼模塊解好了本宏塊的頭信息才能開(kāi)始進(jìn)行本宏塊的預(yù)測(cè);反量化/反變換模塊要等變長(zhǎng)碼解碼模塊解好了本宏塊的頭信息以及一個(gè)塊的殘差系數(shù)才能對(duì)本宏塊中各塊進(jìn)行反量化和反變換。使用該流水線(xiàn)機(jī)制實(shí)現(xiàn)的視頻解碼器,宏塊級(jí)流水第一級(jí)過(guò)于龐大,存在較大的時(shí)間冗余,制約了整體解碼速度。
發(fā)明內(nèi)容
本發(fā)明的目的在于提供一種用于AVS視頻解碼器的高效流水線(xiàn)系統(tǒng)。本發(fā)明采用混合流水線(xiàn)機(jī)制,根據(jù)各模塊處理數(shù)據(jù)的粒度以及數(shù)據(jù)依賴(lài)關(guān)系,將不同模塊分配到不同的流水線(xiàn)級(jí)別中,并采用適當(dāng)?shù)目刂茩C(jī)制以協(xié)調(diào)各模塊工作。變長(zhǎng)碼解碼模塊在其他模塊工作前已將相應(yīng)的頭信息或殘差系數(shù)準(zhǔn)備好,避免模塊間的數(shù)據(jù)等待現(xiàn)象,減小時(shí)間冗余,在不顯著增大存儲(chǔ)器開(kāi)銷(xiāo)的前提下,達(dá)到了解碼器高速解碼的目的。
本發(fā)明是通過(guò)以下技術(shù)方案實(shí)現(xiàn)的,本發(fā)明包括變長(zhǎng)碼解碼模塊、反量化/反變換模塊、幀內(nèi)預(yù)測(cè)模塊、幀間預(yù)測(cè)模塊、去塊效應(yīng)濾波模塊等重要的數(shù)據(jù)處理模塊,以及用于控制和協(xié)調(diào)流水線(xiàn)操作的控制模塊、重構(gòu)模塊,其中所述變長(zhǎng)碼解碼模塊主要用于解析宏塊頭信息和殘差系數(shù)。宏塊頭信息輸出到反量化/反變換模塊、幀內(nèi)預(yù)測(cè)模塊、幀間預(yù)測(cè)模塊、去塊效應(yīng)濾波模塊;殘差系數(shù)以塊為單位輸出給反量化/反變換模塊。
所述反量化/反變換模塊,以塊為單位對(duì)殘差系數(shù)進(jìn)行反量化和反變換,處理結(jié)果輸出至重構(gòu)模塊。
所述幀內(nèi)預(yù)測(cè)模塊,以塊為單位進(jìn)行幀內(nèi)預(yù)測(cè)處理,其輸入數(shù)據(jù)為上一塊的重構(gòu)值,輸出數(shù)據(jù)至重構(gòu)模塊。
所述幀間預(yù)測(cè)模塊,用于進(jìn)行幀間預(yù)測(cè)處理,其輸入數(shù)據(jù)來(lái)自前一幀或兩幀經(jīng)去塊效應(yīng)濾波后的解碼圖像,輸出幀間預(yù)測(cè)結(jié)果到重構(gòu)模塊。雖然以塊為單位處理數(shù)據(jù),但是由于相鄰塊的參考數(shù)據(jù)具有很強(qiáng)的可重用性,故視為宏塊級(jí)的模塊。
所述去塊效應(yīng)濾波模塊,用于對(duì)重構(gòu)值進(jìn)行去塊效應(yīng)濾波,然后將結(jié)果輸出到外部解碼緩沖區(qū),由于以宏塊為單位處理數(shù)據(jù),故視為宏塊級(jí)模塊。
所述控制模塊,控制變長(zhǎng)碼解碼流程并對(duì)宏塊級(jí)流水線(xiàn)進(jìn)行協(xié)調(diào),輸入來(lái)自變長(zhǎng)碼解碼模塊、反量化/反變換模塊、幀內(nèi)預(yù)測(cè)模塊和幀間預(yù)測(cè)模塊的狀態(tài)信號(hào),輸出相應(yīng)的使能和有效信號(hào)。
所述重構(gòu)模塊主要功能是根據(jù)宏塊類(lèi)型選通幀內(nèi)預(yù)測(cè)模塊或者幀間預(yù)測(cè)模塊的結(jié)果與反量化/反變換模塊的結(jié)果相加得重構(gòu)值,然后輸出給去塊效應(yīng)濾波模塊和幀內(nèi)預(yù)測(cè)模塊。
為保證流水線(xiàn)正常工作,各模塊間存在數(shù)據(jù)緩沖區(qū),用以緩存數(shù)據(jù)。數(shù)據(jù)緩沖區(qū)包括數(shù)據(jù)乒乓RAM和頭信息存儲(chǔ)FIFO兩種,其中,數(shù)據(jù)乒乓RAM主要用于存儲(chǔ)數(shù)據(jù),保證數(shù)據(jù)的流水線(xiàn)式處理,而頭信息存儲(chǔ)FIFO用于存儲(chǔ)宏塊頭信息。本發(fā)明變長(zhǎng)碼解碼模塊和反量化/反變換模塊之間存在以塊為單位的數(shù)據(jù)乒乓RAM;重構(gòu)模塊和反量化/反變換模塊之間存在以塊為單位數(shù)據(jù)乒乓RAM;重構(gòu)模塊和幀間預(yù)測(cè)模塊之間存在以宏塊為單位數(shù)據(jù)乒乓RAM;重構(gòu)模塊和去塊效應(yīng)濾波模塊之間存在以宏塊為單位的數(shù)據(jù)乒乓RAM;變長(zhǎng)碼解碼模塊和去塊效應(yīng)濾波模塊之間存在頭信息存儲(chǔ)FIFO。所述數(shù)據(jù)乒乓RAM通過(guò)設(shè)置兩塊RAM,交替進(jìn)行讀寫(xiě)操作,實(shí)現(xiàn)了數(shù)據(jù)無(wú)縫緩沖與處理。
本發(fā)明針對(duì)各模塊處理數(shù)據(jù)的粒度以及數(shù)據(jù)依賴(lài)關(guān)系,采用三級(jí)宏塊級(jí)流水線(xiàn)和兩級(jí)塊級(jí)流水線(xiàn)。從宏觀上,三級(jí)宏塊級(jí)流水線(xiàn)第一級(jí)由變長(zhǎng)碼解碼模塊組成;第二級(jí)級(jí)由反量化/反變換模塊、幀內(nèi)預(yù)測(cè)模塊和幀間預(yù)測(cè)模塊組成;第三級(jí)由去塊效應(yīng)濾波模塊組成。從微觀上,兩級(jí)塊級(jí)流水線(xiàn)第一級(jí)由變長(zhǎng)碼解碼模塊組成;第二級(jí)由反量化/反變換模塊、幀內(nèi)預(yù)測(cè)模塊組成。
從宏觀上,宏塊級(jí)流水線(xiàn)作為整個(gè)解碼器的核心流水線(xiàn),將主要數(shù)據(jù)處理模塊都囊括在內(nèi)。雖然變長(zhǎng)碼解碼模塊、反量化/反變換模塊、幀內(nèi)預(yù)測(cè)模塊以塊為單位處理數(shù)據(jù),但在處理每個(gè)宏塊內(nèi)各個(gè)塊的數(shù)據(jù)之前,變長(zhǎng)碼解碼模塊需要解析宏塊頭信息,反量化/反變換模塊、幀內(nèi)預(yù)測(cè)模塊需要讀取宏塊頭信息。故從總體控制的角度,變長(zhǎng)碼解碼模塊、反量化/反變換模塊、幀內(nèi)預(yù)測(cè)模塊必然處于宏塊級(jí)流水線(xiàn)中??刂颇K對(duì)宏塊級(jí)流水線(xiàn)的第一級(jí)和第二級(jí)的模塊進(jìn)行協(xié)調(diào)控制;第二級(jí)和第三級(jí)模塊根據(jù)數(shù)據(jù)乒乓RAM的空滿(mǎn)協(xié)調(diào)工作。
從微觀上看,在宏塊內(nèi)部,變長(zhǎng)碼解碼模塊、反量化/反變換模塊、幀內(nèi)預(yù)測(cè)模塊以塊為單位處理數(shù)據(jù),進(jìn)行塊級(jí)流水。各模塊根據(jù)數(shù)據(jù)乒乓RAM的空滿(mǎn)協(xié)調(diào)工作。
在控制模塊和數(shù)據(jù)乒乓RAM的協(xié)調(diào)控制下,本系統(tǒng)通過(guò)宏塊級(jí)流水線(xiàn)和塊級(jí)流水線(xiàn)相互配合,實(shí)現(xiàn)高效運(yùn)轉(zhuǎn)。具體來(lái)講,本發(fā)明中各模塊的工作原理如下控制模塊根據(jù)宏塊類(lèi)型和來(lái)自變長(zhǎng)碼解碼模塊、反量化/反變換模塊、幀內(nèi)預(yù)測(cè)模塊和幀間預(yù)測(cè)模塊的狀態(tài)信號(hào),經(jīng)過(guò)判斷輸出相應(yīng)的使能和有效信號(hào),對(duì)宏塊級(jí)流水進(jìn)行控制。對(duì)于幀內(nèi)預(yù)測(cè)類(lèi)型宏塊,在變長(zhǎng)碼解碼模塊解好宏塊頭信息后,控制模塊將頭信息有效信號(hào)以及幀內(nèi)預(yù)測(cè)使能信號(hào)拉高,直至反量化/反變換模塊和幀內(nèi)預(yù)測(cè)模塊分別反饋了頭信息讀取信號(hào),控制模塊才將上述兩個(gè)信號(hào)拉低,同時(shí)將變長(zhǎng)碼解碼使能信號(hào)拉高;對(duì)于幀間預(yù)測(cè)類(lèi)型宏塊,在變長(zhǎng)碼解碼模塊解好宏塊頭信息后,控制模塊將頭信息有效信號(hào)以及幀間預(yù)測(cè)使能信號(hào)拉高,直至反量化/反變換模塊和幀間預(yù)測(cè)模塊分別反饋了頭信息讀取信號(hào),控制模塊才將上述兩個(gè)信號(hào)拉低,同時(shí)將變長(zhǎng)碼解碼使能信號(hào)拉高。
變長(zhǎng)碼解碼模塊在開(kāi)始解碼一個(gè)新的宏塊前,查詢(xún)控制模塊送出的使能信號(hào),若有效,則開(kāi)始解析宏塊頭信息,否則,繼續(xù)查詢(xún);解完宏塊頭信息后,查詢(xún)與反量化/反變換模塊間的數(shù)據(jù)乒乓RAM的空滿(mǎn),若至少有一塊空,則以塊為單位解碼殘差系數(shù),否則繼續(xù)查詢(xún)。
反量化/反變換模塊在開(kāi)始處理一個(gè)新的宏塊前,查詢(xún)控制模塊送出的頭信息有效信號(hào),若有效,讀走頭信息同時(shí)反饋給控制模塊一個(gè)頭信息讀取信號(hào),否則,繼續(xù)查詢(xún);讀走頭信息后,查詢(xún)與變長(zhǎng)碼解碼模塊和與重構(gòu)模塊間的數(shù)據(jù)乒乓RAM的空滿(mǎn),若前者至少有一塊滿(mǎn)且后者至少有一塊空,則以塊為單位對(duì)殘差系數(shù)進(jìn)行反量化/反變換,否則繼續(xù)查詢(xún)。
幀內(nèi)預(yù)測(cè)模塊在開(kāi)始處理一個(gè)新的宏塊前,查詢(xún)控制模塊送出的頭信息有效信號(hào)和幀內(nèi)預(yù)測(cè)使能信號(hào),若同時(shí)有效,讀走頭信息同時(shí)反饋給控制模塊一個(gè)頭信息讀取信號(hào),否則,繼續(xù)查詢(xún);讀走頭信息后開(kāi)始進(jìn)行宏塊內(nèi)各塊的幀內(nèi)預(yù)測(cè)。
幀間預(yù)測(cè)模塊在開(kāi)始處理一個(gè)新的宏塊前,查詢(xún)控制模塊送出的頭信息有效信號(hào)和幀間預(yù)測(cè)使能信號(hào),若同時(shí)有效,讀走頭信息同時(shí)反饋給控制模塊一個(gè)頭信息讀取信號(hào),否則,繼續(xù)查詢(xún);讀走頭信息后,查詢(xún)與重構(gòu)模塊間的數(shù)據(jù)乒乓RAM的空滿(mǎn),若至少有一塊空,則開(kāi)始計(jì)算運(yùn)動(dòng)矢量,至相應(yīng)位置取參考值進(jìn)行運(yùn)動(dòng)補(bǔ)償;否則繼續(xù)查詢(xún)。
重構(gòu)模塊對(duì)幀內(nèi)預(yù)測(cè)類(lèi)型宏塊,選通幀內(nèi)預(yù)測(cè)的結(jié)果與反量化/反變換后的殘差數(shù)據(jù)相加得到重構(gòu)值;對(duì)幀間預(yù)測(cè)類(lèi)型宏塊,選通幀間預(yù)測(cè)的結(jié)果與反量化/反變換后的殘差數(shù)據(jù)相加得到重構(gòu)值。
去塊效應(yīng)濾波模塊在開(kāi)始處理一個(gè)新的宏塊前,查詢(xún)與重構(gòu)模塊間的數(shù)據(jù)乒乓RAM的空滿(mǎn),若至少有一塊滿(mǎn),則從與變長(zhǎng)碼解碼模塊間的頭信息存儲(chǔ)FIFO內(nèi)讀取對(duì)應(yīng)的宏塊頭信息,開(kāi)始對(duì)本宏塊的重構(gòu)值進(jìn)行去塊效應(yīng)濾波,否則繼續(xù)查詢(xún)。
上述系統(tǒng)主要面向高清晰度視頻解碼,但又不局限于解碼高清晰度視頻,在低分辨率的應(yīng)用中,本發(fā)明所需頻率相應(yīng)減小,能極大得降低系統(tǒng)功耗;上述系統(tǒng)具有很強(qiáng)的適應(yīng)性和靈活性,針對(duì)不同需求可應(yīng)用于軟硬件協(xié)同的AVS視頻解碼器中,也可應(yīng)用于全硬件實(shí)現(xiàn)的AVS視頻解碼器。
本發(fā)明實(shí)現(xiàn)一種用于AVS視頻解碼器的高效流水線(xiàn)系統(tǒng)。本發(fā)明針對(duì)模塊處理數(shù)據(jù)的粒度,采用三級(jí)宏塊級(jí)流水線(xiàn)和兩級(jí)塊級(jí)流水線(xiàn),通過(guò)控制模塊、重構(gòu)模塊、數(shù)據(jù)乒乓RAM和頭信息存儲(chǔ)FIFO的相互配合,保證了兩個(gè)級(jí)別的流水線(xiàn)高效的工作??傮w來(lái)看,變長(zhǎng)碼解碼模塊比反量化/反變換模塊、幀內(nèi)預(yù)測(cè)模塊、幀間預(yù)測(cè)模塊提前處理一個(gè)宏塊、比去塊效應(yīng)濾波模塊提前處理兩個(gè)宏塊。后級(jí)模塊處理新的宏塊時(shí)不必等待該宏塊的頭信息和殘差系數(shù),系統(tǒng)處理每個(gè)宏塊的平均時(shí)間顯著縮短。通過(guò)有效的控制機(jī)制,減少了存儲(chǔ)頭信息的開(kāi)銷(xiāo),在提高系統(tǒng)解碼速度的同時(shí)并未顯著增加硬件資源的占用。
特別地,本發(fā)明與前文中所提到的To-Wei等人提出的方法相比,宏塊級(jí)流水線(xiàn)被進(jìn)一步細(xì)分,變長(zhǎng)碼解碼模塊、反量化/反變換模塊、幀內(nèi)預(yù)測(cè)模塊和幀間預(yù)測(cè)模塊根據(jù)數(shù)據(jù)依賴(lài)關(guān)系被分為兩級(jí)。反量化/反變換模塊、幀內(nèi)預(yù)測(cè)模塊和幀間預(yù)測(cè)模塊在處理完第n-1個(gè)宏塊的數(shù)據(jù)后,變長(zhǎng)碼解碼模塊已解好第n個(gè)宏塊的頭信息和至少一個(gè)塊殘差系數(shù)。反量化/反變換模塊、幀內(nèi)預(yù)測(cè)模塊和幀間預(yù)測(cè)模塊無(wú)需等待頭信息和殘差系數(shù)。各模塊更有效得流水起來(lái),極大縮短了解碼時(shí)間。根據(jù)驗(yàn)證,解一個(gè)宏塊的平均時(shí)間縮短了27%至33%。
綜上所述,本發(fā)明使得解碼速度大大提高,且并無(wú)顯著增加存儲(chǔ)器,因此,在速度和硬件資源方面都具有極大優(yōu)勢(shì)。
圖1是本發(fā)明的系統(tǒng)框圖;圖2本發(fā)明中模塊間數(shù)據(jù)緩沖區(qū)示意圖;圖3是三級(jí)宏塊級(jí)流水線(xiàn)示意圖;圖4是兩級(jí)塊級(jí)流水線(xiàn)示意圖;圖5是To-Wei等人提出的混合流水線(xiàn)示意圖。
具體實(shí)現(xiàn)方式結(jié)合本發(fā)明技術(shù)方案以及附圖提供以下實(shí)施例圖1給出了本發(fā)明的系統(tǒng)框圖。本發(fā)明包括變長(zhǎng)碼解碼模塊、反量化/反變換模塊、幀內(nèi)預(yù)測(cè)模塊、幀間預(yù)測(cè)模塊、去塊效應(yīng)濾波模塊等重要的數(shù)據(jù)處理模塊,以及用于控制和協(xié)調(diào)流水線(xiàn)操作的控制模塊和重構(gòu)模塊。
變長(zhǎng)碼解碼模塊輸出宏塊頭信息到反量化/反變換模塊、幀內(nèi)預(yù)測(cè)模塊、幀間預(yù)測(cè)模塊、去塊效應(yīng)濾波模塊;以塊為單位將殘差系數(shù)輸出給反量化/反變換模塊。反量化/反變換模塊將反變換后的數(shù)據(jù)以塊為單位輸出至重構(gòu)模塊。幀內(nèi)預(yù)測(cè)模塊輸入上一塊重構(gòu)值,輸出幀內(nèi)預(yù)測(cè)的結(jié)果至重構(gòu)模塊。幀間預(yù)測(cè)模根據(jù)宏塊頭信息算得運(yùn)動(dòng)矢量到解碼緩沖區(qū)獲取參考數(shù)據(jù),然后進(jìn)行運(yùn)動(dòng)補(bǔ)償,并將運(yùn)動(dòng)補(bǔ)償后的數(shù)據(jù)輸出到重構(gòu)模塊。去塊效應(yīng)濾波模塊輸入重構(gòu)后的宏塊數(shù)據(jù),然后將結(jié)果輸出到外部解碼緩沖區(qū)。
控制模塊控制變長(zhǎng)碼解碼流程并對(duì)宏塊級(jí)的流水線(xiàn)進(jìn)行有效協(xié)調(diào)。重構(gòu)模塊選通幀內(nèi)預(yù)測(cè)模塊或者幀間預(yù)測(cè)模塊的輸出數(shù)據(jù)與反量化/反變換模塊的結(jié)果相加得重構(gòu)值,輸出給去塊效應(yīng)濾波模塊和幀內(nèi)預(yù)測(cè)模塊。
如圖2,為了保證流水操作的正常進(jìn)行,相關(guān)模塊之間都存在數(shù)據(jù)緩沖區(qū),包括數(shù)據(jù)乒乓RAM和頭信息存儲(chǔ)FIFO。數(shù)據(jù)乒乓RAM主要用于存儲(chǔ)數(shù)據(jù),保證數(shù)據(jù)的流水線(xiàn)式處理,而頭信息存儲(chǔ)FIFO用于存儲(chǔ)宏塊頭信息。
數(shù)據(jù)乒乓RAM在流水線(xiàn)中的作用上級(jí)模塊數(shù)據(jù)處理前都要檢查其下級(jí)乒乓RAM的空滿(mǎn),若至少一塊為空則可以正常工作,若全滿(mǎn)則需等待;同時(shí)下級(jí)模塊數(shù)據(jù)處理前都要檢查其上級(jí)乒乓RAM的空滿(mǎn),若至少一塊滿(mǎn)則可以正常工作,若為空則需等待。各模塊根據(jù)數(shù)據(jù)緩沖區(qū)的空滿(mǎn)彼此配合,協(xié)調(diào)工作,進(jìn)而實(shí)現(xiàn)流水操作。
例如圖2中,變長(zhǎng)碼解碼模塊解好宏塊頭信息后,查詢(xún)數(shù)據(jù)乒乓RAM1,若至少有一塊為空,則可以開(kāi)始解碼殘差系數(shù),否則需要等待。對(duì)于反量化/反變換模塊而言,在得到宏塊頭信息后,查詢(xún)數(shù)據(jù)乒乓RAM1和RAM2,若RAM1中至少有一塊滿(mǎn)且RAM2中至少有一塊空,則開(kāi)始對(duì)RAM1中的殘差系數(shù)進(jìn)行處理,否則需要等待。
頭信息存儲(chǔ)FIFO在流水線(xiàn)中的作用由上級(jí)模塊將當(dāng)前模塊解碼所需要的頭信息存入FIFO,并及時(shí)更新,只有當(dāng)數(shù)據(jù)和解碼頭信息的嚴(yán)格同步時(shí),當(dāng)前模塊才從FIFO中讀入頭信息。
例如圖2中,變長(zhǎng)碼解碼模塊每解好一個(gè)宏塊的頭信息就存入頭信息存儲(chǔ)FIFO。當(dāng)去塊效應(yīng)濾波模塊處理完一個(gè)宏塊后,查詢(xún)數(shù)據(jù)乒乓RAM4,若至少有一塊滿(mǎn),則從頭信息存儲(chǔ)FIFO中取出下一個(gè)宏塊的頭信息,然后開(kāi)始對(duì)下一宏塊進(jìn)行處理。
下面結(jié)合附圖2、附圖3和附圖4,以本發(fā)明的系統(tǒng)在先進(jìn)音視頻編碼標(biāo)準(zhǔn)AVS中的應(yīng)用為例,對(duì)本發(fā)明的技術(shù)方案做進(jìn)一步的詳細(xì)描述。其中圖中黑色的宏塊表明此宏塊為幀內(nèi)預(yù)測(cè)類(lèi)型的宏塊,白色的宏塊為幀間預(yù)測(cè)宏塊。
對(duì)幀間預(yù)測(cè)宏塊的處理,以宏塊級(jí)流水線(xiàn)中各模塊處理宏塊3的流程為例進(jìn)行說(shuō)明。具體流程如下如圖3,變長(zhǎng)碼解碼模塊解好宏塊3的頭信息后,控制模塊將頭信息有效信號(hào)和幀間預(yù)測(cè)使能信號(hào)拉高。之后,控制模塊查詢(xún)此宏塊頭信息是否被幀間預(yù)測(cè)模塊和反量化/反變換模塊分別讀走。當(dāng)頭信息已經(jīng)被兩個(gè)模塊讀走時(shí),控制模塊才將上述兩個(gè)信號(hào)拉低,同時(shí)將變長(zhǎng)碼解碼使能信號(hào)拉高,示意變長(zhǎng)碼解碼模塊可以解析宏塊4的數(shù)據(jù)。
如圖3,幀間預(yù)測(cè)模塊處理宏塊3的數(shù)據(jù)之前,查詢(xún)控制模塊輸出的頭信息有效信號(hào)以及幀間預(yù)測(cè)使能信號(hào)。當(dāng)這兩個(gè)信號(hào)同時(shí)有效時(shí),幀間預(yù)測(cè)模塊讀走頭信息并反饋給控制模塊一個(gè)頭信息讀取信號(hào)。反饋信號(hào)表明幀間預(yù)測(cè)模塊已讀走宏塊3的頭信息,變長(zhǎng)碼解碼模塊解析宏塊4的頭信息不會(huì)對(duì)本模塊產(chǎn)生影響。幀間預(yù)測(cè)模塊讀走頭信息后,查詢(xún)數(shù)據(jù)乒乓RAM3的空滿(mǎn),若至少有一塊空,則開(kāi)始計(jì)算運(yùn)動(dòng)矢量,至相應(yīng)位置取參考值進(jìn)行運(yùn)動(dòng)補(bǔ)償;否則繼續(xù)查詢(xún)。
如圖3,反量化/反變換模塊對(duì)宏塊3的數(shù)據(jù)進(jìn)行反量化/反變換之前,查詢(xún)控制模塊輸出的頭信息有效信號(hào)。當(dāng)此信號(hào)有效時(shí),反量化/反變換模塊讀走頭信息同時(shí)反饋給控制模塊一個(gè)頭信息讀取信號(hào)。然后查詢(xún)數(shù)據(jù)乒乓RAM1和RAM2的空滿(mǎn),若數(shù)據(jù)乒乓RAM1至少有一塊滿(mǎn)且數(shù)據(jù)乒乓RAM2至少有一塊空,則開(kāi)始對(duì)宏塊3內(nèi)以塊為單位的殘差系數(shù)進(jìn)行反量化和反變換。
如圖3,去塊效應(yīng)濾波模塊以宏塊為單位處理數(shù)據(jù)。當(dāng)宏塊2的數(shù)據(jù)已經(jīng)重構(gòu)完畢(數(shù)據(jù)乒乓RAM4中至少有一塊滿(mǎn))且去塊效應(yīng)濾波模塊對(duì)宏塊1的數(shù)據(jù)已經(jīng)濾波完畢,去塊效應(yīng)濾波模塊就從頭信息存儲(chǔ)FIFO中讀取宏塊2的頭信息,開(kāi)始對(duì)宏塊2的數(shù)據(jù)進(jìn)行處理。去塊效應(yīng)濾波模塊做完一幀,反饋一個(gè)幀結(jié)束的信號(hào)給控制模塊,以便進(jìn)行幀同步。
如圖3,幀內(nèi)預(yù)測(cè)模塊處理宏塊3的數(shù)據(jù)之前,查詢(xún)控制模塊輸出的頭信息有效信號(hào)以及幀內(nèi)預(yù)測(cè)使能信號(hào)。由于宏塊3為幀間預(yù)測(cè)宏塊,幀內(nèi)預(yù)測(cè)使能信號(hào)一直為低,故幀內(nèi)預(yù)測(cè)模塊不對(duì)宏塊3進(jìn)行處理,一直處于查詢(xún)狀態(tài)。
對(duì)幀內(nèi)預(yù)測(cè)宏塊的處理,以塊級(jí)流水線(xiàn)中各模塊處理宏塊4的流程為例進(jìn)行說(shuō)明。由圖4可見(jiàn),宏塊4中前3個(gè)塊為非零塊,后3個(gè)塊為全零塊。具體流程如下如圖4,變長(zhǎng)碼解碼模塊解析完宏塊4的頭信息后,如果數(shù)據(jù)乒乓RAM1有一塊為空,則開(kāi)始解析宏塊4內(nèi)以塊為單位的殘差系數(shù);否則,等待。變長(zhǎng)碼解碼模塊只解碼非零殘差數(shù)據(jù),解碼順序?yàn)閴K1、塊2、塊3;不處理后三個(gè)全零塊,以節(jié)省處理時(shí)間和功耗。
如圖4,反量化/反變換模塊得到宏塊4的頭信息后,得知宏塊4前3個(gè)塊為非零塊,后3個(gè)塊為全零塊。若數(shù)據(jù)乒乓RAM1至少有一塊滿(mǎn)且數(shù)據(jù)乒乓RAM2至少有一塊空,則開(kāi)始對(duì)宏塊4內(nèi)以塊為單位的殘差系數(shù)進(jìn)行反量化/反變換。反量化/反變換模塊依次處理完塊1、塊2、塊3的非零數(shù)據(jù)后,直接輸出3個(gè)全零塊給重構(gòu)模塊。
由于反量化/反變換模塊和變長(zhǎng)碼解碼模塊、重構(gòu)模塊間都存在數(shù)據(jù)乒乓RAM,所以在塊級(jí)流水線(xiàn)中,變長(zhǎng)碼解碼模塊比反量化/反變換模塊提前不止一個(gè)塊。因而對(duì)于反量化/反變換模塊而言,可以馬上得到所需的殘差系數(shù)而無(wú)需等待。
如圖4,幀內(nèi)預(yù)測(cè)模塊處理的數(shù)據(jù)也是以塊為單位。其輸入數(shù)據(jù)為上一個(gè)塊的重構(gòu)值,即上一個(gè)塊反量化及反變換后的結(jié)果和幀內(nèi)預(yù)測(cè)結(jié)果(或幀間預(yù)測(cè)結(jié)果)之和。幀內(nèi)預(yù)測(cè)處理宏塊4的第一個(gè)塊時(shí),其輸入數(shù)據(jù)為宏塊3的最后一個(gè)塊重構(gòu)值;處理宏塊4的第二個(gè)塊時(shí),輸入數(shù)據(jù)為宏塊4的第一個(gè)塊重構(gòu)值。
至此,實(shí)現(xiàn)了用于AVS視頻解碼器的高效流水線(xiàn)系統(tǒng)。通過(guò)控制模塊、重構(gòu)模塊、數(shù)據(jù)乒乓RAM和頭信息存儲(chǔ)FIFO的相互配合,保證了兩個(gè)級(jí)別的流水線(xiàn)高效的工作。將圖3、圖4中本發(fā)明的流水線(xiàn)與圖5中To-Wei等人提出的混合流水線(xiàn)比較,可見(jiàn)本發(fā)明中宏塊級(jí)流水線(xiàn)被進(jìn)一步細(xì)分??傮w來(lái)看,變長(zhǎng)碼解碼模塊提前反量化/反變換模塊、幀內(nèi)預(yù)測(cè)模塊和幀間預(yù)測(cè)模塊一級(jí),有效避免模塊間的數(shù)據(jù)等待現(xiàn)象,減小時(shí)間冗余;各模塊更有效得流水起來(lái),極大縮短了解碼時(shí)間。根據(jù)實(shí)驗(yàn),解一個(gè)宏塊的平均時(shí)間縮短了27%至33%。
權(quán)利要求
1.一種用于AVS視頻解碼器的高效流水線(xiàn)系統(tǒng),包括變長(zhǎng)碼解碼模塊、反量化/反變換模塊、幀內(nèi)預(yù)測(cè)模塊、幀間預(yù)測(cè)模塊、重構(gòu)模塊、去塊效應(yīng)濾波模塊和控制模塊,其特征在于所述變長(zhǎng)碼解碼模塊,用于解析宏塊頭信息和解碼殘差系數(shù),輸出宏塊頭信息到反量化/反變換模塊、幀內(nèi)預(yù)測(cè)模塊、幀間預(yù)測(cè)模塊、去塊效應(yīng)濾波模塊;輸出殘差系數(shù)給反量化/反變換模塊;所述反量化/反變換模塊,用于對(duì)殘差系數(shù)進(jìn)行反量化和反變換,處理結(jié)果輸出至重構(gòu)模塊;所述幀內(nèi)預(yù)測(cè)模塊,用于進(jìn)行幀內(nèi)預(yù)測(cè)處理,其輸入數(shù)據(jù)為上一塊的重構(gòu)值,輸出數(shù)據(jù)至重構(gòu)模塊;所述幀間預(yù)測(cè)模塊,用于進(jìn)行幀間預(yù)測(cè)處理,其輸入數(shù)據(jù)來(lái)自前一幀或兩幀經(jīng)去塊效應(yīng)濾波后的解碼圖像,輸出幀間預(yù)測(cè)結(jié)果到重構(gòu)模塊;所述重構(gòu)模塊,用于將反量化/反變換后的殘差系數(shù)和預(yù)測(cè)值相加得到重構(gòu)值,輸出重構(gòu)值給幀內(nèi)預(yù)測(cè)模塊和去塊效應(yīng)濾波模塊;所述去塊效應(yīng)濾波模塊,用于進(jìn)行去塊效應(yīng)濾波,輸入重構(gòu)值,將去塊效應(yīng)濾波結(jié)果輸出到外部解碼緩沖區(qū);所述控制模塊,用于控制變長(zhǎng)碼解碼流程并對(duì)宏塊級(jí)的流水線(xiàn)進(jìn)行協(xié)調(diào),輸入來(lái)自變長(zhǎng)碼解碼模塊、反量化/反變換模塊、幀內(nèi)預(yù)測(cè)模塊和幀間預(yù)測(cè)模塊的狀態(tài)信號(hào),輸出相應(yīng)的使能和有效信號(hào)。
2.如權(quán)利要求1所述的用于AVS視頻解碼器的高效流水線(xiàn)系統(tǒng),其特征在于各模塊間存在數(shù)據(jù)緩沖區(qū),用以緩存數(shù)據(jù),數(shù)據(jù)緩沖區(qū)包括數(shù)據(jù)乒乓RAM和頭信息存儲(chǔ)FIFO兩種,其中,數(shù)據(jù)乒乓RAM用于存儲(chǔ)數(shù)據(jù),保證數(shù)據(jù)的流水線(xiàn)式處理,而頭信息存儲(chǔ)FIFO用于存儲(chǔ)宏塊頭信息。
3.如權(quán)利要求2所述的用于AVS視頻解碼器的高效流水線(xiàn)系統(tǒng),其特征在于變長(zhǎng)碼解碼模塊和反量化/反變換模塊之間存在以塊為單位的數(shù)據(jù)乒乓RAM;重構(gòu)模塊和反量化/反變換模塊之間存在以塊為單位數(shù)據(jù)乒乓RAM;重構(gòu)模塊和幀間預(yù)測(cè)模塊之間存在以宏塊為單位數(shù)據(jù)乒乓RAM;重構(gòu)模塊和去塊效應(yīng)濾波模塊之間存在以宏塊為單位的數(shù)據(jù)乒乓RAM;變長(zhǎng)碼解碼模塊和去塊效應(yīng)濾波模塊之間存在頭信息存儲(chǔ)FIFO。
4.如權(quán)利要求1所述的用于AVS視頻解碼器的高效流水線(xiàn)系統(tǒng),其特征在于所述控制模塊,根據(jù)宏塊類(lèi)型和來(lái)自變長(zhǎng)碼解碼模塊、反量化/反變換模塊、幀內(nèi)預(yù)測(cè)模塊和幀間預(yù)測(cè)模塊的狀態(tài)信號(hào),經(jīng)過(guò)判斷輸出相應(yīng)的使能和有效信號(hào),對(duì)宏塊級(jí)流水進(jìn)行控制;對(duì)于幀內(nèi)預(yù)測(cè)類(lèi)型宏塊,在變長(zhǎng)碼解碼模塊解好宏塊頭信息后,控制模塊將頭信息有效信號(hào)以及幀內(nèi)預(yù)測(cè)使能信號(hào)拉高,直至反量化/反變換模塊和幀內(nèi)預(yù)測(cè)模塊分別反饋了頭信息讀取信號(hào),控制模塊才將上述兩個(gè)信號(hào)拉低,同時(shí)將變長(zhǎng)碼解碼使能信號(hào)拉高;對(duì)于幀間預(yù)測(cè)類(lèi)型宏塊,在變長(zhǎng)碼解碼模塊解好宏塊頭信息后,控制模塊將頭信息有效信號(hào)以及幀間預(yù)測(cè)使能信號(hào)拉高,直至反量化/反變換模塊和幀間預(yù)測(cè)模塊分別反饋了頭信息讀取信號(hào),控制模塊才將上述兩個(gè)信號(hào)拉低,同時(shí)將變長(zhǎng)碼解碼使能信號(hào)拉高。
5.如權(quán)利要求1所述的用于AVS視頻解碼器的高效流水線(xiàn)系統(tǒng),其特征在于所述變長(zhǎng)碼解碼模塊,在開(kāi)始解碼一個(gè)新的宏塊前,查詢(xún)控制模塊送出的使能信號(hào),若有效,則開(kāi)始解析宏塊頭信息,否則,繼續(xù)查詢(xún);解完宏塊頭信息后,查詢(xún)與反量化/反變換模塊間的數(shù)據(jù)乒乓RAM的空滿(mǎn),若至少有一塊空,則以塊為單位解碼殘差系數(shù),否則繼續(xù)查詢(xún)。
6.如權(quán)利要求1所述的用于AVS視頻解碼器的高效流水線(xiàn)系統(tǒng),其特征在于所述反量化/反變換模塊,在開(kāi)始處理一個(gè)新的宏塊前,查詢(xún)控制模塊送出的頭信息有效信號(hào),若有效,讀走頭信息同時(shí)反饋給控制模塊一個(gè)頭信息讀取信號(hào),否則,繼續(xù)查詢(xún);讀走頭信息后,查詢(xún)與變長(zhǎng)碼解碼模塊和與重構(gòu)模塊間的數(shù)據(jù)乒乓RAM的空滿(mǎn),若前者至少有一塊滿(mǎn)且后者至少有一塊空,則以塊為單位對(duì)殘差系數(shù)進(jìn)行反量化/反變換,否則繼續(xù)查詢(xún)。
7.如權(quán)利要求1所述的用于AVS視頻解碼器的高效流水線(xiàn)系統(tǒng),其特征在于所述幀內(nèi)預(yù)測(cè)模塊,在開(kāi)始處理一個(gè)新的宏塊前,查詢(xún)控制模塊送出的頭信息有效信號(hào)和幀內(nèi)預(yù)測(cè)使能信號(hào),若同時(shí)有效,讀走頭信息同時(shí)反饋給控制模塊一個(gè)頭信息讀取信號(hào),否則,繼續(xù)查詢(xún);讀走頭信息后開(kāi)始進(jìn)行宏塊內(nèi)各塊的幀內(nèi)預(yù)測(cè)。
8.如權(quán)利要求1所述的用于AVS視頻解碼器的高效流水線(xiàn)系統(tǒng),其特征在于所述幀間預(yù)測(cè)模塊,在開(kāi)始處理一個(gè)新的宏塊前,查詢(xún)控制模塊送出的頭信息有效信號(hào)和幀間預(yù)測(cè)使能信號(hào),若同時(shí)有效,讀走頭信息同時(shí)反饋給控制模塊一個(gè)頭信息讀取信號(hào),否則,繼續(xù)查詢(xún);讀走頭信息后,查詢(xún)與重構(gòu)模塊間的數(shù)據(jù)乒乓RAM的空滿(mǎn),若至少有一塊空,則開(kāi)始計(jì)算運(yùn)動(dòng)矢量,至相應(yīng)位置取參考值進(jìn)行運(yùn)動(dòng)補(bǔ)償;否則繼續(xù)查詢(xún)。
9.如權(quán)利要求1所述的用于AVS視頻解碼器的高效流水線(xiàn)系統(tǒng),其特征在于所述重構(gòu)模塊,對(duì)幀內(nèi)預(yù)測(cè)類(lèi)型宏塊,選通幀內(nèi)預(yù)測(cè)的結(jié)果與反量化/反變換后的殘差數(shù)據(jù)相加得到重構(gòu)值;對(duì)幀間預(yù)測(cè)類(lèi)型宏塊,選通幀間預(yù)測(cè)的結(jié)果與反量化/反變換后的殘差數(shù)據(jù)相加得到重構(gòu)值。
10.如權(quán)利要求1所述的用于AVS視頻解碼器的高效流水線(xiàn)系統(tǒng),其特征在于所述去塊效應(yīng)濾波模塊,在開(kāi)始處理一個(gè)新的宏塊前,查詢(xún)與重構(gòu)模塊間的數(shù)據(jù)乒乓RAM的空滿(mǎn),若至少有一塊滿(mǎn),則從與變長(zhǎng)碼解碼模塊間的頭信息存儲(chǔ)FIFO內(nèi)讀取對(duì)應(yīng)的宏塊頭信息,開(kāi)始對(duì)本宏塊的重構(gòu)值進(jìn)行去塊效應(yīng)濾波,否則繼續(xù)查詢(xún)。
全文摘要
一種用于AVS視頻解碼器的高效流水線(xiàn)系統(tǒng),屬于數(shù)字視頻編解碼技術(shù)領(lǐng)域。本發(fā)明根據(jù)各模塊處理數(shù)據(jù)的粒度以及數(shù)據(jù)依賴(lài)關(guān)系,采用三級(jí)宏塊級(jí)流水線(xiàn)和兩級(jí)塊級(jí)流水線(xiàn)。從宏觀上,三級(jí)宏塊級(jí)流水線(xiàn)第一級(jí)由變長(zhǎng)碼解碼模塊組成;第二級(jí)級(jí)由反量化/反變換模塊、幀內(nèi)預(yù)測(cè)模塊和幀間預(yù)測(cè)模塊組成;第三級(jí)由去塊效應(yīng)濾波模塊組成。從微觀上,兩級(jí)塊級(jí)流水線(xiàn)第一級(jí)由變長(zhǎng)碼解碼模塊組成;第二級(jí)由反量化/反變換模塊、幀內(nèi)預(yù)測(cè)模塊組成??刂颇K、重構(gòu)模塊、數(shù)據(jù)乒乓RAM和頭信息存儲(chǔ)FIFO相互配合,保證了兩級(jí)流水線(xiàn)的高效工作。本發(fā)明有效避免模塊間的數(shù)據(jù)等待現(xiàn)象,減小時(shí)間冗余,在不顯著增大存儲(chǔ)器開(kāi)銷(xiāo)的前提下,達(dá)到高清晰度視頻實(shí)時(shí)解碼的目標(biāo)。
文檔編號(hào)H04N7/50GK1874512SQ20061002832
公開(kāi)日2006年12月6日 申請(qǐng)日期2006年6月29日 優(yōu)先權(quán)日2006年6月29日
發(fā)明者孫楠, 趙策, 劉佩林 申請(qǐng)人:上海交通大學(xué)