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