H.264是新一代視頻壓縮編碼標(biāo)準(zhǔn),由兩大國(guó)際標(biāo)準(zhǔn)化組織ITU-T和ISO/IEC聯(lián)合開(kāi)發(fā)。H.264和以前的標(biāo)準(zhǔn)一樣,也是采用基于塊的混合編碼模式,但是它在以往標(biāo)準(zhǔn)的基礎(chǔ)上對(duì)編碼算法進(jìn)行了改進(jìn),使得H.264算法具有很高的編碼效率。在同等的圖像質(zhì)量條件下,H.264的數(shù)據(jù)壓縮性能比當(dāng)前DVD系統(tǒng)中使用的MPEG-2高2~3倍,比MPEG-4高1.5~2倍。正因?yàn)槿绱,?jīng)過(guò)H.264壓縮的視頻數(shù)據(jù),在網(wǎng)絡(luò)傳輸過(guò)程中所需要的帶寬更少,也更加經(jīng)濟(jì),所以更適合視頻會(huì)議業(yè)務(wù)。
編碼器架構(gòu)與算法模塊
隨著壓縮性能的提高,H.264的計(jì)算復(fù)雜度變得極高,H.264編碼的計(jì)算復(fù)雜度大約相當(dāng)于H.263(H.264的同系列標(biāo)準(zhǔn))的3~5倍,解碼復(fù)雜度大約相當(dāng)于H.263的2倍。為此,一款設(shè)計(jì)優(yōu)良的H.264編碼器必須充分考慮編碼速度與率失真性能之間的平衡。一般而言,H.264編碼器架構(gòu)主要包括以下各種算法。
- 運(yùn)動(dòng)搜索(運(yùn)動(dòng)估計(jì))
- 幀內(nèi)預(yù)測(cè)
- 率失真優(yōu)化
- 碼率控制
- 存儲(chǔ)器管理
- 熵編碼
H.264編碼器的工作流程
編碼程序在設(shè)定編碼參數(shù)后,首先從輸入圖像序列中讀出一幀圖像數(shù)據(jù)作為當(dāng)前編碼圖像,并根據(jù)圖像特征分析編碼類型。每一幀圖像數(shù)據(jù)由若干個(gè)片數(shù)據(jù)組成,每一個(gè)片數(shù)據(jù)獨(dú)立編碼為一個(gè)NAL。當(dāng)寫好NAL的起始信息和片頭數(shù)據(jù)后,進(jìn)入圖像宏塊層編碼。
進(jìn)入宏塊數(shù)據(jù)編碼子程序后,首先根據(jù)宏塊所處的幀類型,進(jìn)入相應(yīng)的宏塊編碼模式選擇算法模塊。選擇宏塊的編碼模式后,根據(jù)編碼模式進(jìn)入相應(yīng)的宏塊編碼模塊。幀內(nèi)編碼的宏塊的預(yù)測(cè)值是來(lái)自在同一圖像中的相鄰宏塊的像素值;幀間編碼的宏塊的預(yù)測(cè)值是來(lái)自于運(yùn)動(dòng)矢量所指向的參考圖像中相應(yīng)區(qū)域的像素值。用圖像的原始值減去預(yù)測(cè)值得到殘差數(shù)據(jù),對(duì)殘差數(shù)據(jù)變換、量化、熵編碼,進(jìn)一步消除其冗余信息,得到視頻編碼后的碼流。
當(dāng)宏塊的編碼模式是幀內(nèi)亮度16×16或者幀內(nèi)色度8×8時(shí),整數(shù)變換后的直流分量要提出來(lái)經(jīng)過(guò)第二次變換。編碼后的碼流進(jìn)行反變換,重建宏塊數(shù)據(jù),為后續(xù)宏塊預(yù)測(cè)做準(zhǔn)備。當(dāng)一幀圖像重建好之后,繼續(xù)對(duì)該重建圖像進(jìn)行塊濾波,消除量化造成圖像的塊效應(yīng),隨后將可用于后續(xù)圖像編碼參考的圖像數(shù)據(jù)存入?yún)⒖紙D像隊(duì)列,更新參考圖像隊(duì)列。