基于TMS320DM642和H.264的網(wǎng)絡(luò)視頻監(jiān)控系統(tǒng)設(shè)計(jì)
硬件系統(tǒng)的工作過(guò)程如下:首先是模擬COMS攝像頭采集PAL制式的模擬視頻信號(hào)。然后圖像A/D轉(zhuǎn)換芯片SAA7115HL會(huì)將模擬視頻信號(hào)轉(zhuǎn)換成數(shù)字視頻信號(hào)并傳輸給TMS320DM642。TMS320DM642中的EDMA控制器會(huì)先將從A/D轉(zhuǎn)換器得到的視頻圖像存儲(chǔ)到SDRAM中,等到TMS320DM6 42處理器已經(jīng)準(zhǔn)備好處理圖像的時(shí)候,再?gòu)腟DRAM中將圖像取出來(lái)進(jìn)行H.264格式的編碼壓縮。編碼完成之后,會(huì)得到H.264的編碼碼流,這個(gè)時(shí)候,再利用RTP/UDP/IP的協(xié)議棧將H.264的編碼碼流進(jìn)行逐層打包并通過(guò)EMAC接口發(fā)送到因特網(wǎng)上。
2 H.264編碼器的優(yōu)化
H.264的編碼器是非常復(fù)雜的,所以,當(dāng)我們用C代碼實(shí)現(xiàn)其功能的時(shí)候,往往會(huì)面臨實(shí)時(shí)性的問(wèn)題,即處理器無(wú)法在1s內(nèi)完成所要求的數(shù)據(jù)處理量。為了使視頻遠(yuǎn)端顯示連續(xù),必需使處理器在1s內(nèi)能夠壓縮編碼并通過(guò)網(wǎng)絡(luò)傳輸20幀以上的圖像。但是,在寫(xiě)出第一版代碼時(shí),會(huì)發(fā)現(xiàn)處理器根本就無(wú)法達(dá)到要求,在1s鐘之內(nèi),它只能處理5-6幀的圖像,因此就必須對(duì)編碼器進(jìn)行優(yōu)化,以求能夠達(dá)到實(shí)時(shí)性。
一般來(lái)說(shuō),如果在DSP中實(shí)現(xiàn)H.264的編碼器優(yōu)化,那么優(yōu)化過(guò)程主要分為四個(gè)階段,分別是算法優(yōu)化、C代碼優(yōu)化、線性匯編的優(yōu)化、CCS編譯器下的選項(xiàng)優(yōu)化,它們被順序的完成。在DSP中實(shí)現(xiàn)H.264編碼器的優(yōu)化過(guò)程見(jiàn)圖2。本文引用地址:http://cafeforensic.com/article/162189.htm
H.264的編碼算法主要有:幀內(nèi)預(yù)測(cè)編碼、幀間預(yù)測(cè)編碼、DCT變換和量化、熵編碼,其中最消耗時(shí)間的是幀間預(yù)測(cè)編碼,它用的時(shí)間要占到整套算法運(yùn)行時(shí)間80%左右,因此,幀間預(yù)測(cè)編碼算法的優(yōu)化也就成為H.264編碼器算法優(yōu)化的重點(diǎn)。
實(shí)現(xiàn)編碼器C代碼的優(yōu)化,主要是注意在寫(xiě)C代碼的時(shí)候要寫(xiě)出高效簡(jiǎn)潔的代碼,使在能夠保持算法基本功能的前提下,占用的處理器運(yùn)算資源最少。如果C代碼級(jí)優(yōu)化完了之后,還不能滿(mǎn)足實(shí)時(shí)性,就必須用到線性匯編的優(yōu)化。線性匯編代碼是對(duì)影響速度的關(guān)鍵C代碼進(jìn)行重寫(xiě)。線性匯編代碼與C6000的匯編代碼類(lèi)似,不同的是線性匯編代碼并不用像匯編代碼那樣要給出所有的信息,它可以對(duì)這些信息進(jìn)行一些選擇,也可以由匯編優(yōu)化器確定,如指令使用的寄存器,指令使用的功能單元等,匯編優(yōu)化器會(huì)根據(jù)代碼的情況確定這些信息,并產(chǎn)生匯編文件。
在優(yōu)化過(guò)程中,一般都會(huì)借助于編譯器自帶的優(yōu)化功能進(jìn)行優(yōu)化。CCS中有優(yōu)化選項(xiàng),來(lái)幫助我們對(duì)代碼進(jìn)行進(jìn)一步的優(yōu)化。優(yōu)化選項(xiàng)共有四個(gè):o0、o1、o2、o3。o0級(jí)別的優(yōu)化內(nèi)容有:簡(jiǎn)化控制流圖、分配變量到寄存器、進(jìn)行循環(huán)旋轉(zhuǎn)、刪除未使用的代碼、簡(jiǎn)化表達(dá)式和代碼;o1級(jí)別的優(yōu)化除了包括o0的內(nèi)容外還有:執(zhí)行局部復(fù)制/常量傳遞、刪除未使用的賦值語(yǔ)句、刪除局部共有表達(dá)式:o2級(jí)別的優(yōu)化除了包括o1的內(nèi)容外還有:進(jìn)行軟件流水、進(jìn)行循環(huán)優(yōu)化、刪除全局共有子表達(dá)式、刪除全局未使用的賦值語(yǔ)句、把循環(huán)中對(duì)數(shù)組的引用轉(zhuǎn)變?yōu)檫f增的指針形式、進(jìn)行循環(huán)展開(kāi);o3級(jí)別的優(yōu)化除了包括o2的內(nèi)容外還有:刪除未使用的所有函數(shù)、內(nèi)聯(lián)小的函數(shù)、重新對(duì)函數(shù)聲明進(jìn)行排序、識(shí)別文件變量的特征。
評(píng)論