扈樂華 顧思思 李 文*
(湖南科技學(xué)院 電子與信息工程學(xué)院,湖南 永州425007)
H.264 是一種視頻和圖像在編碼、傳送、接收、解碼的實現(xiàn)過程中,程序員必須遵守的統(tǒng)一規(guī)范和標(biāo)準(zhǔn)。H.264 沒有對視頻編碼器和解碼器做細致的開發(fā),但是制定了編碼過程中的碼流標(biāo)準(zhǔn)和針對碼流的嚴(yán)格的解碼標(biāo)準(zhǔn)。[1]在很大程度上有利于開發(fā)者自主設(shè)計出編碼器和解碼器。H.264 標(biāo)準(zhǔn)編碼器主要就算法方面加以優(yōu)化,并沒有就運動估計和量化過程做出大的修改。H.264 解碼標(biāo)準(zhǔn)中。關(guān)鍵的解碼過程主要有:熵解碼實現(xiàn)、運動補償實現(xiàn)、去方塊濾波實現(xiàn)、反變換實現(xiàn)以及反量化實現(xiàn)等模塊。主要解碼流程圖如下圖1 所示。
圖1 H.264 解碼流程圖
本系統(tǒng)主要包括兩個大的模塊Android 客戶端模塊和PC端服務(wù)器模塊,其中Android 客戶端模塊主要包括拍照模塊,錄音模塊,錄像模塊,文件瀏覽模塊;PC 端服務(wù)器主要包括回顯視頻流和接收上傳文件模塊組成。如下圖2 所示。
(1)照相模塊:包括拍照,取消等選項。
(2)錄音模塊:主要包括錄制,暫停,播放,完成,刪除等選項。
(3)錄像模塊:錄制,停止,保存,發(fā)送(PC 端服務(wù)器)等選項。
(4)文件瀏覽模塊:主要包括視頻文件瀏覽選項。
(5)PC 回顯視頻流:實時監(jiān)聽Android 客戶端傳輸?shù)牧髅襟w。
(6)PC 接收上傳文件功能:接收文件,顯示文件基本信息,顯示接收結(jié)果。
需要實現(xiàn)的關(guān)鍵技術(shù)在解碼器的優(yōu)化,針對優(yōu)化對象的不同主要采用三種有效的優(yōu)化方式。
(1)核心代碼的優(yōu)化。針對Android 環(huán)境的特殊性,對其中的代碼精簡,簡化其中過于復(fù)雜的代碼邏輯,增加代碼與系統(tǒng)之間的耦合性,從而提升解碼器運行的效率。
(2)處理器部分指令操作的優(yōu)化。從指令集的角度出發(fā),極大程度的利用CPU 的并行處理能力,從而提升算法運算的速度。
(3)部分解碼算法優(yōu)化。對整個解碼過程涉及算法做詳細分析,找出其中可以進行優(yōu)化的部分算法,是算法優(yōu)化的重要工作。重點對其中的去方塊濾波算法作分析,其對整個解碼算法影響非常大,因此重點對去方塊濾波算法做優(yōu)化處理。接下來重點介紹對H.264 去方塊濾波算法優(yōu)化實現(xiàn)的過程。
H.264 標(biāo)準(zhǔn)去方塊濾波算法主要存在要對每一個方塊進行去方塊濾波計算的缺點,這個過程非常的復(fù)雜,需要犧牲較大的時間。在具體的算法中,需要對每一個4*4 方塊所有的行邊界的像素點進行BS 值計算。但是對BS 值計算過程占據(jù)將近方塊濾波計算工作量的60%-80%左右,分析出BS 計算量比重非常大,因此找出簡化BS 值計算的方法,可以有效的減少去方塊濾波計算量。
針對宏塊大小的差異,采用不同編碼方法,主要有幀間以及幀內(nèi)編碼。針對兩種不同的編碼方式,采用相應(yīng)預(yù)測模式,從而對BS 值進行估計的過程分為兩種方式。因為幀內(nèi)編碼的空間冗余值與時間冗余值相比小非常多,因此殘差值也要會對應(yīng)大。對幀內(nèi)編碼采用較強的去方塊濾波算法,而對幀間編碼采取較弱的去方塊濾波算法。具體的對比過程如表1 所示。
表1 中數(shù)據(jù)反映出,采用兩種不同的方式后,PSNRY 值對比標(biāo)準(zhǔn)的H.264 有一定的提升,同時改良后的解碼器的輸出碼率和標(biāo)準(zhǔn)算法較為接近。
本系統(tǒng)開發(fā)了Android 錄像上傳回顯服務(wù)器系統(tǒng),實現(xiàn)了2大模塊,6 個小模塊,Android 端重點采用H.264 編碼進行實時視頻的傳輸,在PC 端實現(xiàn)了對實時流媒體數(shù)據(jù)的接收,并且利用去方塊濾波優(yōu)化算法對其中的解碼過程進行優(yōu)化,提升了視頻接收的流暢度。但是由于網(wǎng)絡(luò)環(huán)境的差異,實時傳輸?shù)倪^程中還存在少量的丟幀以及時延等問題,后期需要對算法進行進一步的優(yōu)化,將解碼器更加完善。
表1 去塊濾波算法對比表