中文引用格式: 王世豪,周志剛,郭旭,等. H.265/HEVC熵解碼的分組并行流水線實(shí)現(xiàn)[J]. 電子技術(shù)應(yīng)用,2023,49(10):59-64.
英文引用格式: Wang Shihao,Zhou Zhigang,Guo Xu,et al. Parallel pipeline implementation of H.265/HEVC entropy decoding[J]. Application of Electronic Technique,2023,49(10):59-64.
0 引言
與H.264/AVC相比,視頻壓縮標(biāo)準(zhǔn)H.265/HEVC能夠在相同的圖像質(zhì)量下實(shí)現(xiàn)更低的碼率,即更高的壓縮比[1]。基于上下文的二進(jìn)制自適應(yīng)算術(shù)編碼(Context-Adaptive Binary Arithmetic Coding, CABAC)是H.265/HEVC支持的熵編碼方案。CABAC在熵編碼方案中具有極高的數(shù)據(jù)壓縮率,相對(duì)于另一種熵編碼方案基于上下文的自適應(yīng)可變長(zhǎng)編碼(Context-Adaptive Variable Length Coding, CAVLC),在同等編碼質(zhì)量下,CABAC可節(jié)約10%~15%的比特率。
在CABAC中,上下文建模的保持與更新需要大量的計(jì)算和內(nèi)部存儲(chǔ)器件的訪問。在解碼過程中,語法元素需要其前面的語法元素來確定上下文地址,在每個(gè)binVal被解碼獲得時(shí),解碼過程需要檢查流是否被更改或保持在相同的語法元素中。因此,解碼過程比編碼過程具有更多的依賴性。同時(shí),在標(biāo)準(zhǔn)的熵解碼流程中,由于位流指針(binIdx)的存在,導(dǎo)致熵解碼過程串行程度過高,占用了較長(zhǎng)的解碼時(shí)間。導(dǎo)致CABAC模塊成為視頻解碼器的吞吐量瓶頸。因此,有必要針對(duì)以上問題設(shè)計(jì)一種高并行、高吞吐量的硬件結(jié)構(gòu)。
目前CABAC解碼器的工作可以分為3類,分別是基于流水線的時(shí)域并行性擴(kuò)展、基于單周期的多位解碼、基于預(yù)測(cè)的解碼和基于子區(qū)間重排序的解碼。文獻(xiàn)[2-3]通過流水線的方式擴(kuò)展時(shí)域并行性,但碼流之間的高數(shù)據(jù)依賴使反饋環(huán)路串行程度過高,導(dǎo)致在流水線架構(gòu)中過多的時(shí)鐘冗余。文獻(xiàn)[4-9]通過增加額外的解碼邏輯來增加每周期的解碼輸出位,但該種方法實(shí)現(xiàn)的時(shí)鐘速率較低。文獻(xiàn)[8-9]通過使用基于預(yù)測(cè)解碼的方法節(jié)省了預(yù)存解碼信息的硬件開銷,但帶來了額外的關(guān)鍵路徑延遲,且有較高的預(yù)測(cè)失誤懲罰,導(dǎo)致了較低的吞吐量。文獻(xiàn)[10]提出適用于HEVC的多路并行硬件CABAC解碼器架構(gòu)。該CABAC解碼器采用multi-bin解碼方式,其吞吐量可達(dá)到3 026 Mbins/s。這種結(jié)構(gòu)改進(jìn)算術(shù)編碼(子區(qū)間重排序),縮短了關(guān)鍵路徑,但這種架構(gòu)前端的碼流控制容易出現(xiàn)性能瓶頸。文獻(xiàn)[11]在算術(shù)編碼子區(qū)間重排序的基礎(chǔ)上,采用5級(jí)流水線的結(jié)構(gòu),進(jìn)一步使用鎖存器來減少熵解碼的面積開銷,布局布線后可實(shí)現(xiàn)峰值為1 696 Mbins/s的解碼性能。但使用子區(qū)間排序后,編碼器和解碼器必須同時(shí)使用才能保證編解碼一致性,實(shí)用性不高。
針對(duì)上述方法存在的不足,本文根據(jù)CABAC解碼算法特點(diǎn)和FPGA硬件高并行的特性,提出了一種多路并行的CABAC解碼器。通過將語法元素分組并行處理,減少了內(nèi)部寄存器使用與訪問次數(shù),優(yōu)化了關(guān)鍵路徑,增加了CABAC解碼器的吞吐量,并且在編碼端不需做任何特殊配置,所提出的結(jié)構(gòu)實(shí)用性很高。
本文詳細(xì)內(nèi)容請(qǐng)下載:http://ihrv.cn/resource/share/2000005714
作者信息:
王世豪,周志剛,郭旭,殷先英,薛曉娜,趙靖宇
(杭州電子科技大學(xué) 電子信息學(xué)院,浙江 杭州 310018)