999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于FPGA的CAVLC解碼器設計

2017-02-03 05:04:45馬雨然任超偉張文明
電子設計工程 2017年21期

馬雨然,任超偉,張文明

(中國科學院光電技術研究所四川成都610209)

H.264視頻編解碼標準是由ITU-T視頻編碼專家組和ISO/IEC運動圖像專家組(MPEG)共同提出的數字視頻壓縮標準[1]。H.264的熵編碼部分采取了3種編碼方式,不同的方式對應不同的解碼方法。在基本檔次中,殘差數據的編碼采用基于上下文的自適應變長CAVLC編碼,而圖像參數集,序列參數集等碼流控制信息采用指數哥倫布(Exp-Golomb)編碼。主要檔次采用基于上下文的自適應二進制CABAC編碼。擴展檔次只支持CAVLC而不支持CABAC,并且包含了基本檔次的所有功能。

H.264標準具有優異的解壓縮性能和良好的網絡親和性,但這都是以較高的算法復雜度作為代價換取的。為了解決在CAVLC查表耗時較長的問題,國內外學者對CAVLC解碼算法和結構進行了大量研究。黃明政等采用計算方法代替查表方法減少條件判斷,實現零內存存取,以此提高解碼速[2]。賈俊玲利用碼字頭部對碼表分組,在熵解碼質量沒有下降的情況下,解碼速度提高了4倍[3]。李桃中等人提出了偽并行結構的幅值解碼,半個時鐘周期解碼一個幅值,實現了1080P高清視頻實時解碼[4]。Lo C C等人也提出了最大匹配查找表方法[5]。韓一石等人對碼字前綴進行一級索引,對碼字后綴進行二級索引,顯著提高了解碼時間和存儲空間[6]。這些方法都旨在改變CAVLC解碼器的吞吐量,調高解碼速度。

文中介紹了H.264標準解碼的原理和過程,在此基礎上介紹了CAVLC的解碼過程并分析了該過程各個部分的復雜度。最后提出了分組與計算結合的算法,提高解碼速度。

1 CAVLC解碼器

1.1 H.264解碼器結構

H.264標準并沒有明確規定解碼器如何實現,只是規定了視頻比特流的句法以及解碼方法。解碼器分為兩個模塊:碼流解析和圖像重構。其中熵解碼、反變換、反量化是屬于碼流解析部分。解碼過程如圖1所示。

圖1 H.264解碼器結構

開始解碼時,由編碼器的NAL輸出一個壓縮后的H.264壓縮比特流,經熵解碼得到量化后的一組變換系數X,再經反量化、反變換,得到殘差利用從該比特流中解碼出的頭信息,解碼器就產生一個預測塊P,它和編碼器中的原始P是相同的。當該解碼器產生的P與殘差相加后,就產生再經濾波后,最后就得到濾波后的這個就是最后的解碼輸出圖像。其中熵編碼部分采用可選的CAVLC和CABAC,下面將對CAVLC進行分析。

1.2 CAVLC解碼器結構

圖像中相鄰的殘差塊相關性比較大[7],CAVLC將碼表設計成與圖像殘差塊的非零系數和拖尾系數相關,并且本殘差塊的系數要由相鄰殘差塊的非零系數個數解出,這體現的CAVLC基于上下文的思想。

CAVLC主要用于亮度和色度的殘差塊編解碼。經過編碼器的預測、變換和量化后,碼流中的殘差塊數據具有以下特點[8]:

1)非零系數主要集中在低頻部分,而高頻部分主要是0。

2)量化后的數據經過Zig-zig掃描后,在直流DC附近的系數幅值都比較大,而在高頻的非零幅值大部分都是+1和-1。

3)相鄰的殘差塊的非零系數的個數是相關的。

CAVLC編解碼充分利用了這些碼流特性,減少數據中的冗余信息,提高H.264標準的壓縮比。

CAVLC解碼主要包括非零系數個數TotalCoeffs模塊、拖尾系數符號TrailingOnes模塊、非零系數幅值Levels模塊、總零個數TotalZreos模塊和游歷零個數RunBefores模塊。對于TrailingOnes模塊,其本質也是對于非零系數幅值的解析,本文將其與Levels歸并為同一模塊。這些模塊之間通過一個狀態機控制進行協調解碼。每一個模塊解析完成之后,都要計算出所消耗的碼流長度,通過指針偏移調整碼流的輸入。CAVLC解碼結構如圖2所示。

圖2 CAVLC解碼器結構

通過對CAVLC的運算復雜度分析,查表部分占23%,RunBrfores占24%,非零系數幅值的計算占53%[9]。在CAVLC的4個子解碼器中,TotalCoeffs和TotalZeros是基于查表的。Runbefores一部分是用通過查表解析每個非零系數前0的個數,另一部分是完成Levels和Runbefores的合并,最終形成殘差系數。而Levels通過不斷循環計算每個幅值的前綴和后綴,耗時較多。

1.3 CAVLC狀態控制

雖然在H.264標準中明確說明了解碼的流程,但是對于不同的設計方法會根據自身設計的特點定制不同的狀態機。如果嚴格按照H.264的解碼流程設計狀態圖,則狀態較多且狀態跳轉繁瑣[10]。本文在采用了一種改進的狀態機,簡化后如圖3所示。

圖3 CAVLC狀態轉換圖

首先解析非零系數個數TotalCoeffs,如果TotalCoeffs=0,則整個殘差數據塊全部為0,直接回到初始狀態。若TrailngOnes=0,不需要解析拖尾系數的符號,直接開始解析Levels;若TotalCoeffs=TrailingOnes,表示除了拖尾系數之外沒有其他的非零系數,則進行TotalZeros解析。不斷循環解析幅值的前綴和后綴,直到所有幅值解析完畢。解析完幅值之后,當TotalCoeffs=maxNumCoeff,表示沒有0存在,直接輸出殘差系數。

表1 碼表規律

對于不同的后綴,可以才采用不同的計算方法,例如當碼字前的0個數為5時,規律如表2所示。

2 混合分組和計算的查表

CAVLC關于TotalCoeffs和TrailingOnes的碼表共有5個,其中定長碼表1個,變長碼表4個。關于Level_prefix的碼表1個,關于TotalZeros的碼表15個,關于RunBefores的碼表7個。整個CAVLC解碼的過程,本質就是查表的過程。對于碼流的查表,已經提出的有全碼表法,二叉樹法,分組碼表法等[11-13]。本文采用計算方法解析定長碼表,分組方法解析變長碼表,在分過組的變長碼表中部分采用計算方法。

文獻[14]將碼字分解為碼字頭和信息碼,根據碼字頭進行分組,從而提高了解碼速度。但是這沒有考慮到CAVLC碼字的特性。CAVLC根據大量視頻統計,出現概率高的碼字長度短,出現概率低的碼字長度較長。基于以上特點,本文根據碼字前0的個數進行分組來提高解碼速度。

分組查表過程受限于對碼字的判斷和比較,而計算方法可以不通過比較而直接進行解析,提高解碼的速度。不同碼表分組情況不同,在分組后盡量使用計算方法代替查找方法。以變長碼表0<=nC<2為例,分組情況如表1所示[11]。

表2 前綴0個數為5時碼表規律

不難發現,這種方法將變長編碼分組后,轉化為了定長編碼。除了后綴rbsp_data[6:7]為00時,TotalCoeffs和TrailingOnes滿足如下關系:

nC>=8時為定長表格,計算方法與上述碼字前個數為5的方法類似。當碼流rbsp_data[0:5]!=000011時,TotalCoeffs和TailingOnes滿足如下關系:

在解碼時,只需要判斷檢測碼流是否為000011。若不是000011,直接根據碼流計算出非零系數個數TotalCoeffs和拖尾系數個數TrailingOnes的值,而無需二次查表,減少查找和判斷的次數。

這種方法縮短了CAVLC解碼過程中對輸入碼流作判斷的次數、減少了表的遍歷深度和訪問次數,是一種具有可行性的優化方案。綜上所述,可概括此CAVLC解碼算法的步驟如下:

step1:根據nC的取值確定所需要的碼表。

step2:讀取碼流,檢測碼流前綴0的個數。

step3:根據前綴0的個數確定碼表分組,再根據后綴計算所需要的解碼參數。

3 實驗結果

對上述的CAVLC解碼器用verilog HDL硬件語言編寫了程序代碼,采用Xilinx的ISim的仿真功能對代碼進行了功能仿真和時序仿真。綜合時選定的FPGA器件為Zynq XC7Z045。

測試序列通過264文件轉化為文本文件,作為ISim的Testbench的輸入序列。當000101000000 00000000101011(nC=0),1(nC=1),000100111100((nC=1)),1(nC=1),1(nC=0)作為輸入序列時,仿真結果如圖4所示。通過與264文件產生的殘差系數對比,可知本文的CAVLC解碼器功能正確。

時序仿真過后,結果顯示CAVLC解碼器的關鍵路徑延時為11.870 ns,采用83.3 MHz時鐘,選取三組視頻序列對本文所述的解碼器進行測試,統計每個宏塊所消耗的時間周期。實驗結果如表3所示。

圖4 CAVLC解碼器仿真圖

表3 解碼器測試

從統計結果可以看出,Akiyo每個宏塊平均消耗的時鐘周期最多,為157.1。為了保證余量,假設每個宏塊消耗的時鐘周期為200個。根據吞吐率公式[15](1)計算得到本文所述的設計吞吐率為416 500 MB/s。

FCLK表示時鐘頻率,NMB表示解碼一個宏塊消耗的平均時鐘周期,表4列出了幀率為30的不同清晰度視頻的吞吐率和本設計的吞吐率對比。

對比結果顯示,本設計的吞吐率要高于1080P視頻所要求的吞吐率,滿足1080P@30fs的視頻解碼。如需解碼幀率為60的視頻碼流,相應的吞吐率會變成幀率為30的2倍,本設計可以滿足720P@60fs的解碼要求。

表4 吞吐率對比

4 結論

文中從CAVLC解碼原理出發,分析了各個解碼模塊的復雜度。為了提高CAVLC解碼器的解碼速度,本文提出了CAVLC解碼碼表進行分組查表,查表之后通過計算得到殘差系數的方法,提高了CAVLC解碼系統的吞吐率。實驗結果表明,本文設計可以正確的完成解碼,并滿足幀率為30的1080P視頻解碼要求。

[1]International Telecommunication Union.Advanced Video Coding for Generic Audio Visual Services[EB/OL].(2011-11-01).http://citeseerx.ist.psu.edu/showciting?cid=323674.

[2]黃明政,韓一石.一種可實現零內存存取的CAVLC 解碼算法[J].計算機工程,2014(3):60.

[3]賈俊玲,劉彥輝.碼字前綴分組的CAVLC解碼優化[J].中國新技術新產品,2010(4):2-3.

[4]李桃中,王進祥,蘇陽平,等.H.264中CAVLC解碼器的設計與優化[J].微電子學,2015(3):372-375.

[5]Lo C C,Hsu C W,Shieh M D.Low-complexity multi-standard variable length coding decoder using tree-based partition and classification[J].IET Image Processing,2013,7(3):185-190.

[6]韓一石,王建華,黃明政,等.基于索引查詢的CAVLC解碼算法優化[J].計算機工程與應用,2012,48(13):167-170.

[7]何騰波,盛利元,蔣文明.H.264/AVC中CAVLC編碼器的硬件設計與實現[J].電子技術應用,2010(7):66-68.

[8]何騰波.H.264/AVC中CAVLC編碼器的硬件設計與FPGA實現[D].長沙:中南大學,2010.

[9]Tsai T H,Fang T L,Pan Y N.A novel design of CAVLC decoderwith low powerand high throughput considerations[J].Circuits and Systems for Video Technology,IEEE Transactions on,2011,21(3):311-319.

[10]Xu K,Liu T M,Guo J I,et al.Methods for power/throughput/area optimization ofH.264/AVC decoding[J].Journal of Signal Processing Systems,2010,60(1):131-145.

[11]付永慶,姜靈靈.H.264硬件解碼核的FPGA實現[J].電視技術,2012,36(19):59-63.

[12]李芬,包曉敏.基于CAVLC解碼算法優化的研究[J].浙江理工大學學報,2013,30(4):550-553.

[13]黃明政,王建華,韓一石,等.一種基于CAVLC解碼的快速碼表查找算法[J].計算機工程,2013,39(2):23-26.

[14]Ghorbani S,Zargari F.A unified architecture for implementation of the entire transforms in the H.264/AVC encoder[J].InternationalJournalof Multimedia and Ubiquitous Engineering,2013,8(1):41-54.

[15]李桃中.高清H.264熵解碼器設計與實[D].哈爾濱:哈爾濱工業大學,2014.

主站蜘蛛池模板: 欧美综合在线观看| 国产原创演绎剧情有字幕的| 国产一区二区精品福利 | 国产人碰人摸人爱免费视频| 国产激爽大片高清在线观看| 91成人在线观看| 四虎永久免费地址在线网站 | 激情乱人伦| 成人福利免费在线观看| 在线亚洲天堂| 欧美日韩精品一区二区视频| 夜夜操国产| 波多野结衣无码中文字幕在线观看一区二区 | 亚洲a免费| 老司机精品99在线播放| 91年精品国产福利线观看久久 | 日本免费新一区视频| 亚洲丝袜第一页| 国产欧美在线| 国产第一色| 重口调教一区二区视频| 国产女人在线视频| 亚洲国产清纯| 欧美日韩国产在线人| 国产99免费视频| 青青国产视频| 亚洲精品国产首次亮相| 97视频精品全国免费观看| 国内精品九九久久久精品| 日本精品视频一区二区| 免费Aⅴ片在线观看蜜芽Tⅴ| 午夜视频免费一区二区在线看| 亚洲午夜福利在线| 午夜视频免费一区二区在线看| 伊人色天堂| 77777亚洲午夜久久多人| 99在线国产| 美女被操91视频| 怡春院欧美一区二区三区免费| 亚洲天堂自拍| 成人国产精品网站在线看| 久久鸭综合久久国产| 国产亚洲精品在天天在线麻豆| 久久黄色视频影| 亚洲国产综合精品一区| 成人在线视频一区| 国产高清不卡| 九九热精品免费视频| 99久久人妻精品免费二区| 国产精品亚洲va在线观看 | 国产日韩欧美中文| 亚洲欧洲综合| 亚洲国产午夜精华无码福利| a级毛片网| 午夜色综合| 国产免费自拍视频| 日韩国产精品无码一区二区三区| 亚洲欧美另类色图| 亚洲精品午夜天堂网页| 99这里精品| 女人18毛片久久| 国产一区二区三区精品欧美日韩| 国产一区二区免费播放| 成年A级毛片| 免费Aⅴ片在线观看蜜芽Tⅴ| 亚洲视频一区| 久久国产香蕉| 沈阳少妇高潮在线| 精品国产自在现线看久久| 亚洲精品视频免费看| 天天躁狠狠躁| 岛国精品一区免费视频在线观看| 爽爽影院十八禁在线观看| 制服丝袜在线视频香蕉| 国产精品理论片| 五月激情婷婷综合| 国产精品久久久久久久伊一| 久久国语对白| 久久性妇女精品免费| 真实国产精品vr专区| 精品国产自在在线在线观看| 久久一本日韩精品中文字幕屁孩|