基于ADSP-BF5619處理的H.264視頻編碼器設(shè)計(jì)
2.1 P幀編碼流程的優(yōu)化
由于H.264編碼算法比較龐大,對(duì)程序細(xì)節(jié)上進(jìn)行優(yōu)化事實(shí)上不能帶來(lái)明顯的效率提高,所以應(yīng)對(duì)程序流程本身進(jìn)行調(diào)整。在H.264編碼器JM86版本中,I幀、P幀的編碼采用同一模塊,這樣就有大量幀內(nèi)、幀間宏塊的重復(fù)判斷,故使編碼速度受限。Micro_h264編碼軟件模型針對(duì)這一缺點(diǎn)進(jìn)行了處理,將I幀、P幀的編碼提取出來(lái)分別獨(dú)立編碼。但是遺憾的是,micro_h264編碼軟件模型對(duì)一幀圖像的宏塊進(jìn)行編碼是按照宏塊在圖像中的光柵掃描順序一一進(jìn)行的,沒(méi)有考慮到宏塊在一幀圖像中的不同位置有著不同的特性,而且對(duì)這些宏塊采用統(tǒng)一模式進(jìn)行編碼,也會(huì)產(chǎn)生很多判斷條件,這不但不利于DSP的流水操作,也不利于模塊的優(yōu)化。本文針對(duì)這一個(gè)缺點(diǎn)對(duì)micro h264的P幀編碼流程進(jìn)行優(yōu)化。
根據(jù)宏塊在一幀圖像中位置的不同,可以對(duì)不同位置的宏塊分別獨(dú)立進(jìn)行編碼。同時(shí),根據(jù)子塊在宏塊中的不同位置,也可以對(duì)其進(jìn)行獨(dú)立編碼。
一幀圖像被分成多個(gè)宏塊時(shí),不同位置的宏塊有不同的特性。因此,可以根據(jù)宏塊在一幀圖像中的不同位置來(lái)對(duì)宏塊進(jìn)行分類,以將具有相同編碼特性的宏塊歸為一類,這樣,可以將幀圖像的宏塊分成五類。圖3所示是其宏塊分類圖。
通過(guò)對(duì)宏塊進(jìn)行分類,可對(duì)不同的宏塊調(diào)用不同的函數(shù)來(lái)對(duì)其獨(dú)立編碼,從而減少很多不必要的判斷,這樣就不會(huì)打斷DSP的流水操作,達(dá)到提高速度之目的,同時(shí)在進(jìn)行優(yōu)化時(shí)也更具針對(duì)性。
本編碼器在P幀編碼時(shí),只用了一幀參考幀,并且改進(jìn)了micro_h264編碼器軟件模型所使用的對(duì)宏塊編碼模式逐一遍歷的算法,而是采用宏塊編碼模式快速選擇算法。P幀編碼的流程圖如圖4所示。本文引用地址:http://www.ex-cimer.com/article/166848.htm
運(yùn)行平臺(tái)的不同,軟件結(jié)構(gòu)也應(yīng)該根據(jù)各自的特點(diǎn)做些調(diào)整。較低復(fù)雜度的編碼器可將多個(gè)不同類宏塊獨(dú)立出來(lái)單獨(dú)處理,這樣可以省去許多中間的重復(fù)判斷,不僅能提高編碼速度,同時(shí)程序結(jié)構(gòu)也顯得更為清晰,而且,由于各個(gè)模塊的相對(duì)獨(dú)立,也有利于程序的擴(kuò)展。雖然這樣在一定程度上增加了代碼量,但卻能有效地提高編碼速度。
2.2 ADSP-BF561雙核處理系統(tǒng)的優(yōu)化
為了保證編碼器的穩(wěn)定工作,本文把內(nèi)核定位在600 MHz,如果能在600 MHz的基礎(chǔ)上實(shí)現(xiàn)4CIF格式的實(shí)時(shí)編碼,那么,提高內(nèi)核處理頻率就能支持更高質(zhì)量的4CIF格式的視頻編碼處理。為了實(shí)現(xiàn)25幀圖像的實(shí)時(shí)編碼,每幀需要的時(shí)鐘周期數(shù)為600 MHz/25=24MHz,即需要在24 MHz時(shí)鐘周期數(shù)內(nèi)編碼一幀。大約相當(dāng)于在6 MHz內(nèi)進(jìn)行一幀CIF格式的視頻處理,顯然,如果使用一個(gè)核是很難做到實(shí)時(shí)編碼處理的。本文不同于大多數(shù)雙核系統(tǒng)的一個(gè)核運(yùn)行操作系統(tǒng),而另一個(gè)核運(yùn)行其它軟件的工作方式,是將編碼器放在兩個(gè)核內(nèi)同時(shí)進(jìn)行處理。
評(píng)論