林志堅(jiān) 丁永強(qiáng) 楊秀芝 吳林煌
HEVC幀內(nèi)率失真優(yōu)化預(yù)測(cè)模式的并行流水線硬件設(shè)計(jì)
林志堅(jiān) 丁永強(qiáng) 楊秀芝 吳林煌?
(福州大學(xué) 物理與信息工程學(xué)院,福建 福州 350108)
近年來(lái),隨著人們對(duì)視頻數(shù)據(jù)需求的不斷增加,視頻的分辨率和幀率也在不斷地提高,而實(shí)時(shí)視頻序列的壓縮編碼速度往往受到幀率和分辨率的影響,分辨率和幀率越大,編碼所需要的時(shí)間越長(zhǎng)。為了實(shí)現(xiàn)更高分辨率和更高幀率的視頻序列實(shí)時(shí)壓縮編碼,文中設(shè)計(jì)了一種新的幀內(nèi)率失真優(yōu)化預(yù)測(cè)模式的并行流水線硬件架構(gòu),該架構(gòu)支持最大64×64編碼樹(shù)單元的幀內(nèi)預(yù)測(cè)編碼。首先設(shè)計(jì)了9路預(yù)測(cè)模式并行方案;然后,按照Z(yǔ)型掃描順序?qū)崿F(xiàn)以4×4塊為基本處理單元的流水線硬件架構(gòu),并復(fù)用32×32預(yù)測(cè)單元的預(yù)測(cè)數(shù)據(jù),用以代替64×64預(yù)測(cè)單元的預(yù)測(cè)數(shù)據(jù),減少運(yùn)算量;最后,基于該流水線架構(gòu),提出了一種新的哈達(dá)瑪變換電路,用以實(shí)現(xiàn)高效的流水線處理。實(shí)驗(yàn)結(jié)果表明:在Altera Arria 10系列的現(xiàn)場(chǎng)可編程門陣列上,該9路模式并行架構(gòu)僅占用75 kb的查找表和55 kb的寄存器資源,主頻可以達(dá)到207 MHz,完成一個(gè)64×64編碼樹(shù)單元的預(yù)測(cè)僅需要4 096個(gè)時(shí)鐘周期,最大能夠支持1 080 P分辨率99 f/s全I(xiàn)幀的實(shí)時(shí)編碼;與已有設(shè)計(jì)方案相比,文中方案能夠用更小的電路面積實(shí)現(xiàn)更高幀率的1 080 P實(shí)時(shí)視頻編碼。
幀內(nèi)預(yù)測(cè);現(xiàn)場(chǎng)可編程門陣列;模式并行;高效視頻編碼
近年來(lái),隨著電子信息技術(shù)的發(fā)展,基于視頻的數(shù)據(jù)流量呈現(xiàn)爆炸性增長(zhǎng),如視頻分辨率從常用的720 P(1 280×720)增長(zhǎng)到8 K(7 680×4 320),幀率從30 f/s增長(zhǎng)到60 f/s乃至更高。在高質(zhì)量視頻的高速傳輸需求下,視頻編碼聯(lián)合協(xié)作小組提出了新一代高效視頻編碼標(biāo)準(zhǔn)(HEVC)。相比于H.264,HEVC對(duì)高清和超高清等視頻編碼壓縮處理有更加出色的表現(xiàn)[1]。在相同視頻質(zhì)量條件下,HEVC編碼效率是H.264的兩倍[2],但其編碼塊劃分采用了更加靈活的四叉樹(shù)方法,且?guī)瑑?nèi)預(yù)測(cè)模式從9種增加到了35種。這增加了幀內(nèi)預(yù)測(cè)率失真優(yōu)化(RDO)的計(jì)算復(fù)雜度,不利于硬件實(shí)現(xiàn)。因此,面向硬件的幀內(nèi)RDO架構(gòu)設(shè)計(jì)是當(dāng)前HEVC幀內(nèi)預(yù)測(cè)硬件設(shè)計(jì)研究的重點(diǎn)。
對(duì)于HEVC幀內(nèi)預(yù)測(cè)的硬件設(shè)計(jì)研究,Kim等[3]提出了通過(guò)哈達(dá)瑪變換計(jì)算出的絕對(duì)變換差之和(SATD)估測(cè)最佳預(yù)測(cè)模式的方法,降低了運(yùn)算的復(fù)雜度,但預(yù)測(cè)精度較低;Kalali等[4]提出了近似預(yù)測(cè)的方法,用同一組參考像素預(yù)測(cè)多行像素,減少了運(yùn)算量,但電路通用性較差;Shen等[5]提出了一種基于量化變換塊系數(shù)的線性RDO算法,該算法的計(jì)算復(fù)雜度相對(duì)較低,但硬件實(shí)現(xiàn)上難度較大;Xu等[6]提出了一種面向硬件的快速編碼單元?jiǎng)澐炙惴ǎ撍惴ú焕趯?shí)現(xiàn)全流水線設(shè)計(jì);Zhang等[7]提出了4路不同尺寸預(yù)測(cè)單元的并行預(yù)測(cè)方法,提高了運(yùn)算速度,但電路結(jié)構(gòu)較為復(fù)雜,且占用了較多的數(shù)字信號(hào)處理(DSP)資源;楊賀等[8]提出了對(duì)64×64預(yù)測(cè)單元和32×32預(yù)測(cè)單元進(jìn)行1/4和1/2下采樣的設(shè)計(jì)思想,減少了運(yùn)算量和電路資源消耗,但通過(guò)下采樣預(yù)測(cè)的可靠性不高,有一定的誤差,且運(yùn)算所需時(shí)鐘周期數(shù)較多;Min等[9]提出了一種新的編碼掃描順序,用于解決編碼塊之間的數(shù)據(jù)依賴性,這種方法有利于進(jìn)行全流水線式設(shè)計(jì)。Lu等[10]提出了一種SATD硬件計(jì)算架構(gòu),可以將各種預(yù)測(cè)模式得出的殘差連續(xù)輸入,實(shí)現(xiàn)數(shù)據(jù)的流水線處理,每個(gè)4×4預(yù)測(cè)單元僅需要4個(gè)時(shí)鐘即可得出SATD值,但該架構(gòu)只支持4×4預(yù)測(cè)單元的計(jì)算。
為了能用更小的電路面積實(shí)現(xiàn)1 080 P高幀率的實(shí)時(shí)視頻編碼,文中使用現(xiàn)場(chǎng)可編程門陣列(FPGA)進(jìn)行設(shè)計(jì)實(shí)現(xiàn),提出了一種HEVC幀內(nèi)率失真優(yōu)化預(yù)測(cè)模式的并行流水線硬件架構(gòu)。首先,提出了9路預(yù)測(cè)模式并行方案,使預(yù)測(cè)電路在設(shè)計(jì)時(shí)能夠節(jié)省運(yùn)算單元、寄存器、查找表(LUT)的使用,以提高硬件利用率,同時(shí)更利于最佳預(yù)測(cè)模式選擇;接著,設(shè)計(jì)高效的流水線硬件架構(gòu),采用幀內(nèi)RDO數(shù)據(jù)復(fù)用策略,用4個(gè)32×32預(yù)測(cè)單元的預(yù)測(cè)數(shù)據(jù)代替64×64預(yù)測(cè)單元的預(yù)測(cè)數(shù)據(jù),實(shí)現(xiàn)數(shù)據(jù)復(fù)用,以減少計(jì)算量和硬件面積;然后,設(shè)計(jì)高效的哈達(dá)瑪變換架構(gòu),實(shí)現(xiàn)4×4和8×8的哈達(dá)瑪變換功能;最后對(duì)文中設(shè)計(jì)方案和現(xiàn)有相關(guān)方案進(jìn)行了性能比較。
為了更好地利用圖像空域的相關(guān)性來(lái)提高預(yù)測(cè)準(zhǔn)確度,HEVC引入了編碼樹(shù)單元的概念[11],并采用四叉樹(shù)的方法進(jìn)行分割。在HEVC幀內(nèi)預(yù)測(cè)時(shí),其預(yù)測(cè)單元分割尺寸包括4×4、8×8、16×16、32×32和64×64[12],每個(gè)預(yù)測(cè)單元支持35個(gè)預(yù)測(cè)模式[3]。HEVC的35個(gè)幀內(nèi)預(yù)測(cè)中包含0號(hào)Planar模式和用于處理平滑區(qū)域的1號(hào)直流(DC)模式,以及用于處理紋理區(qū)域的33種角度預(yù)測(cè)模式,其33個(gè)角度方向和編號(hào)如圖1所示[13]。
圖1 幀內(nèi)33個(gè)角度預(yù)測(cè)模式
HEVC在進(jìn)行幀內(nèi)RDO時(shí),分為粗選和細(xì)選兩個(gè)階段。粗選是將計(jì)算的35個(gè)預(yù)測(cè)模式對(duì)應(yīng)的殘差進(jìn)行哈達(dá)瑪變換,進(jìn)而計(jì)算SATD;通過(guò)較為簡(jiǎn)單但精度不高的算法計(jì)算出對(duì)應(yīng)預(yù)測(cè)模式的編碼代價(jià),選出最有可能的最佳預(yù)測(cè)模式;然后參考相鄰預(yù)測(cè)單元的最佳預(yù)測(cè)模式生成候選模式列表,之后進(jìn)入細(xì)選階段。在細(xì)選過(guò)程中,對(duì)候選模式列表中的各個(gè)候選預(yù)測(cè)模式進(jìn)行全流程的編碼,即對(duì)殘差進(jìn)行后續(xù)的變換量化熵編碼,計(jì)算出編碼的比特?cái)?shù),同時(shí)進(jìn)行反變換反量化計(jì)算編碼的失真系數(shù),由此計(jì)算對(duì)應(yīng)的預(yù)測(cè)模式的編碼代價(jià),選出編碼效果最好的預(yù)測(cè)模式,作為最終的最佳預(yù)測(cè)模式。
在進(jìn)行幀內(nèi)RDO的硬件設(shè)計(jì)時(shí),由于細(xì)選過(guò)程非常復(fù)雜,且存在計(jì)算回路,不利于流水線設(shè)計(jì),往往選擇只進(jìn)行粗選而不進(jìn)行細(xì)選,以提高硬件編碼速度。
為了達(dá)到更高幀率的1 080 P實(shí)時(shí)視頻編碼設(shè)計(jì)目標(biāo),文中提出了預(yù)測(cè)模式并行和數(shù)據(jù)復(fù)用的方案,以提高硬件計(jì)算速度。為了最大化壓縮設(shè)計(jì)的硬件面積,文中提出了新的硬件流水線處理架構(gòu)。在該硬件架構(gòu)下,為了大幅降低電路面積,文中提出了一種高效的哈達(dá)瑪變換架構(gòu)。該架構(gòu)可以用很小的電路面積實(shí)現(xiàn)4×4和8×8哈達(dá)瑪變換,電路在工作時(shí),能夠充分地利用運(yùn)算單元。
不同的預(yù)測(cè)模式對(duì)同一個(gè)預(yù)測(cè)塊的預(yù)測(cè)精度是不同的。在計(jì)算每個(gè)預(yù)測(cè)單元的35個(gè)預(yù)測(cè)模式時(shí),文中從模式并行的角度來(lái)提高硬件計(jì)算的吞吐量。但如果沒(méi)有合理安排模式并行的策略,則會(huì)對(duì)電路面積造成極大的浪費(fèi),甚至影響計(jì)算準(zhǔn)確度?,F(xiàn)有的模式并行相關(guān)設(shè)計(jì),如文獻(xiàn)[14]采用的4路模式并行,沒(méi)有針對(duì)模式并行對(duì)電路資源的使用作一些詳細(xì)的分析;文獻(xiàn)[15]采用的19路模式并行,雖然對(duì)于乘法計(jì)算采用移位相加的方式實(shí)現(xiàn),節(jié)省了DSP資源,但由于模式并行度太高,為了降低整體電路面積,采用了4×4下采樣的計(jì)算方法,其哈達(dá)瑪變換僅支持4×4大小,計(jì)算準(zhǔn)確度較低。
對(duì)于35個(gè)模式的并行處理,文中采用一次處理一個(gè)4×4像素塊的策略,單次處理的數(shù)據(jù)量與文獻(xiàn)[14]的一行16個(gè)像素一致,而文獻(xiàn)[14]的4路并行處理僅能達(dá)到1 080 P分辨率30 f/s的速度,若要實(shí)現(xiàn)60 f/s以上的速度,則至少需要8路模式并行。不同的并行度完成所有模式的計(jì)算所需要的計(jì)算次數(shù)如表1所示。從表中可見(jiàn),完成35個(gè)預(yù)測(cè)模式的8路并行需要計(jì)算5次,4路并行需要計(jì)算9次,其編碼速度實(shí)際上并不能相對(duì)4路并行翻一倍,至少需要設(shè)計(jì)9路模式并行才能實(shí)現(xiàn)60 f/s以上的1 080 P視頻編碼,若要再提升編碼速度,則至少需要增加3路模式的并行,相當(dāng)于在9路并行的基礎(chǔ)上增加了三分之一的電路面積。綜合考慮電路面積和編碼速度,選擇9路模式并行設(shè)計(jì),是平衡編碼速度與電路面積的最佳選擇,因此文中提出了如表2所示的9路預(yù)測(cè)模式并行的設(shè)計(jì)方案。
表1 模式并行度與計(jì)算次數(shù)的關(guān)系
Table 1 Relationship between mode parallelism and number of calculations
并行度計(jì)算次數(shù) 并行度計(jì)算次數(shù) 135 7~85 218 9~114 312 12~173 49 18~342 57 351 66
表2 模式并行方案
Table 2 Mode-parallel scheme
模式批次模式號(hào) 第1路第2路第3路第4路第5路第6路第7路第8路第9路 12345678910 2181716151413121126 318192021222324250 434333231302928271
在文中的9路模式并行方案下進(jìn)行參考像素濾波時(shí),根據(jù)不同預(yù)測(cè)塊尺寸下各模式的濾波情況(如表3所示),可以讓第2~7路共同使用一個(gè)濾波選擇電路,從而減小濾波選擇電路面積。
表3 不同尺寸預(yù)測(cè)塊需要濾波的模式號(hào)
Table 3 Filtering mode required for prediction blocks with different sizes
預(yù)測(cè)塊尺寸需要濾波的模式號(hào) 4×4 8×80,2,18,34 16×160,2~8,12~24,28~34 32×32及以上0,2~9,11~25,27~34
在進(jìn)行角度預(yù)測(cè)時(shí),對(duì)于第1路電路,以模式18為例(見(jiàn)圖2),其中()為預(yù)測(cè)值,(,)為參考像素,Ref()為左側(cè)參考像素向左上方投影并與上方參考像素拼接后得到的上方參考像素編號(hào),由圖1可知:模式18的預(yù)測(cè)方向?yàn)?5°,則每個(gè)預(yù)測(cè)值都可以由參考像素直接得到,而不需要進(jìn)行乘法、加法和移位計(jì)算;對(duì)于模式2和34,其預(yù)測(cè)方向與模式18的方向是垂直的,其預(yù)測(cè)值也是可以由參考像素直接得到。因此,第1路電路可以完全不使用任何計(jì)算單元。
圖2 模式18示例
由于角度方向?qū)ΨQ的關(guān)系,在第2~8路電路中,每一路處理的4個(gè)預(yù)測(cè)模式所需要的計(jì)算參數(shù)都是完全一樣的,因此可節(jié)省一些計(jì)算參數(shù)的寄存器占用。對(duì)于第9路電路,在計(jì)算模式10和26的角度預(yù)測(cè)時(shí)依然同第1路電路一樣,可以不使用任何計(jì)算單元。
文中統(tǒng)計(jì)了自然情況下各預(yù)測(cè)模式的分布概率,如圖3所示。其中0號(hào)Planar模式和1號(hào)DC模式的分布概率最大,角度模式的分布概率分別從模式10和26向兩側(cè)逐漸降低。因此在每一批最佳預(yù)測(cè)模式的選擇上,優(yōu)先選擇并行電路編號(hào)較大的模式,在不同批次的選擇上,優(yōu)先選擇后一批次的模式,以提高最佳模式選擇的正確率。
圖3 各預(yù)測(cè)模式的分布概率
針對(duì)文中并行預(yù)測(cè)模式選擇方案,對(duì)最佳預(yù)測(cè)模式的準(zhǔn)確性和編碼效率的影響進(jìn)行測(cè)試,在全Ⅰ幀配置下,每個(gè)序列測(cè)試10幀,各個(gè)序列的測(cè)試結(jié)果如表4所示。其中率失真性能是由M33標(biāo)準(zhǔn)代碼計(jì)算得出的,表示文中預(yù)測(cè)模式并行選擇方案降低的率失真性能。結(jié)果表明,文中預(yù)測(cè)模式并行選擇方案對(duì)率失真性能的影響很小。
表4 并行選擇方案的性能測(cè)試結(jié)果
Table 4 Performance test results of parallel selection scheme
測(cè)試序列視頻分辨率率失真性能/% Foreman320×2560.158 4 Blowing Bubbles384×1920.015 3 BQ Mall832×4480.001 8 Kristen and Sara1 280×7200.009 9 Four People1 280×7200.047 5 BQ Terrace1 920×1 0800.003 7 Basketball Drive1 920×1 0800.037 4 平均值 0.039 0
現(xiàn)有設(shè)計(jì)中,文獻(xiàn)[14]采用16點(diǎn)為基本處理單元的方式,即一次計(jì)算一個(gè)16×16預(yù)測(cè)塊中的一行數(shù)據(jù),這種設(shè)計(jì)方法不利于進(jìn)行大小為16×16以上預(yù)測(cè)塊的計(jì)算,且完成一個(gè)32×32編碼樹(shù)單元的計(jì)算需要大約5 787個(gè)時(shí)鐘周期,這就導(dǎo)致該硬件架構(gòu)僅能支持1 080 P分辨率30 f/s的實(shí)時(shí)編碼,無(wú)法滿足更高幀率的實(shí)時(shí)視頻編碼需求。
文中設(shè)計(jì)以滿足更高幀率的實(shí)時(shí)視頻編碼需求為目標(biāo),提出了硬件計(jì)算以4×4小塊作為基本處理單元,即將64×64的編碼樹(shù)單元?jiǎng)澐殖?56個(gè)4×4塊,并按照Z(yǔ)型掃描的方式進(jìn)行編號(hào)。在預(yù)測(cè)模式并行上,采用9路模式并行方案。電路開(kāi)始工作時(shí),從編號(hào)為0的4×4塊開(kāi)始計(jì)算,在當(dāng)前4×4塊的4批9路模式計(jì)算完成之后,按照Z(yǔ)型掃描的編號(hào)順序處理下一個(gè)4×4塊。整體流水線電路框圖如圖4所示,主要包括參考像素獲取模塊、濾波模塊、預(yù)測(cè)模塊和哈達(dá)瑪變換計(jì)算SATD模塊的電路。
圖4 流水線硬件架構(gòu)
參考像素獲取模塊中,獲取來(lái)源為原始像素。根據(jù)當(dāng)前4×4塊坐標(biāo)以及當(dāng)前預(yù)測(cè)單元的尺寸,得到當(dāng)前預(yù)測(cè)單元的位置,據(jù)此獲取對(duì)應(yīng)的上方和左側(cè)參考像素。對(duì)于參考像素的填充處理,事先將填充標(biāo)志存入只讀存儲(chǔ)器中,然后在計(jì)算時(shí)將對(duì)應(yīng)預(yù)測(cè)單元的尺寸和位置的標(biāo)志讀出,以此獲取最終的參考像素。對(duì)于參考像素濾波模塊的設(shè)計(jì),文中先同時(shí)計(jì)算強(qiáng)濾波和常規(guī)濾波,然后判斷當(dāng)前預(yù)測(cè)單元是否需要進(jìn)行強(qiáng)濾波,從而獲取當(dāng)前預(yù)測(cè)單元最終的濾波數(shù)據(jù)。前面已經(jīng)分析了每一路的參考像素濾波情況,最終將9路預(yù)測(cè)電路的濾波選擇電路分成4組來(lái)設(shè)計(jì),根據(jù)模式批次和預(yù)測(cè)單元尺寸判斷第1路、第2~7路、第8路和第9路的參考像素是否需要濾波。之后是進(jìn)行9路預(yù)測(cè)電路的計(jì)算,得到9路4×4塊的殘差數(shù)據(jù),再進(jìn)行9路哈達(dá)瑪變換計(jì)算SATD結(jié)果,最終選出最佳預(yù)測(cè)模式。
在幀內(nèi)RDO的過(guò)程中,需要對(duì)每一種預(yù)測(cè)塊尺寸、每一個(gè)預(yù)測(cè)塊進(jìn)行預(yù)測(cè)計(jì)算,這在編碼的過(guò)程中會(huì)占用較長(zhǎng)的時(shí)間。文獻(xiàn)[8]從減少計(jì)算量方面對(duì)RDO進(jìn)行設(shè)計(jì),先針對(duì)64×64和32×32預(yù)測(cè)單元向16×16預(yù)測(cè)單元進(jìn)行下采樣,然后按照16×16預(yù)測(cè)單元進(jìn)行計(jì)算。這種處理方式雖然能夠減少計(jì)算量,但降低了32×32和64×64預(yù)測(cè)單元的計(jì)算準(zhǔn)確度。
文中統(tǒng)計(jì)了量化步長(zhǎng)為12、17、22、27的預(yù)測(cè)單元?jiǎng)澐终急?,結(jié)果如表5所示。從表中可知,32×32預(yù)測(cè)單元的占比平均為23.86%,而64×64預(yù)測(cè)單元的占比僅為11.92%。在實(shí)際編碼時(shí),只有在視頻信息中有較大像素面積變化較為平緩的情況下才有可能出現(xiàn)64×64預(yù)測(cè)單元,對(duì)于一般的視頻序列,64×64預(yù)測(cè)單元極少出現(xiàn)。
表5 不同量化步長(zhǎng)下不同尺寸預(yù)測(cè)單元的占比
Table 5 Proportion of prediction units with different sizes under different quantization steps
量化步長(zhǎng)預(yù)測(cè)單元占比/% 尺寸為4×4尺寸為8×8尺寸為16×16尺寸為32×32尺寸為64×64 1217.5726.5524.7420.6010.55 1715.0824.4626.7124.169.59 2212.7522.2329.6525.699.67 2710.6221.1925.3324.9817.88 平均14.0123.6126.6123.8611.92
如果直接取消對(duì)64×64預(yù)測(cè)單元的計(jì)算,默認(rèn)全部預(yù)測(cè)單元都小于64×64,則在圖像平緩的場(chǎng)景下會(huì)降低編碼器的率失真性能。因此,對(duì)于64×64預(yù)測(cè)單元的代價(jià)計(jì)算,文中提出了對(duì)32×32預(yù)測(cè)單元的預(yù)測(cè)數(shù)據(jù)進(jìn)行復(fù)用,用于代替64×64預(yù)測(cè)單元的預(yù)測(cè)數(shù)據(jù),以減少編碼時(shí)間。具體來(lái)說(shuō),對(duì)于64×64預(yù)測(cè)單元,文中使用相同預(yù)測(cè)模式下4個(gè)32×32預(yù)測(cè)單元的預(yù)測(cè)值來(lái)計(jì)算其SATD值。在進(jìn)行大于8×8預(yù)測(cè)單元的SATD代價(jià)計(jì)算時(shí),是將內(nèi)部每個(gè)8×8塊進(jìn)行哈達(dá)瑪變換,然后計(jì)算絕對(duì)值之和,因此在硬件設(shè)計(jì)上計(jì)算64×64預(yù)測(cè)單元的SATD值時(shí),只需要將4個(gè)32×32預(yù)測(cè)單元的殘差進(jìn)行哈達(dá)瑪變換,得到的SATD緩存累加即可得到。文中提出的RDO數(shù)據(jù)復(fù)用策略具體描述如下:
{設(shè)置預(yù)測(cè)塊尺寸標(biāo)志為32×32
for (index=0;index<=3;index++) do
// index 為32×32預(yù)測(cè)單元索引
for (mode=0;mode<=34;mode++) do
// mode為預(yù)測(cè)模式號(hào)
計(jì)算預(yù)測(cè)值;
計(jì)算殘差;
計(jì)算當(dāng)前模式的SATD值;
if (index<3) then
緩存當(dāng)前模式的SATD值;
else //當(dāng)前為最后一個(gè)32×32預(yù)測(cè)塊
將前面緩存的SATD與當(dāng)前模式的SATD值相加,得到64×64預(yù)測(cè)單元的當(dāng)前模式SATD值;
end
end
選出當(dāng)前32×32預(yù)測(cè)單元的最佳預(yù)測(cè)模式和
代價(jià);
if (index==3) then
//當(dāng)前為最后一個(gè)32×32預(yù)測(cè)塊
選出64×64預(yù)測(cè)單元的最佳模式號(hào)和代價(jià);
end
end
得到當(dāng)前編碼樹(shù)單元的64×64預(yù)測(cè)單元和4個(gè)32×32預(yù)測(cè)單元的最佳模式號(hào)和代價(jià);}
在文中硬件架構(gòu)下,此方法可節(jié)省256個(gè)4×4塊的計(jì)算,能夠節(jié)省1 024(256×4)個(gè)時(shí)鐘周期。
HEVC支持4×4和8×8的哈達(dá)瑪變換,在文中硬件設(shè)計(jì)架構(gòu)下,如果進(jìn)行8×8的哈達(dá)瑪變換,那么只有4×4殘差塊處于8×8塊Z型掃描的1和3號(hào)位置時(shí),才能進(jìn)行一次4×8的列變換;只有當(dāng)所有列變換完成之后,才能進(jìn)行行變換得到哈達(dá)瑪變換的最終結(jié)果。如果直接設(shè)計(jì)4×8列變換單元和8×8行變換單元,由于9路并行運(yùn)算,則會(huì)需要較大的電路面積,而且列變換電路在0和2號(hào),行變換電路在0、1、2號(hào)位置均處于空閑狀態(tài),這將極大浪費(fèi)電路的利用率。為進(jìn)一步提高電路利用率和降低電路面積,文中設(shè)計(jì)了高效的哈達(dá)瑪變換架構(gòu),對(duì)數(shù)據(jù)進(jìn)行分批計(jì)算,使變換電路能夠持續(xù)進(jìn)行計(jì)算。
圖5 哈達(dá)瑪變換電路結(jié)構(gòu)
圖5所示為文中哈達(dá)瑪變換的電路結(jié)構(gòu),其中哈達(dá)瑪變換部分使用到了6個(gè)隨機(jī)存取存儲(chǔ)器(RAM)用于數(shù)據(jù)緩存,包含2個(gè)2×8蝶形運(yùn)算單元,第1個(gè)蝶形運(yùn)算單元用于計(jì)算列變換,第2個(gè)蝶形運(yùn)算單元用于計(jì)算行變換,2個(gè)數(shù)據(jù)通路用于數(shù)據(jù)分配和轉(zhuǎn)置,以實(shí)現(xiàn)4×4和8×8的哈達(dá)瑪變換功能。
蝶形運(yùn)算單元的電路結(jié)構(gòu)如圖6所示。當(dāng)變換尺寸為4×4時(shí),直接將輸入數(shù)據(jù)通過(guò)多路復(fù)用器(MUX)輸入到第2級(jí)蝶形運(yùn)算單元;當(dāng)變換尺寸為8×8時(shí),輸入數(shù)據(jù)進(jìn)行第1級(jí)蝶形運(yùn)算,之后通過(guò)MUX選擇器進(jìn)入到第2級(jí)蝶形運(yùn)算單元。
圖6 2×8蝶形運(yùn)算單元的電路結(jié)構(gòu)
當(dāng)計(jì)算的預(yù)測(cè)單元尺寸為4×4時(shí),4×4殘差數(shù)據(jù)直接經(jīng)過(guò)數(shù)據(jù)通路1,將數(shù)據(jù)進(jìn)行分配整理,發(fā)送到第1個(gè)2×8蝶形運(yùn)算單元中實(shí)現(xiàn)4×4殘差的列變換,之后直接經(jīng)過(guò)數(shù)據(jù)通路2,將列變換數(shù)據(jù)進(jìn)行轉(zhuǎn)置,發(fā)送到第2個(gè)2×8蝶形運(yùn)算單元中,得出整個(gè)4×4的哈達(dá)瑪變換結(jié)果。
當(dāng)計(jì)算的預(yù)測(cè)單元尺寸為8×8及以上時(shí),需要進(jìn)行8×8哈達(dá)瑪變換,其流水線示意圖如圖7所示。當(dāng)?shù)玫降?個(gè)殘差塊時(shí),后續(xù)流水線電路處于空閑狀態(tài);當(dāng)?shù)玫降?個(gè)殘差塊時(shí),得到前4×8的殘差數(shù)據(jù),第1個(gè)2×8蝶形運(yùn)算單元開(kāi)始工作,計(jì)算第1、2行殘差的列變換;當(dāng)?shù)玫降?個(gè)殘差塊時(shí),計(jì)算第3、4行殘差的列變換;當(dāng)?shù)玫降?個(gè)殘差塊時(shí),得到后4×8的殘差數(shù)據(jù),計(jì)算第5、6行殘差的列變換;當(dāng)?shù)玫降?個(gè)殘差塊時(shí),計(jì)算第7、8行殘差的列變換,此時(shí)第1個(gè)8×8塊完成了所有行的列變換,第2個(gè)2×8蝶形運(yùn)算單元開(kāi)始工作,計(jì)算列變換結(jié)果第1、2列的行變換,直到得到第7個(gè)殘差塊時(shí),即可得到第1個(gè)8×8的哈達(dá)瑪變換的全部結(jié)果。之后每計(jì)算完當(dāng)前8×8的最后一個(gè)4×4塊殘差,即可得出前一個(gè)8×8塊的全部變換結(jié)果。
圖7 8×8哈達(dá)瑪變換流水線示意圖
文中設(shè)計(jì)方案與已有相關(guān)設(shè)計(jì)方案的性能對(duì)比如表6所示。文獻(xiàn)[8]設(shè)計(jì)完成一個(gè)編碼樹(shù)單元計(jì)算需要3萬(wàn)個(gè)時(shí)鐘周期,這很難實(shí)現(xiàn)1 080 P高幀率的實(shí)時(shí)視頻編碼,文中設(shè)計(jì)的并行度雖然是文獻(xiàn)[8]的9倍,但對(duì)LUT資源的使用卻不足文獻(xiàn)[8]的兩倍。與文獻(xiàn)[14]設(shè)計(jì)相比,文中設(shè)計(jì)的并行度雖然是文獻(xiàn)[14]的兩倍多,但使用的LUT資源卻只增加約3 kb,寄存器資源只增加了5 kb;文中設(shè)計(jì)完成一個(gè)64×64編碼樹(shù)單元計(jì)算僅需要4 096個(gè)時(shí)鐘周期,而文獻(xiàn)[14]設(shè)計(jì)完成一個(gè)32×32編碼樹(shù)單元的計(jì)算則需要5 787個(gè)時(shí)鐘周期;對(duì)于1 080 P的視頻編碼,文中設(shè)計(jì)能達(dá)到的幀率是文獻(xiàn)[14]的三倍多。文獻(xiàn)[15]設(shè)計(jì)的并行度太高,為了壓縮電路面積而采用下采樣的方式,只進(jìn)行4×4的哈達(dá)瑪變換,影響了SATD計(jì)算的準(zhǔn)確性,且其設(shè)計(jì)的電路在FPGA上僅能達(dá)到140 MHz,其1 080 P實(shí)時(shí)視頻編碼幀率僅能達(dá)到30 f/s,遠(yuǎn)遠(yuǎn)低于文中方案的實(shí)時(shí)編碼幀率。文獻(xiàn)[16]設(shè)計(jì)的1 080 P實(shí)時(shí)編碼幀率雖然能達(dá)到110 f/s,但使用的硬件資源為文中方案的兩倍多,且最大預(yù)測(cè)塊只能達(dá)到32×32。
表6 5種設(shè)計(jì)方案的性能對(duì)比
Table 6 Comparison of performance among five design schemes
硬件架構(gòu)FPGA硬件平臺(tái)PU大小硬件資源時(shí)鐘周期數(shù)主頻1 080 P幀率/(f·s-1) 查找表/kb寄存器/kb 文中方案Altera Arria 1064×64~4×475554 09620799 文獻(xiàn)[8]方案Altera Arria 1064×64~4×4441730 000160 文獻(xiàn)[14]方案Xilinx Virtex 632×32~4×472505 78719630 文獻(xiàn)[15]方案Zyng ZC 70664×64~4×48428 14030 文獻(xiàn)[16]方案Xilinx Virtex 632×32~4×4170110892219110
HEVC視頻編碼雖然具有很大的壓縮率,但其實(shí)現(xiàn)復(fù)雜度較高。文中針對(duì)HEVC的幀內(nèi)RDO,基于FPGA平臺(tái),提出并實(shí)現(xiàn)了9路預(yù)測(cè)模式并行流水線硬件方案,設(shè)計(jì)了一個(gè)高效的哈達(dá)瑪變換架構(gòu)以減小電路面積。實(shí)際測(cè)試結(jié)果表明,文中設(shè)計(jì)方案完成一個(gè)64×64編碼樹(shù)單元的幀內(nèi)RDO過(guò)程,需要約4 096個(gè)時(shí)鐘周期,最大能夠?qū)崿F(xiàn)幀率為99 f/s的1 080 P實(shí)時(shí)視頻編碼,且綜合性能均優(yōu)于其他對(duì)比設(shè)計(jì)方案。
[1] 胡永健,龔文斌,劉琲貝,等.修改標(biāo)志位的大容量無(wú)損HEVC信息隱藏方法[J].華南理工大學(xué)學(xué)報(bào)(自然科學(xué)版),2018,46(5):1-8.
HU Yongjian,GONG Wenbin,LIU Beibei,et al.Large-capacity lossless HEVC information hiding method by modifying flag bits [J].Journal of South China University of Technology (Natural Science Edition),2018,46(5):1-8.
[2] 朱秀昌,李欣,陳杰.新一代視頻編碼標(biāo)準(zhǔn):HEVC[J].南京郵電大學(xué)學(xué)報(bào)(自然科學(xué)版),2013,33(3):1-11.
ZHU Xiuchang,LI Xin,CHEN Jie.New generation of video encoding standards:HEVC[J].Journal of Nanjing University of Posts and Telecommunications (Natural Science Edition),2013,33(3):1-11.
[3] KIM Y,JUN D S,JUNG S,et al.A fast intra-prediction method in HEVC using rate-distortion estimation based on Hadamard transform[J].ETRI Journal,2013,35(2):270-280.
[4] KALALI E,HAMZAOGLU I.An approximate HEVC intra angular prediction hardware[J].IEEE Access,2019,8:2599-2607.
[5] SHEN W,F(xiàn)AN Y,HUANG L,et al.A hardware-friendly method for rate-distortion optimization of HEVC intra coding[C]∥ Proceedings of 2014 International Symposium on VLSI Design,Automation and Test.Hsinchu:IEEE,2014:1-4.
[6] XU Y,HUANG X.Hardware-oriented fast CU size and prediction mode decision algorithm for HEVC intra prediction[C]∥ Proceedings of 2019 IEEE the 5th International Conference for Convergence in Technology.Bombay:IEEE,2019:1-5.
[7] ZHANG Y,LU C.Efficient algorithm adaptations and fully parallel hardware architecture of H.265/HEVC intra encoder[J].IEEE Transactions on Circuits and Systems for Video Technology,2018,29(11):3415-3429.
[8] 楊賀,楊秀芝,陳建.一種新的基于FPGA的HEVC幀內(nèi)預(yù)測(cè)硬件結(jié)構(gòu)[J].福州大學(xué)學(xué)報(bào)(自然科學(xué)版),2020,48(3):318-324.
YANG He,YANG Xiuzhi,CHEN Jian.A new hardware structure of HEVC intra prediction based on FPGA [J].Journal of Fuzhou University(Natural Science Edition),2020,48(3):318-324.
[9] MIN B,XU Z,CHEUNG R C C.A fully pipelined hardware architecture for intra prediction of HEVC[J].IEEE Transactions on Circuits and Systems for Video Technology,2016,27(12):2702-2713.
[10] LU W,YU N,NAN J,et al.A hardware structure of HEVC intra prediction[C]∥ Proceedings of 2015 the 2nd International Conference on Information Science and Control Engineering.Shanghai:IEEE,2015:555-559.
[11] CHEN W,HE Q,LI S,et al.Parallel implementation of H.265 intra-frame coding based on FPGA heterogeneous platform[C]∥ Proceedings of 2020 IEEE the 22nd International Conference on High Performance Computing and Communications;IEEE the 18th International Conference on Smart City;IEEE the 6th International Conference on Data Science and Systems.Yanuca Island:IEEE,2020:736-743.
[12] WANG M,WEI H,F(xiàn)ANG Y,et al.Fast mode selection algorithm for HEVC intra encoder[C]∥ Proceedings of 2018 IEEE International Conference on Automation,Electronics and Electrical Engineering.Shenyang:IEEE,2018:169-172.
[13] TARIQ J,IJAZ A,ARMGHAN A,et al.HEVC’s intra mode process expedited using Histogram of oriented gradients[J].Journal of Visual Communication and Image Representation,2022,88:103594/1-10.
[14] 楊秀芝,趙敏,施隆照,等.面向硬件的幀內(nèi)預(yù)測(cè)模式選擇快速算法與實(shí)現(xiàn)[J].計(jì)算機(jī)輔助設(shè)計(jì)與圖形學(xué)學(xué)報(bào),2019,31(1):158-164.
YANG Xiuzhi,ZHAO Min,SHI Longzhao,et al.Research and implementation of fast algorithm for intra prediction mode selection oriented to hardware[J].Journal of Computer-Aided Design & Computer Graphics,2019,31(1):158-164.
[15] ATAPATTU S,LIYANAGE N,MENUKA N,et al.Real time all intra HEVC HD encoder on FPGA[C]∥ Proceedings of 2016 IEEE the 27th International Conference on Application-specific Systems,Architectures and Processors.London:IEEE,2016:191-195.
[16] AMISH F,BOURENNANE E.Fully pipelined real time hardware solution for high efficiency video coding (HEVC) intra prediction[J].Journal of Systems Architecture,2016,64:133-147.
Parallel Pipeline Hardware Design of Intra Rate-Distortion Optimization Prediction Mode in HEVC
(College of Physics and Information Engineering,F(xiàn)uzhou University,F(xiàn)uzhou 350108,F(xiàn)ujian,China)
In recent years, the resolution and frame rate of video have been continuously improved to meet people’s increasing demand for video data. However, the compression encoding speed of real-time video sequence is often restricted by frame rate and resolution. The higher the frame rate and resolution are, the longer the encoding time will be. In order to achieve real-time compression encode for video sequences with higher resolution and frame rate, this paper designed a new parallel pipeline hardware architecture of intra rate-distortion optimization prediction mode, which supports intra prediction coding of up to 64×64 coding tree unit. Firstly, a parallel scheme with 9-way prediction mode was designed. Secondly, a pipeline hardware architecture was implemented based on a 4×4 block as the basic processing unit in a Z-shaped scanning order, and the prediction data of 32×32 prediction units were reused to replace the prediction data of 64×64 prediction units so as to reduce the amount of calculation. Lastly, a new Hadamard transform circuit was proposed based on this pipelined architecture for efficient pipelined processing. The experimental results show that: on the Altera Arria 10 series field programmable gate array, the 9-way mode parallel architecture only occupies 75 kb look up table and 55 kb register resources, the main frequency can reach 207 MHz, and it only takes 4 096 clocks cycles to complete a 64×64 coding tree unit prediction and can support real-time encoding of 1 080 P resolution 99 f/s full I-frame at most. Compared with the existing design scheme, the scheme designed in this paper can realize higher frame rate 1 080 P real time video encoding with smaller circuit area.
intra prediction;field programmable gate array;mode in parallel;high efficiency video coding
Supported by the General Program of the National Natural Science Foundation of China(61871132,62171135)
10.12141/j.issn.1000-565X.220612
2022?09?20
國(guó)家自然科學(xué)基金面上項(xiàng)目(61871132,62171135);福建省高等學(xué)??萍紕?chuàng)新團(tuán)隊(duì)項(xiàng)目(產(chǎn)業(yè)化專項(xiàng),500190)
林志堅(jiān)(1984-),男,博士,副教授,主要從事視頻編碼、FPGA設(shè)計(jì)研究。E-mail:zlin@fzu.edu.cn
吳林煌(1984-),男,博士,副研究員,主要從事視頻編碼、計(jì)算機(jī)視覺(jué)研究。E-mail:wlh173@163.com
TP391.41
1000-565X(2023)05-0095-09
華南理工大學(xué)學(xué)報(bào)(自然科學(xué)版)2023年5期