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