基于DSP的H264數(shù)字視頻服務(wù)器設(shè)計
0 引言
本文引用地址:http://2s4d.com/article/201609/304161.htm隨著科技的日新月異,視頻監(jiān)控應(yīng)用得到了飛速發(fā)展。視頻監(jiān)控以其直觀、方便、信息內(nèi)容豐富而廣泛應(yīng)用于許多場合。近年來,隨著互聯(lián)網(wǎng)的大范圍普及以及計算機網(wǎng)絡(luò)和圖像處理、信息傳輸技術(shù)的發(fā)展,視頻監(jiān)控技術(shù)也有了長足的發(fā)展。視頻監(jiān)控已經(jīng)滲透到教育、政府、娛樂場合、醫(yī)院、酒店、運動場館、城市治安等多種領(lǐng)域。目前安防監(jiān)控的要求對于設(shè)備提出了較高的要求:比如對于傳輸?shù)膶崟r性,畫面的質(zhì)量的要求。本文實現(xiàn)一個基于DSP的H264視頻監(jiān)控服務(wù)器的(DVS)設(shè)計,它具有較高的壓縮比,低誤碼率以及較低的失真對視頻進(jìn)行編碼,由TCP/IP協(xié)議實現(xiàn)了視頻的網(wǎng)絡(luò)輸出,可以達(dá)到視頻傳輸?shù)膶崟r性。
1 系統(tǒng)設(shè)計
如圖1所示,本系統(tǒng)采用TI的DM6467處理器,DSP架構(gòu)的硬件平臺系列,具有強大的計算能力,在低功耗的前提下可達(dá)到1.2GHz,以及包含了H26x的編解碼庫,可以滿足對視頻算法的需求,此外,此平臺支持多種外設(shè),諸如PCI、LAN、以及各種視屏輸入,廣泛應(yīng)用于視頻會議、監(jiān)控系統(tǒng)、機頂設(shè)備。因此,此平臺可以用來設(shè)計H264的視頻服務(wù)器。
視頻服務(wù)器的系統(tǒng)構(gòu)架主要包括視頻采集模塊、視屏編碼模塊以及網(wǎng)絡(luò)傳輸模塊。
在系統(tǒng)上電之后,加載程序編譯成功的.out文件,初始化DSP/BIOS系統(tǒng),以及視頻編碼庫。視頻采集處理過程如下:攝像機的PAL視頻通過AD轉(zhuǎn)為數(shù)字信號,并且通過內(nèi)部算法轉(zhuǎn)為YUV(4:2:2),然后通過接口EMIF把數(shù)據(jù)傳遞至存儲器EEPROM中,然后DSP采用視頻編碼庫中的H264算法對數(shù)據(jù)進(jìn)行壓縮,通過TCP協(xié)議將壓縮后的視頻信號通過以太網(wǎng)LAN傳輸出去,從而構(gòu)成了視頻服務(wù)器,而客戶端只需要按照TCP協(xié)議接收數(shù)據(jù)并解碼,就可以實時顯示圖像。
1.1 視頻采集模塊
圖3為視頻采集模塊的原理圖,CVBS為視頻輸入,可以將模擬視頻信號轉(zhuǎn)換為YUV分量,輸出為ITU—R BT.656,其中對該編碼器的配置是通過IIC總線將指令寫入內(nèi)部寄存器,就可以正常采取視頻信號并把數(shù)據(jù)傳給存儲器做進(jìn)一步的處理。
在此系統(tǒng)中,使用了ROM對視頻信號做緩存以及編碼處理(圖4),芯片通過CS、OE來控制芯片并對其做讀取操作。它和DSP的連接示意圖如圖4所示。
1.2 H264算法
H264具有壓縮率高以及失真率低的優(yōu)點,其實現(xiàn)過程如下:1)把當(dāng)前的圖像劃分成若干個子模塊,以子模塊作為編碼的基本單元;2)通過當(dāng)前幀減去預(yù)測值經(jīng)過變換、量化、重排、熵編碼,從而加強了壓縮率;3)采用了時域運動補償?shù)姆椒?,從而減少了冗余以及增強信道傳輸?shù)娜蒎e性。
DM64xx芯片本身具有H264編碼庫,在開發(fā)的時候只需加載h264enc.lib并調(diào)用函數(shù)int h264.enc即可,參數(shù)聲明如下:
Unsigned char*pic原始圖像首地址
Unsigned char*ostream編碼后輸出數(shù)據(jù)流緩沖地址
int channel對應(yīng)的編碼通道號,不重疊的正整數(shù)
int *frametype幀類型
1.3 TCP協(xié)議以及IEEE802.3以太網(wǎng)
控制傳輸協(xié)議(TCP)是一種可靠的、基于字節(jié)流的傳輸層通信協(xié)議。高可靠性是通過發(fā)送數(shù)據(jù)前先建立連接,結(jié)束數(shù)據(jù)傳輸時關(guān)閉連接,在數(shù)據(jù)傳輸過程中進(jìn)行超時重發(fā)、流量控制和數(shù)據(jù)確認(rèn),對亂序數(shù)據(jù)進(jìn)行重排校驗等機制來實現(xiàn)的。利用協(xié)議網(wǎng)絡(luò)通信,通信進(jìn)程間相互作用的主要模式是服務(wù)器,客戶機模式通信的具體編程由套接字來實現(xiàn),套接字是網(wǎng)絡(luò)程序設(shè)計接口,分為流式套接字和用戶數(shù)據(jù)報,流式套接字提供一種面向連接的、可靠的雙向數(shù)據(jù)傳輸服務(wù),實現(xiàn)數(shù)據(jù)無差錯無重復(fù)的發(fā)送,流式套接字內(nèi)設(shè)流量控制,被傳輸?shù)臄?shù)據(jù)看做是無記錄邊界的字節(jié)流在協(xié)議族中,使用TCP協(xié)議實現(xiàn)字節(jié)流的傳輸,當(dāng)要發(fā)送大批量數(shù)據(jù)或者對數(shù)據(jù)傳輸有較高的要求時,使用流套接字。
在本設(shè)計中,如圖5所示,首先創(chuàng)建Socket,綁定IP地址和端口值,協(xié)議設(shè)置為IPv4同時設(shè)定掩碼值,設(shè)定最大字節(jié)數(shù)目,然后創(chuàng)建連接請求,若連接成功則從緩存區(qū)讀取若干字節(jié)發(fā)送出去,否則的話將阻塞在該進(jìn)程中。此外為了保證視頻的流暢性,在網(wǎng)絡(luò)情況不好的情況下進(jìn)行丟幀處理,同時在緩存區(qū)設(shè)置標(biāo)志位,當(dāng)緩存區(qū)的數(shù)據(jù)全部被套接字處理之后,該標(biāo)志位設(shè)置為有效,從而清理緩存區(qū),從而加載新的視頻數(shù)據(jù)做進(jìn)一步處理。
該處理器外設(shè)的以太網(wǎng)結(jié)構(gòu)如圖6所示。在DSP處理器和EMAC控制器之間用設(shè)備總線相連,EMAC控制器可以使用DSP內(nèi)存,并且控制中斷和復(fù)位,及內(nèi)存使用的優(yōu)先級。另外EMAC單元還可以提供網(wǎng)絡(luò)和處理器內(nèi)核的接口,支持1 0、100Mpbs數(shù)據(jù)傳輸。MDIO可以查詢和控制以太網(wǎng)PHY,它可以配置以太網(wǎng)的參數(shù),從而達(dá)到糾錯的目的,同時又可以獲取數(shù)據(jù)傳輸結(jié)果。
2 客戶端的實現(xiàn)
客戶端無論是Windows或者Linux系統(tǒng)都具有Socket API,可以實現(xiàn)TCP傳輸協(xié)議,首先創(chuàng)建Socket并連接服務(wù)器端,并讀取來buffer的數(shù)據(jù),在接收到數(shù)據(jù)之后,需要通過解碼將視頻顯示出來,通過加載動態(tài)鏈接庫,調(diào)用視頻播放器的API接口函數(shù)即可。Windows程序加載DLL的流程如圖7所示,客戶端工作流程如圖8所示。
評論