基于DSP的H264數字視頻服務(wù)器設計
0 引言
本文引用地址:http://dyxdggzs.com/article/201609/304161.htm隨著(zhù)科技的日新月異,視頻監控應用得到了飛速發(fā)展。視頻監控以其直觀(guān)、方便、信息內容豐富而廣泛應用于許多場(chǎng)合。近年來(lái),隨著(zhù)互聯(lián)網(wǎng)的大范圍普及以及計算機網(wǎng)絡(luò )和圖像處理、信息傳輸技術(shù)的發(fā)展,視頻監控技術(shù)也有了長(cháng)足的發(fā)展。視頻監控已經(jīng)滲透到教育、政府、娛樂(lè )場(chǎng)合、醫院、酒店、運動(dòng)場(chǎng)館、城市治安等多種領(lǐng)域。目前安防監控的要求對于設備提出了較高的要求:比如對于傳輸的實(shí)時(shí)性,畫(huà)面的質(zhì)量的要求。本文實(shí)現一個(gè)基于DSP的H264視頻監控服務(wù)器的(DVS)設計,它具有較高的壓縮比,低誤碼率以及較低的失真對視頻進(jìn)行編碼,由TCP/IP協(xié)議實(shí)現了視頻的網(wǎng)絡(luò )輸出,可以達到視頻傳輸的實(shí)時(shí)性。
1 系統設計
如圖1所示,本系統采用TI的DM6467處理器,DSP架構的硬件平臺系列,具有強大的計算能力,在低功耗的前提下可達到1.2GHz,以及包含了H26x的編解碼庫,可以滿(mǎn)足對視頻算法的需求,此外,此平臺支持多種外設,諸如PCI、LAN、以及各種視屏輸入,廣泛應用于視頻會(huì )議、監控系統、機頂設備。因此,此平臺可以用來(lái)設計H264的視頻服務(wù)器。

視頻服務(wù)器的系統構架主要包括視頻采集模塊、視屏編碼模塊以及網(wǎng)絡(luò )傳輸模塊。

在系統上電之后,加載程序編譯成功的.out文件,初始化DSP/BIOS系統,以及視頻編碼庫。視頻采集處理過(guò)程如下:攝像機的PAL視頻通過(guò)AD轉為數字信號,并且通過(guò)內部算法轉為YUV(4:2:2),然后通過(guò)接口EMIF把數據傳遞至存儲器EEPROM中,然后DSP采用視頻編碼庫中的H264算法對數據進(jìn)行壓縮,通過(guò)TCP協(xié)議將壓縮后的視頻信號通過(guò)以太網(wǎng)LAN傳輸出去,從而構成了視頻服務(wù)器,而客戶(hù)端只需要按照TCP協(xié)議接收數據并解碼,就可以實(shí)時(shí)顯示圖像。
1.1 視頻采集模塊
圖3為視頻采集模塊的原理圖,CVBS為視頻輸入,可以將模擬視頻信號轉換為YUV分量,輸出為ITU—R BT.656,其中對該編碼器的配置是通過(guò)IIC總線(xiàn)將指令寫(xiě)入內部寄存器,就可以正常采取視頻信號并把數據傳給存儲器做進(jìn)一步的處理。

在此系統中,使用了ROM對視頻信號做緩存以及編碼處理(圖4),芯片通過(guò)CS、OE來(lái)控制芯片并對其做讀取操作。它和DSP的連接示意圖如圖4所示。

1.2 H264算法
H264具有壓縮率高以及失真率低的優(yōu)點(diǎn),其實(shí)現過(guò)程如下:1)把當前的圖像劃分成若干個(gè)子模塊,以子模塊作為編碼的基本單元;2)通過(guò)當前幀減去預測值經(jīng)過(guò)變換、量化、重排、熵編碼,從而加強了壓縮率;3)采用了時(shí)域運動(dòng)補償的方法,從而減少了冗余以及增強信道傳輸的容錯性。
DM64xx芯片本身具有H264編碼庫,在開(kāi)發(fā)的時(shí)候只需加載h264enc.lib并調用函數int h264.enc即可,參數聲明如下:
Unsigned char*pic原始圖像首地址
Unsigned char*ostream編碼后輸出數據流緩沖地址
int channel對應的編碼通道號,不重疊的正整數
int *frametype幀類(lèi)型
1.3 TCP協(xié)議以及IEEE802.3以太網(wǎng)
控制傳輸協(xié)議(TCP)是一種可靠的、基于字節流的傳輸層通信協(xié)議。高可靠性是通過(guò)發(fā)送數據前先建立連接,結束數據傳輸時(shí)關(guān)閉連接,在數據傳輸過(guò)程中進(jìn)行超時(shí)重發(fā)、流量控制和數據確認,對亂序數據進(jìn)行重排校驗等機制來(lái)實(shí)現的。利用協(xié)議網(wǎng)絡(luò )通信,通信進(jìn)程間相互作用的主要模式是服務(wù)器,客戶(hù)機模式通信的具體編程由套接字來(lái)實(shí)現,套接字是網(wǎng)絡(luò )程序設計接口,分為流式套接字和用戶(hù)數據報,流式套接字提供一種面向連接的、可靠的雙向數據傳輸服務(wù),實(shí)現數據無(wú)差錯無(wú)重復的發(fā)送,流式套接字內設流量控制,被傳輸的數據看做是無(wú)記錄邊界的字節流在協(xié)議族中,使用TCP協(xié)議實(shí)現字節流的傳輸,當要發(fā)送大批量數據或者對數據傳輸有較高的要求時(shí),使用流套接字。
在本設計中,如圖5所示,首先創(chuàng )建Socket,綁定IP地址和端口值,協(xié)議設置為IPv4同時(shí)設定掩碼值,設定最大字節數目,然后創(chuàng )建連接請求,若連接成功則從緩存區讀取若干字節發(fā)送出去,否則的話(huà)將阻塞在該進(jìn)程中。此外為了保證視頻的流暢性,在網(wǎng)絡(luò )情況不好的情況下進(jìn)行丟幀處理,同時(shí)在緩存區設置標志位,當緩存區的數據全部被套接字處理之后,該標志位設置為有效,從而清理緩存區,從而加載新的視頻數據做進(jìn)一步處理。

該處理器外設的以太網(wǎng)結構如圖6所示。在DSP處理器和EMAC控制器之間用設備總線(xiàn)相連,EMAC控制器可以使用DSP內存,并且控制中斷和復位,及內存使用的優(yōu)先級。另外EMAC單元還可以提供網(wǎng)絡(luò )和處理器內核的接口,支持1 0、100Mpbs數據傳輸。MDIO可以查詢(xún)和控制以太網(wǎng)PHY,它可以配置以太網(wǎng)的參數,從而達到糾錯的目的,同時(shí)又可以獲取數據傳輸結果。
2 客戶(hù)端的實(shí)現
客戶(hù)端無(wú)論是Windows或者Linux系統都具有Socket API,可以實(shí)現TCP傳輸協(xié)議,首先創(chuàng )建Socket并連接服務(wù)器端,并讀取來(lái)buffer的數據,在接收到數據之后,需要通過(guò)解碼將視頻顯示出來(lái),通過(guò)加載動(dòng)態(tài)鏈接庫,調用視頻播放器的API接口函數即可。Windows程序加載DLL的流程如圖7所示,客戶(hù)端工作流程如圖8所示。


評論