探優化H.264解碼器

才智咖 人氣:2.15W

1.引言
H.264 標準是由ITU-T 的視訊編碼專家組(VCEG)和ISO/IEC 的活動影象專家組共同成立的聯合視訊小組(JVT)於2003 年3 月公佈的。與以往標準相比,在同等畫面質量下H.264 能將位元速率降低50%左右。H.264/AVC 解碼器包括熵解碼,重排序,反量化,反變換,運動補償和環路去塊效應濾波。在解碼環中引入的高度自適應去塊濾波系統是H.264在相對位元速率較低的情況下依舊能保持較好的主觀視覺效果的重要因素之一,是H.264 中的重要組成部分。中國碩士論文網提供大量免費工商管理碩士論文,如有業務需求請諮詢網站客服人員

探優化H.264解碼器

本文依據H.264 去方塊濾波演算法的特點,對演算法的實現進行了結構上的優化,並採用MMX 技術對其中執行時間最多、執行次數最多的部分程式碼進行優化。在保證解碼質量的前提下,節省了硬體資源,提高了解碼速度。

2.去方塊濾波器的演算法分析
由於H.264 中的整數變換和運動估計的最小塊是基於4×4 大小的,因此塊濾波系統在濾波的時候也應以4×4 點的塊為單元處理。

濾波系統按照光柵掃描順序依次對已解碼的每個巨集塊進行濾波。對巨集塊內部進行濾波時按照先亮度塊後色度塊,先進行垂直邊界的水平濾波然後進行水平邊界的垂直濾波的順序進行,如圖1 所示,圖中的標有數字的線為需要濾波的邊界。

對於不同的BS 值,濾波器採取不同的濾波模式,有條件地選擇不同的濾波器修正邊界兩邊的樣點值。最多有6 個樣點值將在濾波過程中得到調整,以去除塊效應。

3.去方塊濾波器的優化
3.1 邊界濾波強度判斷
流程的改進經分析發現該解碼器的去塊濾波演算法中的函式邏輯關係複雜、跳轉、判斷以及函式呼叫情況頻繁;函式的迴圈體中存在著大量不必要的重複計算和很多用不到的資料,如在傳統JM 模型的Bs 判斷中,對所有BS 值分別進行16 次判斷(由於邊界有16 個點,所以對每個點都做了濾波強度判斷),這明顯造成程式冗餘因為當BS=3,4 時,只取決於預測模式是否為幀內模式和模組是否為邊緣模組即可。根據C 程式碼優化方法,通過改變函式結構以及函式呼叫等情況,得到了圖3 所示的改進的BS 判斷流程。

3.2 巨集塊濾波順序的調整
如果按照基本的濾波順序執行去方塊濾波程式,就沒有充分利用相鄰4×4 資料之間的相關性。比如完成“1”濾波後需要將其右側方塊的'資料寫回事先分配的記憶體中,等到要進行“5”之前再從記憶體中讀取將這個方塊的資料。對於每一個方塊都要從記憶體中讀取資料,完成濾波後還需要將資料寫回至相應的地址,如此頻繁讀取記憶體,對記憶體的頻寬要求比較高,同時增加了解碼的時間。因此提出了一種改進的濾波順序.
3.3使用多媒體指令集(MMX)對像
素級濾波計算進行優化從上面的演算法分析可以看出,環路濾波部分演算法不很複雜但是計算量密集,例如對濾波條件的判斷和完成對畫素值的修改的過程。所以在保證影象質量的基礎上,儘可能的加快運算速度,就成為當前研究的新熱點。MMX(Microprocessor Media Extension)是Intel公司為提高PC 機多媒體功能和通訊能力而推出的一項單指令多資料流(Single InstructionMultiple Data,SIMD)技術,是對IA(Intel Architecture)指令集的擴充套件,他通過在“奔騰(Pentium)”處理器中增加8 個64 位暫存器和57 條新指令來實現[3]。將多個數據組織入MMX 暫存器中,用指令進行統一處理,就可達到單指令多資料的目的。SIMD 技術的執行模式。

3.3.1資料重排(記憶體讀取的優化)
為實現多路資料的並行處理,應將各路資料中進行相同操作的資料放在同一個暫存器的不同位置,使得單一指令可對多路資料並行操作。在並行操作實現的過程中,若資料的原始排序不能滿足並行操作,就須對原始資料進行重排序。