基于H.264解碼器的軟件優(yōu)化
3.2 軟件流水新型算法
很多設(shè)計中,解碼參數(shù)準(zhǔn)備、解碼和DMA的數(shù)據(jù)輸出等過程按順序串行執(zhí)行的,該設(shè)計有條理安排這3個過程并行執(zhí)行,充分利用DSP-BF533的指令并行執(zhí)行特點,減少各軟件模塊之間的等待時間。
下面以4×4的宏塊矩陣為例,首先給4×4矩陣標(biāo)上4行4列的坐標(biāo),然后把程序處理分成5個階段.其狀態(tài)分別按順序?qū)?yīng)1、2、4、8、16,以便狀態(tài)機運算,如表1所列。CAVLC為解析讀入的數(shù)據(jù)并為后續(xù)的圖像整合重建提供參數(shù)和參考圖像等數(shù)據(jù)的過程,hl_decode是高級解碼過程,即根據(jù)準(zhǔn)備好的條件綜合重建圖像的過程。DMA是對已解碼數(shù)據(jù)的傳送過程。對照表1和表2分析:當(dāng)新的一幀圖像到來時,當(dāng)前狀態(tài)標(biāo)號為1,此時只有CAVLC執(zhí)行;當(dāng)運行到坐標(biāo)為x=1,y=0時,進入第2個狀態(tài),當(dāng)前狀態(tài)標(biāo)號為2,CAVLC和hl_decode并行執(zhí)行;當(dāng)運行到坐標(biāo)x=1,y=1時,進入第3個狀態(tài),標(biāo)號為4,3個模塊同時并行執(zhí)行;到坐標(biāo)y>4時,進入第4個狀態(tài),標(biāo)號為8,只有hl_decode和DMA兩個并行執(zhí)行,CAVLC已經(jīng)完成對所有宏塊的解碼前準(zhǔn)備工作;再判斷x>0,進入第5個狀態(tài)。標(biāo)號為16,此時只運行DMA模塊。
因此,解碼第1個宏塊時處在狀態(tài)1,之后連續(xù)4個宏塊是狀態(tài)2,再連續(xù)11個宏塊進入狀態(tài)3,隨后1個宏塊是狀態(tài)4,最后3個宏塊進入狀態(tài)5。
如果假設(shè)CAVLC的執(zhí)行時間A,hl_decode的執(zhí)行時間B,DMA的執(zhí)行時間C,普通算法的執(zhí)行總時間T=16A+16B+16C;本文提出的方法時間T2=A+16B+3C,因此,明顯縮短了程序執(zhí)行時間。
4 測試結(jié)果
在DSP-BF533測試平臺上測試Claire.cif和Pairs.cif,從測試分析的結(jié)果看來:優(yōu)化后的結(jié)果提高解碼速率,達到實時應(yīng)用要求。結(jié)果如表3所列。
5 結(jié)束語
針對移動視頻終端應(yīng)用,根據(jù)DSP的特點,提出一個新型的軟件流水算法,使得模塊問的協(xié)作更緊密,更好利用程序運行的空余時間,減少程序等待時間,提高解碼速率。實驗測試該程序已達到對CIF圖像的實時解碼要求,以后進一步優(yōu)化,以達到更高更可靠的解碼效率,使得基于DSP-BF533的設(shè)計完全可擴展到從無線3G網(wǎng)絡(luò)、數(shù)字電視,到IP網(wǎng)絡(luò),媒體的存儲格式等不同領(lǐng)域。
評論