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