專(zhuān)利名稱:用于視頻編碼器的幀內(nèi)預(yù)測(cè)電路及其實(shí)現(xiàn)方法
技術(shù)領(lǐng)域:
本發(fā)明涉及數(shù)字視頻處理技術(shù),具體而言,尤其涉及一種用于視頻編碼器的幀內(nèi) 預(yù)測(cè)電路及其實(shí)現(xiàn)方法。
背景技術(shù):
集成電路設(shè)計(jì)方法學(xué)是用來(lái)指導(dǎo)集成電路設(shè)計(jì)的方法學(xué)。目前的集成電路設(shè)計(jì), 尤其是大規(guī)模集成電路設(shè)計(jì),其常見(jiàn)的設(shè)計(jì)流程是系統(tǒng)工程師根據(jù)功能需求提出系統(tǒng)功 能框架,軟件工程師利用計(jì)算機(jī)高級(jí)程序語(yǔ)言(例如JaVa、C、C++、Matlab等)對(duì)系統(tǒng)功能 框架進(jìn)行描述,從而得到集成電路的高級(jí)程序語(yǔ)言的算法描述;而后由集成電路設(shè)計(jì)工程 師利用硬件描述語(yǔ)言(例如Veril0g、VHDL等),將算法描述綜合成網(wǎng)表文件,之后使用專(zhuān) 門(mén)的硬件綜合工具實(shí)現(xiàn)布局布線,得到集成電路版圖。在集成電路產(chǎn)業(yè)需求中,設(shè)計(jì)速度已成為集成電路設(shè)計(jì)方法學(xué)的重要考慮因素。 當(dāng)集成電路制造商或集成系統(tǒng)供應(yīng)商將商業(yè)運(yùn)作的基本問(wèn)題(如產(chǎn)品數(shù)量、設(shè)計(jì)/測(cè)試費(fèi) 用、不可再用的工程開(kāi)支(Non-Recurring Engineering,NRE)、用戶IP的整合/復(fù)用、可靠 性和可維護(hù)性、生產(chǎn)過(guò)程復(fù)雜性等)綜合考慮在內(nèi)時(shí),加速產(chǎn)品推出時(shí)間、提高產(chǎn)品性能、 降低產(chǎn)品制造風(fēng)險(xiǎn)便成為選擇設(shè)計(jì)技術(shù)時(shí)的重要考慮因素。尤其,目前電子產(chǎn)品的生命周 期不足一年,如何盡可能塊地設(shè)計(jì)出新的電子產(chǎn)品則成為了制造商要解決的問(wèn)題。因此,電 子產(chǎn)品集成電路的設(shè)計(jì)速度則成為了集成電路設(shè)計(jì)中的主要考慮因素。隨著集成電路制造工藝進(jìn)入45nm以下階段,集成電路設(shè)計(jì)發(fā)展落后于集成 電路工藝進(jìn)步的剪刀差繼續(xù)增大。數(shù)據(jù)流算法,尤其是數(shù)字媒體類(lèi)的專(zhuān)用集成電路 ASIC (Application Specific IntegratedCircuit)設(shè)計(jì),例如,用于視頻編碼器的幀內(nèi)預(yù) 測(cè)電路的集成電路設(shè)計(jì),面臨設(shè)計(jì)周期長(zhǎng)、靈活性差、擴(kuò)展性差等問(wèn)題。幀內(nèi)預(yù)測(cè)是保證數(shù)字視頻高清傳輸?shù)闹匾A(yù)測(cè)方式。在H. 264視頻編碼標(biāo)準(zhǔn)中, 幀內(nèi)預(yù)測(cè)主要分為3種預(yù)測(cè)模式,即亮度16X 16幀內(nèi)預(yù)測(cè)模式,亮度4X4幀內(nèi)預(yù)測(cè)模式, 以及色度8X8幀內(nèi)預(yù)測(cè)模式。其中,亮度16X16幀內(nèi)預(yù)測(cè)模式和色度8X8幀內(nèi)預(yù)測(cè)模式 各有4種預(yù)測(cè)方法,而亮度4X4幀內(nèi)預(yù)測(cè)模式則有9種預(yù)測(cè)方法。幀內(nèi)預(yù)測(cè)的目的就是從 各種預(yù)測(cè)模式中選擇一種最好的預(yù)測(cè)方式,計(jì)算圖像幀的預(yù)測(cè)值和殘差,傳遞給DCT,量化, VLC,去方塊濾波等進(jìn)行下一步的編碼與處理。由于幀內(nèi)預(yù)測(cè)是整個(gè)編碼環(huán)節(jié)的第一步,同 時(shí)自身預(yù)測(cè)模式較多,設(shè)計(jì)復(fù)雜度較高,所以提高幀內(nèi)預(yù)測(cè)模式的準(zhǔn)確度,同時(shí)縮減幀內(nèi)預(yù) 測(cè)的時(shí)間代價(jià),成為實(shí)現(xiàn)高清視頻編碼器的瓶頸?,F(xiàn)有技術(shù)中,對(duì)幀內(nèi)預(yù)測(cè)的優(yōu)化方式都是通過(guò)減少預(yù)測(cè)模式來(lái)對(duì)幀內(nèi)預(yù)測(cè)進(jìn)行優(yōu) 化,雖然在一定程度上減少了幀內(nèi)預(yù)測(cè)的復(fù)雜度,但是同時(shí)也或多或少地犧牲了幀內(nèi)預(yù)測(cè) 的性能,對(duì)整個(gè)數(shù)字高清視頻編碼會(huì)造成不同程度的損傷。可見(jiàn),從提升幀內(nèi)預(yù)測(cè)電路的設(shè) 計(jì)速度和保證幀內(nèi)預(yù)測(cè)的性能兩方面考慮,現(xiàn)有的IC設(shè)計(jì)方法學(xué)需要改進(jìn)和提高。
發(fā)明內(nèi)容
本發(fā)明要解決的技術(shù)問(wèn)題是針對(duì)現(xiàn)有技術(shù)的不足,提供一種用于視頻編碼器的幀 內(nèi)預(yù)測(cè)電路及其實(shí)現(xiàn)方法,在保證不損傷數(shù)字高清視頻編碼的前提下,能夠加快幀內(nèi)預(yù)測(cè) 電路的集成電路設(shè)計(jì)速度。為解決上述技術(shù)問(wèn)題,本發(fā)明采用了以下技術(shù)方案一種用于視頻編碼器的幀內(nèi)預(yù)測(cè)電路的實(shí)現(xiàn)方法,包括將高級(jí)程序語(yǔ)言算法描述的視頻編碼器的幀內(nèi)預(yù)測(cè)電路的各個(gè)函數(shù)映射成由算 子單元構(gòu)成的硬件邏輯描述;由所述算子單元構(gòu)成的硬件邏輯描述生成幀內(nèi)預(yù)測(cè)電路的硬 件集成電路。在本發(fā)明的一種實(shí)施例中,將高級(jí)程序語(yǔ)言算法描述的視頻編碼器的幀內(nèi)預(yù)測(cè)電 路的各個(gè)函數(shù)映射成由算子單元構(gòu)成的硬件邏輯描述包括如下步驟程序分析步驟讀取幀內(nèi)預(yù)測(cè)電路的各個(gè)函數(shù)的高級(jí)程序語(yǔ)言算法程序,根據(jù)該高 級(jí)程序語(yǔ)言規(guī)則從所述高級(jí)程序語(yǔ)言算法程序中識(shí)別出被映射的執(zhí)行對(duì)象和參數(shù)對(duì)象;數(shù)據(jù)控制流圖生成步驟將識(shí)別出的執(zhí)行對(duì)象和參數(shù)對(duì)象映射成描述幀內(nèi)預(yù)測(cè)電 路算法的數(shù)據(jù)控制流圖中的相應(yīng)節(jié)點(diǎn);算子時(shí)空?qǐng)D生成步驟根據(jù)數(shù)據(jù)控制流圖中的各個(gè)節(jié)點(diǎn)的功能處理,從算子單元 庫(kù)中取出對(duì)應(yīng)功能的至少一個(gè)算子單元,將所述數(shù)據(jù)控制流圖轉(zhuǎn)換成由算子單元組成的算 子時(shí)空?qǐng)D;時(shí)序約束步驟根據(jù)用戶規(guī)格需求和目標(biāo)集成電路工藝的要求確定出總時(shí)序約 束,對(duì)算子時(shí)空?qǐng)D中的每個(gè)算子單元標(biāo)注時(shí)間,對(duì)算子時(shí)空?qǐng)D的每個(gè)層級(jí)進(jìn)行時(shí)序約束;聚類(lèi)壓縮步驟根據(jù)時(shí)間標(biāo)注對(duì)算子時(shí)空?qǐng)D進(jìn)行空間上的聚類(lèi)壓縮,并使幀內(nèi)預(yù) 測(cè)電路總體算法的執(zhí)行時(shí)間最接近于總時(shí)序約束;下層硬件映射步驟將聚類(lèi)壓縮后的算子時(shí)空?qǐng)D映射成由算子單元構(gòu)成的硬件邏 輯描述。在本發(fā)明的一種實(shí)施例中,所述函數(shù)包括用于控制參考幀傳輸速率的碼率控制函 數(shù),用于對(duì)幀內(nèi)預(yù)測(cè)進(jìn)行分析的初始化函數(shù),以及用于對(duì)參考幀進(jìn)行幀內(nèi)預(yù)測(cè)的幀內(nèi)預(yù)測(cè) 函數(shù)。在本發(fā)明的一種實(shí)施例中,所述程序分析步驟包括從所述幀內(nèi)預(yù)測(cè)的高級(jí)程序語(yǔ)言算法程序中識(shí)別出被映射的執(zhí)行對(duì)象和參數(shù)對(duì) 象,所述執(zhí)行對(duì)象包括運(yùn)算指令和/或控制指令,所述參數(shù)對(duì)象包括輸入數(shù)據(jù)、輸出數(shù)據(jù)和 中間數(shù)據(jù)中的至少一種;分析函數(shù)調(diào)用關(guān)系,識(shí)別出函數(shù)以及函數(shù)運(yùn)行中涉及的參數(shù)對(duì)象并判斷函數(shù)運(yùn)行 中是否調(diào)用子函數(shù);若調(diào)用子函數(shù),則分析子函數(shù)的調(diào)用關(guān)系,識(shí)別出子函數(shù)以及子函數(shù)運(yùn) 行中涉及的參數(shù)對(duì)象并判斷子函數(shù)運(yùn)行中是否又調(diào)用其它子函數(shù)。在本發(fā)明的一種實(shí)施例中,在所述數(shù)據(jù)控制流圖生成步驟中,將所述運(yùn)算指令映 射為處理節(jié)點(diǎn),將所述控制指令映射為用于標(biāo)識(shí)狀態(tài)、狀態(tài)轉(zhuǎn)移條件及狀態(tài)控制信號(hào)的控 制流,將所述參數(shù)對(duì)象映射為數(shù)據(jù)流上的存儲(chǔ)節(jié)點(diǎn)。在本發(fā)明的一種實(shí)施例中,所述算子時(shí)空?qǐng)D生成步驟包括將數(shù)據(jù)控制流圖根據(jù)其數(shù)據(jù)流相關(guān)性展開(kāi);
根據(jù)展開(kāi)后的各節(jié)點(diǎn)所進(jìn)行的功能處理從預(yù)先建立的算子單元庫(kù)中取出對(duì)應(yīng)功 能的至少一個(gè)算子單元,將所述處理節(jié)點(diǎn)映射為運(yùn)算類(lèi)算子,將所述控制流映射為控制類(lèi) 算子和/或路徑類(lèi)算子,將所述存儲(chǔ)節(jié)點(diǎn)映射為存儲(chǔ)類(lèi)算子。在本發(fā)明的一種實(shí)施例中,所述時(shí)序約束步驟包括根據(jù)數(shù)據(jù)控制流圖中數(shù)據(jù)流 結(jié)構(gòu)對(duì)算子時(shí)空?qǐng)D的每個(gè)層級(jí)進(jìn)行時(shí)序約束;如果所述數(shù)據(jù)流結(jié)構(gòu)為并行數(shù)據(jù)流,則將總 時(shí)序約束平分到對(duì)應(yīng)的時(shí)空?qǐng)D中的每個(gè)算子層級(jí),并將每個(gè)算子層級(jí)的時(shí)序約束平分到該 算子層級(jí)中的每一個(gè)算子單元;如果所述數(shù)據(jù)控制流圖中的數(shù)據(jù)流為串行數(shù)據(jù)流,則將各 算子層級(jí)中最長(zhǎng)運(yùn)算路徑所映射的算子單元所對(duì)應(yīng)的時(shí)序占總算子層級(jí)中最長(zhǎng)運(yùn)算路徑 所映射的算子單元所對(duì)應(yīng)的時(shí)序總和的比例來(lái)分配。在本發(fā)明的一種實(shí)施例中,所述聚類(lèi)壓縮步驟包括聚類(lèi)步驟,用于在算子時(shí)空?qǐng)D中查找出屬性相同的運(yùn)算類(lèi)算子和/或存儲(chǔ)屬性相 同的存儲(chǔ)類(lèi)算子;壓縮步驟,用于根據(jù)時(shí)間標(biāo)注對(duì)運(yùn)算屬性相同的運(yùn)算類(lèi)算子在空間上進(jìn)行合并壓 縮和/或?qū)⒋鎯?chǔ)屬性相同的存儲(chǔ)類(lèi)算子在空間上進(jìn)行合并壓縮;算子復(fù)用步驟,用于引入控制類(lèi)算子,對(duì)壓縮后的運(yùn)算類(lèi)算子和/或存儲(chǔ)類(lèi)運(yùn)算 算子生成相應(yīng)配置指令,實(shí)現(xiàn)運(yùn)算類(lèi)算子和/或存儲(chǔ)類(lèi)算子的復(fù)用。同時(shí),本發(fā)明還提供了一種用于視頻編碼器的幀內(nèi)預(yù)測(cè)電路,包括用于控制圖像 傳輸速率的碼率控制模塊,用于幀內(nèi)預(yù)測(cè)分析的函數(shù)分析模塊,以及用于對(duì)圖像進(jìn)行幀內(nèi) 預(yù)測(cè)的幀內(nèi)預(yù)測(cè)模塊;所述各模塊由算子單元組成。在本發(fā)明的一種實(shí)施例中,所述幀內(nèi)預(yù)測(cè)模塊包括亮度16X16劃分下的幀內(nèi)預(yù)測(cè) 子模塊,色度8X8劃分下的幀內(nèi)預(yù)測(cè)子模塊以及亮度4X4劃分下的幀內(nèi)預(yù)測(cè)子模塊。在本發(fā)明的一種實(shí)施例中,所述亮度16X16劃分下的幀內(nèi)預(yù)測(cè)子模塊包括用于檢 測(cè)預(yù)測(cè)模式是否可用的16X16模式檢測(cè)單元,用于對(duì)所述參考幀進(jìn)行幀內(nèi)預(yù)測(cè)的16X16幀 內(nèi)預(yù)測(cè)單元,以及用于計(jì)算幀內(nèi)預(yù)測(cè)代價(jià)的16X16代價(jià)計(jì)算單元;所述色度8X8劃分下的幀 內(nèi)預(yù)測(cè)子模塊,包括用于檢測(cè)預(yù)測(cè)模式是否可用的8X8模式檢測(cè)單元,用于對(duì)所述參考幀 進(jìn)行幀內(nèi)預(yù)測(cè)的8X8幀內(nèi)預(yù)測(cè)單元,以及用于計(jì)算幀內(nèi)預(yù)測(cè)代價(jià)的8X8代價(jià)計(jì)算單元;對(duì)于 亮度4X4劃分下的幀內(nèi)預(yù)測(cè)子模塊,包括用于檢測(cè)預(yù)測(cè)模式是否可用的4X4模式檢測(cè)單 元,用于對(duì)所述參考幀進(jìn)行幀內(nèi)預(yù)測(cè)的4 X 4幀內(nèi)預(yù)測(cè)單元,用于計(jì)算幀內(nèi)預(yù)測(cè)代價(jià)的4 X 4 代價(jià)計(jì)算單元,以及用于量化所述參考幀的量化環(huán)路編碼單元。在本發(fā)明的一種實(shí)施例中,所述16X16幀內(nèi)預(yù)測(cè)單元包括16X16DC預(yù)測(cè)模式子單 元,16X16水平預(yù)測(cè)模式子單元,16X16垂直預(yù)測(cè)模式子單元,16X16平面預(yù)測(cè)垂直子單元; 所述8X8幀內(nèi)預(yù)測(cè)單元,包括8X8DC預(yù)測(cè)模式子單元,8X8水平預(yù)測(cè)模式子單元,8X8垂直預(yù) 測(cè)模式子單元,8X8平面預(yù)測(cè)垂直子單元;所述4X4幀內(nèi)預(yù)測(cè)單元包括4X4垂直預(yù)測(cè)模式 子單元,4X4水平預(yù)測(cè)模式子單元,4X4DC預(yù)測(cè)模式子單元,4X4下左對(duì)角線預(yù)測(cè)模式子 單元,4X4右對(duì)角線預(yù)測(cè)模式子單元,4X4右垂直預(yù)測(cè)模式子單元,4X4下水平預(yù)測(cè)模式 子單元,4X4左垂直預(yù)測(cè)模式子單元以及4X4上水平預(yù)測(cè)模式子單元。由于采用了以上技術(shù)方案,使本發(fā)明具備的有益效果在于通過(guò)將高級(jí)程序語(yǔ)言 算法描述的視頻編碼器的幀內(nèi)預(yù)測(cè)電路的各個(gè)功能塊映射成由算子單元構(gòu)成的硬件邏輯 描述;以及由算子單元構(gòu)成的硬件邏輯描述生成幀內(nèi)預(yù)測(cè)電路的硬件集成電路的設(shè)計(jì),使得系統(tǒng)工程師在保證不損傷數(shù)字高清視頻編碼的前提下,根據(jù)足以支撐描述高級(jí)語(yǔ)言算法 的完備算子單元庫(kù),通過(guò)設(shè)計(jì)表示硬件邏輯的算子單元,能夠以較快的速度設(shè)計(jì)出幀內(nèi)預(yù) 測(cè)電路的硬件集成電路,推動(dòng)了高清視頻編碼技術(shù)的發(fā)展。并且,該種幀內(nèi)預(yù)測(cè)電路還可以 與視頻編碼器內(nèi)的其它專(zhuān)用集成電路ASIC部分進(jìn)行并行流水操作,加快了視頻編碼器的 ASIC的設(shè)計(jì)速度。同時(shí),該種幀內(nèi)預(yù)測(cè)電路可以適用于不同的視頻編碼器結(jié)構(gòu),具有很好的 通用性。
圖1為現(xiàn)有集成電路的設(shè)計(jì)流程圖;圖2示出了本發(fā)明實(shí)施例提供的幾類(lèi)算子結(jié)構(gòu);其中,圖2. 1示出的是運(yùn)算類(lèi)算 子,圖2.2示出的是存儲(chǔ)類(lèi)算子,圖2. 3示出的是路徑類(lèi)算子,圖2. 4示出的是控制類(lèi)算子;圖3為本發(fā)明一種實(shí)施例的選擇最佳預(yù)測(cè)模式的函數(shù)關(guān)系調(diào)用示意圖;圖4為本發(fā)明另一種實(shí)施例的16X16劃分下的幀內(nèi)預(yù)測(cè)函數(shù)數(shù)據(jù)控制流圖;圖5為本發(fā)明一種實(shí)施例的采用水平預(yù)測(cè)方法的算子時(shí)空?qǐng)D;圖6為本發(fā)明一種實(shí)施例的采用垂直預(yù)測(cè)方法的算子時(shí)空?qǐng)D;圖7為本發(fā)明一種實(shí)施例的計(jì)算平面預(yù)測(cè)輸入量的算子時(shí)空?qǐng)D;圖8為本發(fā)明一種實(shí)施例的采用平面預(yù)測(cè)方法的算子時(shí)空?qǐng)D;圖9為本發(fā)明一種實(shí)施例的采用平面預(yù)測(cè)優(yōu)化方法優(yōu)化前的算子時(shí)空?qǐng)D;圖10為本發(fā)明一種實(shí)施例的采用平面預(yù)測(cè)優(yōu)化方法優(yōu)化后的算子時(shí)空?qǐng)D;圖11為本發(fā)明一種實(shí)施例的16X16劃分下的采用平面預(yù)測(cè)方法的算子單元示意 圖;圖12為本發(fā)明一種實(shí)施例的算子固化前的示意圖;圖13為本發(fā)明一種實(shí)施例的進(jìn)行算子固化后的示意圖。
具體實(shí)施例方式下面通過(guò)具體實(shí)施方式
結(jié)合附圖對(duì)本發(fā)明作進(jìn)一步詳細(xì)說(shuō)明。一、視頻編碼器概述視頻編碼技術(shù)是數(shù)字媒體存儲(chǔ)與傳輸?shù)年P(guān)鍵技術(shù),它廣泛地應(yīng)用在數(shù)字電視、視 頻通信、網(wǎng)絡(luò)流媒體等領(lǐng)域。本發(fā)明涉及一種基于算子思想的幀內(nèi)預(yù)測(cè)電路及其實(shí)現(xiàn)方法, 適用于信號(hào)處理領(lǐng)域中各種圖像/視頻/音頻DCT變換數(shù)據(jù)的幀內(nèi)預(yù)測(cè)。目前在視頻編碼領(lǐng)域,由國(guó)際電聯(lián)(ITU-T)和國(guó)際標(biāo)準(zhǔn)化組織(ISO)聯(lián)合組建的 聯(lián)合視頻組(JVT)共同制定的新數(shù)字視頻編碼標(biāo)準(zhǔn)-H. 264已得到廣泛應(yīng)用。H. 264算法既 是國(guó)際電聯(lián)(ITU-T)的H.沈4,也是國(guó)際標(biāo)準(zhǔn)化組織(ISO)和國(guó)際電工委(IEC)的MPEG-4 標(biāo)準(zhǔn)的第10部分的內(nèi)容,其采用分層次的算法結(jié)構(gòu),在概念上可以分為兩層,分別是視頻 編碼層和網(wǎng)絡(luò)提取層。視頻編碼層(VideoCoding Layer,簡(jiǎn)稱VCL)負(fù)責(zé)高效的視頻內(nèi)容表 示,網(wǎng)絡(luò)提取層(Network Abstraction Layer,簡(jiǎn)稱NAL)負(fù)責(zé)以網(wǎng)絡(luò)所要求的恰當(dāng)?shù)姆绞?對(duì)數(shù)據(jù)進(jìn)行打包和傳送。通過(guò)視頻編碼層和網(wǎng)絡(luò)提取層這樣的結(jié)構(gòu)有助于信息的封裝和對(duì) 信息進(jìn)行更好的優(yōu)先級(jí)控制。H. 264編碼過(guò)程的主要子算法有幀間預(yù)測(cè)、幀內(nèi)預(yù)測(cè)、變換和量化、去塊效應(yīng)濾波和熵編碼。下面對(duì)各子算法做一簡(jiǎn)述。1、幀間預(yù)測(cè)幀間預(yù)測(cè)是利用視頻圖像幀間的相關(guān)性,即時(shí)間相關(guān)性,來(lái)達(dá)到圖像壓縮的目的。 在圖像傳輸技術(shù)中,活動(dòng)圖像是關(guān)注的重點(diǎn)?;顒?dòng)圖像是由時(shí)間上以幀周期為間隔的連續(xù) 圖像幀組成的時(shí)間圖像序列,它在時(shí)間上比在空間上具有更大的相關(guān)性。大多數(shù)圖像相鄰 幀間細(xì)節(jié)變化很小,即圖像幀間具有很強(qiáng)的相關(guān)性,利用幀所具有的這種相關(guān)性特點(diǎn)進(jìn)行 幀間編碼,可獲得比幀內(nèi)編碼高得多的壓縮比。H. 264幀間預(yù)測(cè)是利用已編碼視頻幀/場(chǎng)和 基于塊的運(yùn)動(dòng)補(bǔ)償?shù)念A(yù)測(cè)模式。2、幀內(nèi)預(yù)測(cè)幀內(nèi)預(yù)測(cè)是H. 264采用的一種新技術(shù),指利用當(dāng)前塊的上方和左方的相鄰像素作 為參考像素,對(duì)當(dāng)前塊的像素進(jìn)行預(yù)測(cè)。幀內(nèi)預(yù)測(cè)編碼可以縮減圖像的空間冗余,減小碼率。3、變換和量化在圖像編碼中,變換編碼和量化從原理上講是兩個(gè)獨(dú)立的過(guò)程。但在H. 264中,將 兩個(gè)過(guò)程的乘法合二為一,并進(jìn)一步采用整數(shù)運(yùn)算,減少編解碼的運(yùn)算量。量化過(guò)程是在不 降低視頻效果的前提下減小圖像編碼長(zhǎng)度,減少視頻恢復(fù)中不必要的信息。其目的是去除 變換后對(duì)圖像的視覺(jué)質(zhì)量不重要的數(shù)據(jù)分量且保持視覺(jué)上重要的數(shù)據(jù)分量。其性質(zhì)是被去 除后的分量不能恢復(fù),是有損過(guò)程。4、去塊濾波基于塊的視頻編碼系統(tǒng)在重建圖像時(shí)不可避免地在某些塊邊界處會(huì)出現(xiàn)一些較 為明顯的塊效應(yīng),特別是在低碼率的情況下。出現(xiàn)塊效應(yīng)的原因在于塊邊界像素的運(yùn)動(dòng)補(bǔ) 償精度一般都低于塊內(nèi)像素,而且塊變換也導(dǎo)致了塊邊界的不連續(xù)性。去塊濾波的主要過(guò) 程包括確定濾波強(qiáng)度、判斷虛假邊界、濾波計(jì)算。5、熵編碼在視頻編碼中,熵編碼把一系列用來(lái)表示視頻序列的元素符號(hào)轉(zhuǎn)變?yōu)橐粋€(gè)用來(lái)傳 輸或是存儲(chǔ)的壓縮碼流。輸入的符號(hào)可能包括量化的變換系統(tǒng)、運(yùn)動(dòng)向量、標(biāo)記、頭以及附 加信息。本發(fā)明涉及H. 264視頻編碼器的幀內(nèi)預(yù)測(cè)電路,為此,主要對(duì)H. 264的幀內(nèi)預(yù)測(cè)電 路進(jìn)行說(shuō)明。本發(fā)明以X264為基礎(chǔ),即以X264代碼形式的視頻編碼器的幀內(nèi)預(yù)測(cè)電路的高級(jí) 程序語(yǔ)言算法描述為出發(fā)點(diǎn),以實(shí)現(xiàn)幀內(nèi)預(yù)測(cè)電路的集成電路設(shè)計(jì)。二、算子設(shè)計(jì)思想概述回顧集成電路設(shè)計(jì)方法學(xué)的發(fā)展歷程,可以看到當(dāng)集成電路制造工藝進(jìn)入Ium 的時(shí)代,出現(xiàn)了以門(mén)陣列為基本單元的設(shè)計(jì)方法;當(dāng)集成電路制造工藝進(jìn)入0. 5um的時(shí)代, 出現(xiàn)了以標(biāo)準(zhǔn)單元為基本單元的設(shè)計(jì)方法;當(dāng)集成電路制造工藝進(jìn)入0. ISum的時(shí)代,出現(xiàn) 了以IP核為基本單元的設(shè)計(jì)方法。由此可以看出一方面集成電路的設(shè)計(jì)方法學(xué)隨著集成 電路制造工藝的發(fā)展而發(fā)展,另一方面集成電路設(shè)計(jì)方法學(xué)中使用的基本單元(門(mén)、標(biāo)準(zhǔn) 單元、IP核)的單元粒度不斷增大。每次新的基本單元的出現(xiàn),都標(biāo)志著集成電路設(shè)計(jì)方 法革命性的進(jìn)步。
如圖1所示,現(xiàn)有技術(shù)中,集成電路的設(shè)計(jì)通常包括兩部分第一部分是從基于高 級(jí)語(yǔ)言算法描述到RTL級(jí)的描述;第二部分是從RTL級(jí)描述到標(biāo)準(zhǔn)單元ASIC結(jié)構(gòu)或門(mén)陳列 實(shí)現(xiàn)(或其它S-ASIC結(jié)構(gòu))或FPGA結(jié)構(gòu)的實(shí)現(xiàn)過(guò)程。現(xiàn)有技術(shù)中,已有多款比較成熟的 工具支持上述第二部分的實(shí)現(xiàn),實(shí)現(xiàn)過(guò)程基本滿足高效、快捷等要求;然而上述第一部分的 實(shí)現(xiàn)主要仍是由技術(shù)人員根據(jù)自身對(duì)高級(jí)語(yǔ)言的理解,人為地將其轉(zhuǎn)換為RTL級(jí)的描述。 目前的集成電路設(shè)計(jì)一般基于標(biāo)準(zhǔn)單元粒度,由硬件描述語(yǔ)言對(duì)集成電路硬件邏輯進(jìn)行描 述,然而硬件描述語(yǔ)言并不適合直接描述高級(jí)程序語(yǔ)言的程序邏輯和執(zhí)行流程,造成在目 前的集成電路設(shè)計(jì)中,由高級(jí)語(yǔ)言向下層硬件映射的速度所需時(shí)間較長(zhǎng),成為制約集成電 路設(shè)計(jì)速度的瓶頸所在。隨著集成電路制造工進(jìn)入45nm以后,集成電路的設(shè)計(jì)速度滯后于 集成電路制造工藝的發(fā)展速度。因此,對(duì)于集成電路設(shè)計(jì)領(lǐng)域來(lái)說(shuō),提高設(shè)計(jì)速度是當(dāng)前最 為迫切的問(wèn)題之一。因此,可以合理預(yù)見(jiàn)的是,隨著近十年來(lái)集成電路制造工藝的飛速進(jìn)步,尤其是集 成電路制造工藝進(jìn)入納米級(jí)后,更大粒度的基本單元將出現(xiàn)并開(kāi)啟集成電路設(shè)計(jì)的新局 面,以適應(yīng)集成電路制造工藝的飛速發(fā)展。鑒于此,本發(fā)明中提出了一種基于算子集成電路設(shè)計(jì)方,算子是一種粒度大于標(biāo) 準(zhǔn)單元的用于集成電路組成部件的基本單元,基于算子的集成電路設(shè)計(jì)方法將加速集成電 路的設(shè)計(jì)速度,以適應(yīng)集成電路制造工藝的進(jìn)步。算子設(shè)計(jì)方法希望從數(shù)學(xué)上能夠支持算 法的描述,為實(shí)現(xiàn)算法到算子語(yǔ)言、算子結(jié)構(gòu)的自動(dòng)化翻譯提供支撐。算子的特點(diǎn)如下1.粒度更大每個(gè)算子都具有一定功能,它是一種函數(shù)運(yùn)算的符號(hào)表示。整個(gè)算子體系能夠支 持算法描述中的各種功能實(shí)現(xiàn),設(shè)計(jì)人員可以基于算子對(duì)算法進(jìn)行描述和驗(yàn)證;2.支持算法的實(shí)現(xiàn)種類(lèi)完備但是數(shù)量有限的算子能夠支持上層語(yǔ)言描述中對(duì)運(yùn)算、存儲(chǔ)、控制和數(shù) 據(jù)路徑的描述,并且可以基于算子描述進(jìn)行優(yōu)化和驗(yàn)證;3.能夠加速設(shè)計(jì)和驗(yàn)證設(shè)計(jì)人員利用算子完成算法的功能描述后,對(duì)應(yīng)的硬件設(shè)計(jì)也同時(shí)完成。因?yàn)樗?有算子均是預(yù)先全定制的且已被驗(yàn)證正確的單元,因此將縮短設(shè)計(jì)和驗(yàn)證的時(shí)間,設(shè)計(jì)人 員只需要保證基于算子的描述和映射過(guò)程的正確即可,從而將大大加速設(shè)計(jì)和驗(yàn)證過(guò)程。本發(fā)明提出的算子,或者說(shuō)算子單元,可以表示集成電路的硬件邏輯,基于算子的 不同功能,可將算子分為運(yùn)算類(lèi)算子、存儲(chǔ)類(lèi)算子、路徑類(lèi)算子、控制類(lèi)算子、時(shí)鐘類(lèi)算子等 幾類(lèi),這些算子構(gòu)成一套完備的算子體系,能支撐所有算法的實(shí)現(xiàn)。經(jīng)過(guò)設(shè)計(jì),這些基本算 子在面積、功耗、性能等參數(shù)上是最優(yōu)化,它們構(gòu)成了算子單元庫(kù)。并且算子單元還可以組 成算子功能塊,算子功能塊間采用共享MEM鏈接方式進(jìn)行數(shù)據(jù)通信,也可以采用寄存器傳 遞進(jìn)行控制信息傳遞。下面,分別對(duì)組成算子單元庫(kù)的5類(lèi)基本算子的功能做詳細(xì)的說(shuō)明。1、運(yùn)算類(lèi)算子運(yùn)算類(lèi)算子(AU)是用于實(shí)現(xiàn)邏輯運(yùn)算、算術(shù)運(yùn)算或邏輯與算術(shù)混合運(yùn)算的基本 單元,支持算術(shù)邏輯、移位等運(yùn)算功能的實(shí)現(xiàn),實(shí)現(xiàn)這些基本運(yùn)算的算子稱為基本運(yùn)算算 子。并且,針對(duì)不同應(yīng)用可以在基本運(yùn)算算子的基礎(chǔ)上進(jìn)行擴(kuò)展而予以支持,比如媒體處理中相減、取絕對(duì)值、求平均值、固定系數(shù)濾波運(yùn)算等復(fù)雜但很常用的運(yùn)算,實(shí)現(xiàn)這些擴(kuò)展運(yùn) 算的運(yùn)算算子稱為擴(kuò)展運(yùn)算算子,它們由基本運(yùn)算算子搭建而成。圖2. 1為一種運(yùn)算類(lèi)算子-ADDS算子的結(jié)構(gòu)示意圖,它包括用于實(shí)現(xiàn)加減操作的 ADD單元和用于實(shí)現(xiàn)移位操作的<</>>單元。運(yùn)算類(lèi)算子具有可重構(gòu)性,可以為一個(gè)運(yùn)算 類(lèi)算子配置控制位以及多種運(yùn)算功能,控制位用于擇一選擇一種運(yùn)算,也就是說(shuō),運(yùn)算類(lèi)算 子包括算術(shù)邏輯運(yùn)算單元和運(yùn)算配置寄存器,運(yùn)算配置寄存器用于接收和存儲(chǔ)運(yùn)算配置指 令,不同的運(yùn)算配置指令對(duì)應(yīng)不同的算術(shù)邏輯操作,根據(jù)不同應(yīng)用的需求,通過(guò)配置控制位 (運(yùn)算配置寄存器的運(yùn)算配置指令),可以使運(yùn)算算子實(shí)現(xiàn)不同的功能。例如上例中的ADDS 算子,可以通過(guò)控制位X的參數(shù)值實(shí)現(xiàn)多種不同功能,可重構(gòu)算子由于豐富的應(yīng)用功能可 以用在不同的場(chǎng)景中,減少了算子單元庫(kù)中儲(chǔ)存的算子數(shù)。并且可重構(gòu)算子在其執(zhí)行過(guò)程 中還可以通過(guò)改變控制位的方式實(shí)現(xiàn)動(dòng)態(tài)的重構(gòu)。而如果算子的運(yùn)算功能被優(yōu)化固定,則 可以將控制位固定(即固化定制)。2、存儲(chǔ)類(lèi)算子圖2. 2為存儲(chǔ)類(lèi)算子(MU)的基本結(jié)構(gòu)示意圖,存儲(chǔ)類(lèi)算子包括存儲(chǔ)配置寄存器和 存儲(chǔ)單元,存儲(chǔ)單元包括地址產(chǎn)生單元、數(shù)據(jù)存儲(chǔ)器、數(shù)據(jù)產(chǎn)生單元和數(shù)據(jù)輸出控制單元。 存儲(chǔ)配置寄存器可以通過(guò)數(shù)據(jù)輸出控制單元配置存儲(chǔ)算子(MU)的存儲(chǔ)體(各種存儲(chǔ)介質(zhì) 寄存器、RAM等MEM)的寫(xiě)入和/或讀出方式,還可以配置存儲(chǔ)體對(duì)應(yīng)的地址產(chǎn)生單元的工 作方式。根據(jù)地址產(chǎn)生單元生成的地址直接將輸入數(shù)據(jù)存儲(chǔ)到預(yù)定位置,并將需要的數(shù)據(jù) 從存放位置輸出。算法中的不同階段對(duì)數(shù)據(jù)處理的順序和排列是不一樣的,從而使得在每個(gè)階段中 數(shù)據(jù)的存儲(chǔ)格式和方式不同,存儲(chǔ)算子還可以針對(duì)這類(lèi)需求實(shí)現(xiàn)數(shù)據(jù)不同存儲(chǔ)格式和方式 的轉(zhuǎn)換。存儲(chǔ)類(lèi)算子可以支持不同應(yīng)用中基本且常用的存儲(chǔ)格式和轉(zhuǎn)換方式,比如串并轉(zhuǎn) 換、并串轉(zhuǎn)換、隊(duì)列結(jié)構(gòu)、堆棧結(jié)構(gòu)等。3、路徑類(lèi)算子圖2. 3為路徑類(lèi)算子(LU)的通用結(jié)構(gòu)示意圖。路徑類(lèi)算子包括路由配置寄存器 和組成路由選擇單元的交換開(kāi)關(guān)和數(shù)據(jù)寄存器(REG),其中,路由配置寄存器受到控制類(lèi)算 子CU(見(jiàn)下文)的控制,在控制類(lèi)算子的控制作用下控制交換開(kāi)關(guān)按照期望的方式實(shí)現(xiàn)不 同運(yùn)算類(lèi)算子之間的連接。數(shù)據(jù)寄存器用于暫存運(yùn)算類(lèi)算子和存儲(chǔ)類(lèi)算子的輸入輸出數(shù) 據(jù)。即,路徑類(lèi)算子的作用是連接存儲(chǔ)類(lèi)算子與運(yùn)算類(lèi)算子,形成數(shù)據(jù)流結(jié)構(gòu)。其實(shí)現(xiàn)形式 主要有三種多選器、交叉開(kāi)關(guān)和總線。4、控制類(lèi)算子圖2. 4為控制類(lèi)算子(⑶)的通用結(jié)構(gòu)示意圖??刂祁?lèi)算子主要是將配置信息傳 送到相應(yīng)的配置寄存器,配置運(yùn)算類(lèi)算子、存儲(chǔ)類(lèi)算子和路徑類(lèi)算子實(shí)現(xiàn)預(yù)定的功能。艮口, 控制類(lèi)算子的作用是正常控制數(shù)據(jù)流的流動(dòng)。其實(shí)現(xiàn)形式有三種計(jì)數(shù)器、狀態(tài)機(jī)和微指令 字??刂戚敵鰞?nèi)容包括運(yùn)算類(lèi)算子動(dòng)態(tài)重構(gòu)信息、存儲(chǔ)類(lèi)算子AGU的配置信息、路徑類(lèi)算 子的配置信息,實(shí)現(xiàn)對(duì)其他算子的控制。其中微指令字結(jié)構(gòu)包含譯碼器、程序計(jì)數(shù)器、指令 存儲(chǔ)器和流水線控制模塊等??刂祁?lèi)算子通過(guò)執(zhí)行簡(jiǎn)單的配置指令向各功能單元發(fā)送配置 fn息ο5、時(shí)鐘類(lèi)算子
時(shí)鐘類(lèi)算子是驅(qū)動(dòng)和定時(shí)部件,用于產(chǎn)生控制和處理算子的時(shí)鐘信號(hào),時(shí)鐘信號(hào) 包含控制時(shí)鐘起停和控制時(shí)鐘頻率的信號(hào)。以上五類(lèi)算子是實(shí)現(xiàn)以下實(shí)施方式的基礎(chǔ),可以理解的是,上述對(duì)根據(jù)功能將用 于集成電路設(shè)計(jì)中的算子分為五大類(lèi)并非唯一的劃分方式,還可以根據(jù)實(shí)際情況有針對(duì)性 進(jìn)行更寬范圍或更細(xì)范圍的劃分。集成電路(IC)的算子設(shè)計(jì)過(guò)程可以概括為將C、Matlab等高級(jí)語(yǔ)言的算法描述 轉(zhuǎn)化為算子描述并在算子結(jié)構(gòu)上進(jìn)行優(yōu)化設(shè)計(jì)的過(guò)程。由于算子已經(jīng)預(yù)先設(shè)計(jì)并驗(yàn)證,因 此算法的算子描述可以快速或者自動(dòng)完成設(shè)計(jì)驗(yàn)證過(guò)程。對(duì)于特定領(lǐng)域,比如通信或媒體, 可以設(shè)計(jì)一些更好支撐算法實(shí)現(xiàn)的擴(kuò)展算子或算子IP,從而更大程度地加速和優(yōu)化設(shè)計(jì)過(guò)程。對(duì)于本發(fā)明的基于算子單元結(jié)構(gòu)的用于視頻編碼器的幀內(nèi)預(yù)測(cè)電路的實(shí)現(xiàn)方法 進(jìn)行詳細(xì)的說(shuō)明。本發(fā)明提出的用于視頻編碼器的幀內(nèi)預(yù)測(cè)電路的實(shí)現(xiàn)方法,其主要包括將高級(jí)程序語(yǔ)言算法描述的視頻編碼器的幀內(nèi)預(yù)測(cè)電路的各個(gè)函數(shù)映射成由算 子單元構(gòu)成的硬件邏輯描述;并將由算子單元構(gòu)成的硬件邏輯描述生成幀內(nèi)預(yù)測(cè)電路的硬 件集成電路。由于算子單元構(gòu)成的硬件邏輯描述對(duì)應(yīng)于現(xiàn)有技術(shù)中的RTL級(jí)的描述,因此,系 統(tǒng)工程師利用現(xiàn)有轉(zhuǎn)化工具,就可以將由算子單元構(gòu)成的硬件邏輯描述生成幀內(nèi)預(yù)測(cè)電路 的硬件集成電路。如此,創(chuàng)造了一種從計(jì)算機(jī)語(yǔ)言到集成電路下層硬件電路的映射工具,標(biāo) 準(zhǔn)化地實(shí)現(xiàn)了集成電路從C或MATLAB等高級(jí)語(yǔ)言生成下層硬件的過(guò)程,實(shí)現(xiàn)起來(lái)方便快 捷。系統(tǒng)工程師可以利用該種映射工具,來(lái)設(shè)計(jì)幀內(nèi)預(yù)測(cè)電路,在充分考慮各種幀內(nèi)預(yù)測(cè)模 式以及保證不損傷高清視頻編碼的前提下,能夠加快設(shè)計(jì)幀內(nèi)預(yù)測(cè)電路的下層硬件集成電 路的速度。將該種幀內(nèi)預(yù)測(cè)電路應(yīng)用在視頻編碼器內(nèi),在一定程度上推動(dòng)了高清視頻編碼 技術(shù)的發(fā)展。在實(shí)施例中,本發(fā)明提出的用于視頻編碼器的幀內(nèi)預(yù)測(cè)電路的實(shí)現(xiàn)方法,在將高 級(jí)程序語(yǔ)言算法描述的視頻編碼器的幀內(nèi)預(yù)測(cè)電路的各個(gè)函數(shù)映射成由算子單元構(gòu)成的 硬件邏輯描述過(guò)程中,包括以下步驟程序分析步驟、數(shù)據(jù)控制流圖生成步驟,算子時(shí)空?qǐng)D 生成步驟,時(shí)序約束步驟,聚類(lèi)壓縮步驟,下層硬件映射步驟,下面分別對(duì)每一個(gè)步驟進(jìn)行 詳細(xì)的分析說(shuō)明。1)程序分析步驟讀取幀內(nèi)預(yù)測(cè)電路的各個(gè)函數(shù)的高級(jí)程序語(yǔ)言算法程序,根據(jù) 該高級(jí)程序語(yǔ)言規(guī)則從高級(jí)程序語(yǔ)言算法程序中識(shí)別出被映射的執(zhí)行對(duì)象和參數(shù)對(duì)象,具 體包括首先從幀內(nèi)預(yù)測(cè)的高級(jí)程序語(yǔ)言算法程序中識(shí)別出被映射的執(zhí)行對(duì)象和參數(shù)對(duì) 象,執(zhí)行對(duì)象包括運(yùn)算指令和/或控制指令,參數(shù)對(duì)象包括輸入數(shù)據(jù)、輸出數(shù)據(jù)和中間數(shù)據(jù) 中的至少一種。然后分析函數(shù)調(diào)用關(guān)系,識(shí)別出函數(shù)以及函數(shù)運(yùn)行中涉及的參數(shù)對(duì)象并判 斷函數(shù)運(yùn)行中是否調(diào)用子函數(shù);若調(diào)用子函數(shù),則分析子函數(shù)的調(diào)用關(guān)系,識(shí)別出子函數(shù)以 及子函數(shù)運(yùn)行中涉及的參數(shù)對(duì)象并判斷子函數(shù)運(yùn)行中是否又調(diào)用其它子函數(shù)。以此類(lèi)推, 直到找到底層函數(shù)運(yùn)行中涉及到的參數(shù)對(duì)象、運(yùn)算指令等。其中,運(yùn)算指令主要用于描述程 序中執(zhí)行的數(shù)學(xué)運(yùn)算,而控制指令則用于保證運(yùn)算指令的正常運(yùn)行,例如,控制指令控制著運(yùn)算指令是否需要進(jìn)行循環(huán)運(yùn)算等。該步驟的主要作用在于函數(shù)分解,是將C、JaVa、Matlab 等高級(jí)語(yǔ)言描述形式的函數(shù)劃分為若干個(gè)子函數(shù)的過(guò)程。函數(shù)分解主要分析函數(shù)調(diào)用關(guān) 系、函數(shù)結(jié)構(gòu)體和變量、子函數(shù)的基本運(yùn)算等信息,以便以上述的各類(lèi)算子實(shí)現(xiàn)對(duì)函數(shù)的映 射。在本發(fā)明的實(shí)施例中,描述幀內(nèi)預(yù)測(cè)電路的各個(gè)函數(shù)的高級(jí)程序語(yǔ)言程序具體為 C語(yǔ)言程序中X^4_maCr0bl0Ck_analySe_Iframe函數(shù)。需要說(shuō)明的一點(diǎn)是,描述幀內(nèi)預(yù)測(cè) 電路的高級(jí)語(yǔ)言程序并不局限于X264_macroblock_analyse_Iframe函數(shù)。圖3所示的是X^4_macroblock_analyse_Iframe函數(shù)算法描述中的函數(shù)調(diào)用關(guān) 系。其中,X^4_maCr0bl0Ck_analySe_Iframe用于選擇最佳幀內(nèi)預(yù)測(cè)模式。根據(jù)幀內(nèi)預(yù)測(cè) 實(shí)現(xiàn)算法可知,若要對(duì)當(dāng)前幀進(jìn)行預(yù)測(cè),則需要獲得相鄰塊的參考幀,再根據(jù)預(yù)測(cè)模式采用 不同的預(yù)測(cè)方法對(duì)當(dāng)前幀進(jìn)行預(yù)測(cè)。因此,幀內(nèi)預(yù)測(cè)電路包括三大函數(shù),即用于控制圖像傳 輸速率的碼率控制函數(shù),用于對(duì)幀內(nèi)預(yù)測(cè)進(jìn)行分析的初始化函數(shù),以及用于計(jì)算當(dāng)前塊的 幀內(nèi)預(yù)測(cè)值的幀內(nèi)預(yù)測(cè)函數(shù)。幀內(nèi)預(yù)測(cè)函數(shù)是整個(gè)幀內(nèi)預(yù)測(cè)電路的核心函數(shù),根據(jù)參考幀在不同的預(yù)測(cè)模式下 采用不同的預(yù)測(cè)方法,用于計(jì)算當(dāng)前幀的幀內(nèi)預(yù)測(cè)值。在C程序語(yǔ)言中,一個(gè)主函數(shù)通常會(huì)調(diào)用多個(gè)函數(shù),而函數(shù)又會(huì)調(diào)用子函數(shù)。在 此,將X264_maCr0bl0Ck_analySe_Iframe函數(shù)定義為主函數(shù),將該主函數(shù)直接調(diào)用的函數(shù) 稱為函數(shù),將該函數(shù)調(diào)用的函數(shù)稱為子函數(shù)。當(dāng)然,子函數(shù)還可以調(diào)用其它的子函數(shù)。具 體地,在實(shí)施例中,根據(jù)該C語(yǔ)言程序,識(shí)別出該主函數(shù)中需要被映射的執(zhí)行對(duì)象和參數(shù)對(duì) 象,包括以下步驟對(duì)X264_macroblock_analyse_Ifram函數(shù)進(jìn)行分析,查找出函數(shù)以及 函數(shù)運(yùn)行中涉及的參數(shù)對(duì)象并判斷函數(shù)運(yùn)行中是否調(diào)用子函數(shù)。具體到實(shí)施例中的主函 數(shù)調(diào)用的函數(shù)來(lái)說(shuō),函數(shù)包括用于控制參考幀傳輸速率的碼率控制函數(shù),對(duì)應(yīng)于圖3中的 X264_ratecontrol_qp,用于對(duì)幀內(nèi)預(yù)測(cè)進(jìn)行分析的初始化函數(shù),對(duì)應(yīng)于圖3中的x264_mb_ analyse_init_IFrame,以及用于對(duì)參考幀進(jìn)行幀內(nèi)預(yù)測(cè)的幀內(nèi)預(yù)測(cè)函數(shù),對(duì)應(yīng)于圖3中的 x264_mb_analyse_intra ;并判斷函數(shù)的是否有調(diào)用子函數(shù);在此,以16X16劃分下的預(yù)測(cè) 模式為例,幀內(nèi)預(yù)測(cè)函數(shù)又調(diào)用了 16X16劃分下的幀內(nèi)預(yù)測(cè)函數(shù)predict_16X16_p,16X16 劃分下的可用性檢測(cè)函數(shù)predict_16xl6_mode_available,以及代價(jià)函數(shù)pixf. satd。如表1所示,是分析出來(lái)的predict_16X16_p函數(shù)運(yùn)行中涉及到的輸入輸出數(shù)據(jù); 如表2所示,是在程序分析步驟中分析出來(lái)的prediCt_16X16_p函數(shù)運(yùn)行中涉及到的中間 數(shù)據(jù)和常數(shù)。表lpredict_16xl6_p函數(shù)的輸入、輸出數(shù)據(jù)信號(hào)名稱數(shù)據(jù)類(lèi)型方向說(shuō)明srcuint8_t*IN/OUT//PIXEL_CURRENT&PIXEL_PREDICTi—strideintINIl 一行寬度表2predict_16xl6_p函數(shù)的中間數(shù)據(jù)和常數(shù)
權(quán)利要求
1.一種用于視頻編碼器的幀內(nèi)預(yù)測(cè)電路的實(shí)現(xiàn)方法,其特征在于,包括將高級(jí)程序語(yǔ)言算法描述的視頻編碼器的幀內(nèi)預(yù)測(cè)電路的各個(gè)函數(shù)映射成由算子單 元構(gòu)成的硬件邏輯描述;由所述算子單元構(gòu)成的硬件邏輯描述生成幀內(nèi)預(yù)測(cè)電路的硬件集 成電路。
2.如權(quán)利要求1所述的方法,其特征在于,將高級(jí)程序語(yǔ)言算法描述的視頻編碼器的 幀內(nèi)預(yù)測(cè)電路的各個(gè)函數(shù)映射成由算子單元構(gòu)成的硬件邏輯描述包括如下步驟程序分析步驟讀取幀內(nèi)預(yù)測(cè)電路的各個(gè)函數(shù)的高級(jí)程序語(yǔ)言算法程序,根據(jù)該高級(jí) 程序語(yǔ)言規(guī)則從所述高級(jí)程序語(yǔ)言算法程序中識(shí)別出被映射的執(zhí)行對(duì)象和參數(shù)對(duì)象;數(shù)據(jù)控制流圖生成步驟將識(shí)別出的執(zhí)行對(duì)象和參數(shù)對(duì)象映射成描述幀內(nèi)預(yù)測(cè)電路算 法的數(shù)據(jù)控制流圖中的相應(yīng)節(jié)點(diǎn);算子時(shí)空?qǐng)D生成步驟根據(jù)數(shù)據(jù)控制流圖中的各個(gè)節(jié)點(diǎn)的功能處理,從算子單元庫(kù)中 取出對(duì)應(yīng)功能的至少一個(gè)算子單元,將所述數(shù)據(jù)控制流圖轉(zhuǎn)換成由算子單元組成的算子時(shí) 空?qǐng)D;時(shí)序約束步驟根據(jù)用戶規(guī)格需求和目標(biāo)集成電路工藝的要求確定出總時(shí)序約束,對(duì) 算子時(shí)空?qǐng)D中的每個(gè)算子單元標(biāo)注時(shí)間,對(duì)算子時(shí)空?qǐng)D的每個(gè)層級(jí)進(jìn)行時(shí)序約束;聚類(lèi)壓縮步驟根據(jù)時(shí)間標(biāo)注對(duì)算子時(shí)空?qǐng)D進(jìn)行空間上的聚類(lèi)壓縮,并使幀內(nèi)預(yù)測(cè)電 路總體算法的執(zhí)行時(shí)間最接近于總時(shí)序約束;下層硬件映射步驟將聚類(lèi)壓縮后的算子時(shí)空?qǐng)D映射成由算子單元構(gòu)成的硬件邏輯描述。
3.如權(quán)利要求2所述的方法,其特征在于,所述函數(shù)包括用于控制參考幀傳輸速率的 碼率控制函數(shù),用于對(duì)幀內(nèi)預(yù)測(cè)進(jìn)行分析的初始化函數(shù),以及用于對(duì)參考幀進(jìn)行幀內(nèi)預(yù)測(cè) 的幀內(nèi)預(yù)測(cè)函數(shù)。
4.如權(quán)利要求3所述的方法,其特征在于,所述程序分析步驟包括從所述幀內(nèi)預(yù)測(cè)的高級(jí)程序語(yǔ)言算法程序中識(shí)別出被映射的執(zhí)行對(duì)象和參數(shù)對(duì)象,所 述執(zhí)行對(duì)象包括運(yùn)算指令和/或控制指令,所述參數(shù)對(duì)象包括輸入數(shù)據(jù)、輸出數(shù)據(jù)和中間 數(shù)據(jù)中的至少一種;分析函數(shù)調(diào)用關(guān)系,識(shí)別出函數(shù)以及函數(shù)運(yùn)行中涉及的參數(shù)對(duì)象并判斷函數(shù)運(yùn)行中是 否調(diào)用子函數(shù);若調(diào)用子函數(shù),則分析子函數(shù)的調(diào)用關(guān)系,識(shí)別出子函數(shù)以及子函數(shù)運(yùn)行中 涉及的參數(shù)對(duì)象并判斷子函數(shù)運(yùn)行中是否又調(diào)用其它子函數(shù)。
5.如權(quán)利要求4所述的方法,其特征在于,在所述數(shù)據(jù)控制流圖生成步驟中,將所述運(yùn) 算指令映射為處理節(jié)點(diǎn),將所述控制指令映射為用于標(biāo)識(shí)狀態(tài)、狀態(tài)轉(zhuǎn)移條件及狀態(tài)控制 信號(hào)的控制流,將所述參數(shù)對(duì)象映射為數(shù)據(jù)流上的存儲(chǔ)節(jié)點(diǎn)。
6.如權(quán)利要求5所述的方法,其特征在于,所述算子時(shí)空?qǐng)D生成步驟包括將數(shù)據(jù)控制流圖根據(jù)其數(shù)據(jù)流相關(guān)性展開(kāi);根據(jù)展開(kāi)后的各節(jié)點(diǎn)所進(jìn)行的功能處理從預(yù)先建立的算子單元庫(kù)中取出對(duì)應(yīng)功能的 至少一個(gè)算子單元,將所述處理節(jié)點(diǎn)映射為運(yùn)算類(lèi)算子,將所述控制流映射為控制類(lèi)算子 和/或路徑類(lèi)算子,將所述存儲(chǔ)節(jié)點(diǎn)映射為存儲(chǔ)類(lèi)算子。
7.如權(quán)利要求6所述的方法,其特征在于,所述時(shí)序約束步驟包括根據(jù)數(shù)據(jù)控制流 圖中數(shù)據(jù)流結(jié)構(gòu)對(duì)算子時(shí)空?qǐng)D的每個(gè)層級(jí)進(jìn)行時(shí)序約束;如果所述數(shù)據(jù)流結(jié)構(gòu)為并行數(shù)據(jù)流,則將總時(shí)序約束平分到對(duì)應(yīng)的時(shí)空?qǐng)D中的每個(gè)算子層級(jí),并將每個(gè)算子層級(jí)的時(shí)序約 束平分到該算子層級(jí)中的每一個(gè)算子單元;如果所述數(shù)據(jù)控制流圖中的數(shù)據(jù)流為串行數(shù)據(jù) 流,則將各算子層級(jí)中最長(zhǎng)運(yùn)算路徑所映射的算子單元所對(duì)應(yīng)的時(shí)序占總算子層級(jí)中最長(zhǎng) 運(yùn)算路徑所映射的算子單元所對(duì)應(yīng)的時(shí)序總和的比例來(lái)分配。
8.如權(quán)利要求7所述的方法,其特征在于,所述聚類(lèi)壓縮步驟包括聚類(lèi)步驟,用于在算子時(shí)空?qǐng)D中查找出屬性相同的運(yùn)算類(lèi)算子和/或存儲(chǔ)屬性相同的 存儲(chǔ)類(lèi)算子;壓縮步驟,用于根據(jù)時(shí)間標(biāo)注對(duì)運(yùn)算屬性相同的運(yùn)算類(lèi)算子在空間上進(jìn)行合并壓縮和 /或?qū)⒋鎯?chǔ)屬性相同的存儲(chǔ)類(lèi)算子在空間上進(jìn)行合并壓縮;算子復(fù)用步驟,用于引入控制類(lèi)算子,對(duì)壓縮后的運(yùn)算類(lèi)算子和/或存儲(chǔ)類(lèi)運(yùn)算算子 生成相應(yīng)配置指令,實(shí)現(xiàn)運(yùn)算類(lèi)算子和/或存儲(chǔ)類(lèi)算子的復(fù)用。
9.一種用于視頻編碼器的幀內(nèi)預(yù)測(cè)電路,其特征在于,包括用于控制參考幀傳輸速率 的碼率控制模塊,用于幀內(nèi)預(yù)測(cè)分析的函數(shù)分析模塊,以及用于對(duì)參考幀進(jìn)行幀內(nèi)預(yù)測(cè)的 幀內(nèi)預(yù)測(cè)模塊;所述各模塊由算子單元組成。
10.如權(quán)利要求7所述的方法,其特征在于,所述幀內(nèi)預(yù)測(cè)模塊包括亮度16X16劃分下 的幀內(nèi)預(yù)測(cè)子模塊,色度8X8劃分下的幀內(nèi)預(yù)測(cè)子模塊以及亮度4X4劃分下的幀內(nèi)預(yù)測(cè)子 模塊。
11.如權(quán)利要求10所述的方法,其特征在于,所述亮度16X16劃分下的幀內(nèi)預(yù)測(cè)子模塊 包括用于檢測(cè)預(yù)測(cè)模式是否可用的16X16模式檢測(cè)單元,用于對(duì)所述參考幀進(jìn)行幀內(nèi)預(yù)測(cè) 的16X16幀內(nèi)預(yù)測(cè)單元,以及用于計(jì)算幀內(nèi)預(yù)測(cè)代價(jià)的16X16代價(jià)計(jì)算單元;所述色度8X8 劃分下的幀內(nèi)預(yù)測(cè)子模塊,包括用于檢測(cè)預(yù)測(cè)模式是否可用的8X8模式檢測(cè)單元,用于對(duì) 所述參考幀進(jìn)行幀內(nèi)預(yù)測(cè)的8X8幀內(nèi)預(yù)測(cè)單元,以及用于計(jì)算幀內(nèi)預(yù)測(cè)代價(jià)的8X8代價(jià)計(jì) 算單元;對(duì)于亮度4X4劃分下的幀內(nèi)預(yù)測(cè)子模塊,包括用于檢測(cè)預(yù)測(cè)模式是否可用的4X4 模式檢測(cè)單元,用于對(duì)所述參考幀進(jìn)行幀內(nèi)預(yù)測(cè)的4X4幀內(nèi)預(yù)測(cè)單元,用于計(jì)算幀內(nèi)預(yù)測(cè) 代價(jià)的4X4代價(jià)計(jì)算單元,以及用于量化所述參考幀的量化環(huán)路編碼單元。
12.如權(quán)利要求11所述的方法,其特征在于,所述16X16幀內(nèi)預(yù)測(cè)單元包括16X16DC預(yù) 測(cè)模式子單元,16X16水平預(yù)測(cè)模式子單元,16X16垂直預(yù)測(cè)模式子單元,16X16平面預(yù)測(cè)垂 直子單元;所述8X8幀內(nèi)預(yù)測(cè)單元,包括8X8DC預(yù)測(cè)模式子單元,8X8水平預(yù)測(cè)模式子單元, 8X8垂直預(yù)測(cè)模式子單元,8X8平面預(yù)測(cè)垂直子單元;所述4X4幀內(nèi)預(yù)測(cè)單元包括4X4垂 直預(yù)測(cè)模式子單元,4X4水平預(yù)測(cè)模式子單元,4X 4DC預(yù)測(cè)模式子單元,4X 4下左對(duì)角線預(yù) 測(cè)模式子單元,4X4右對(duì)角線預(yù)測(cè)模式子單元,4X4右垂直預(yù)測(cè)模式子單元,4X4下水平 預(yù)測(cè)模式子單元,4 X 4左垂直預(yù)測(cè)模式子單元以及4 X 4上水平預(yù)測(cè)模式子單元。
全文摘要
本發(fā)明公開(kāi)了一種用于視頻編碼器的幀內(nèi)預(yù)測(cè)電路的實(shí)現(xiàn)方法,所述方法包括將高級(jí)程序語(yǔ)言算法描述的視頻編碼器的幀內(nèi)預(yù)測(cè)電路的各個(gè)函數(shù)映射成由算子單元構(gòu)成的硬件邏輯描述;由所述算子單元構(gòu)成的硬件邏輯描述生成幀內(nèi)預(yù)測(cè)電路的硬件集成電路。應(yīng)用本發(fā)明,使得系統(tǒng)工程師在保證不損傷數(shù)字高清視頻編碼的前提下,根據(jù)足以支撐描述高級(jí)語(yǔ)言算法的完備算子單元庫(kù),通過(guò)設(shè)計(jì)表示硬件邏輯的算子單元,能夠以較快的速度設(shè)計(jì)出幀內(nèi)預(yù)測(cè)電路的硬件集成電路。并且,該種幀內(nèi)預(yù)測(cè)電路還可以與視頻編碼器內(nèi)的其它專(zhuān)用集成電路ASIC部分進(jìn)行并行流水操作,加快了視頻編碼器的ASIC的設(shè)計(jì)速度。
文檔編號(hào)H04N7/26GK102055980SQ20101062000
公開(kāi)日2011年5月11日 申請(qǐng)日期2010年12月31日 優(yōu)先權(quán)日2010年12月31日
發(fā)明者張興, 彭建宏, 王新安, 胡子一 申請(qǐng)人:北京大學(xué)深圳研究生院