摘 要: 針對構(gòu)建高可靠性的多媒體數(shù)字監(jiān)控系統(tǒng)提出了一種嵌入式網(wǎng)絡(luò)視頻服務(wù)器的設(shè)計方案,介紹了基于ADSP-BF532" title="ADSP-BF532">ADSP-BF532多媒體處理器的嵌入式" title="的嵌入式">的嵌入式網(wǎng)絡(luò)視頻服務(wù)器的軟、硬件設(shè)計,,并結(jié)合該芯片的硬件指令特點進行程序優(yōu)化。實驗結(jié)果表明方案可行,,滿足監(jiān)控系統(tǒng)的需求,。
關(guān)鍵詞: 嵌入式網(wǎng)絡(luò)視頻服務(wù)器 ADSP-BF532 視頻壓縮 MPEG-4 視頻傳輸
目前,視音頻技術(shù)在各項工作和生活領(lǐng)域中得到了廣泛應(yīng)用,,還為人們提供了高效的傳輸平臺以及接入和處理手段,。多媒體監(jiān)控系統(tǒng)以其能夠?qū)崟r、形象,、真實地反映被監(jiān)控對象的特性而逐漸成為現(xiàn)代化管理,、檢測、控制的重要技術(shù)手段之一,。而網(wǎng)絡(luò)視頻技術(shù)的一個主要熱點就是嵌入式數(shù)字視頻監(jiān)控系統(tǒng),。在基于嵌入式遠程視頻監(jiān)控系統(tǒng)的研究中,國外起步較早,,并處于領(lǐng)先水平,,已經(jīng)有成熟的嵌入式網(wǎng)絡(luò)視頻服務(wù)產(chǎn)品,采用MPEG或者小波壓縮方法,,其性能普遍比較好,,但價格昂貴。國內(nèi)在這方面的研究還處于剛剛起步的階段,,隨著數(shù)字技術(shù)的發(fā)展,,圖像數(shù)據(jù)壓縮編碼技術(shù)及標準的改進,,芯片成本的不斷下降,從事研究的單位也就越來越多,。本系統(tǒng)利用美國ADI公司2004年4月最新推出的ADSP-BF532 DSPCPU芯片實現(xiàn)嵌入式網(wǎng)絡(luò)視頻服務(wù)器,,將其用于構(gòu)建高可靠性的視頻監(jiān)控系統(tǒng)。ADSP-BF532摒除了基于傳統(tǒng)架構(gòu)的傳統(tǒng)DSP和RISC控制器不能滿足視頻應(yīng)用的廣泛性,、靈活性以及標準的多樣性的缺陷,,利用ADI公司采用的全新的MSA架構(gòu)技術(shù),充分滿足了實時多媒體數(shù)字信號處理的要求,。本文研究的嵌入式網(wǎng)絡(luò)視頻服務(wù)器的設(shè)計方案,,與傳統(tǒng)的多媒體監(jiān)控系統(tǒng)相比,具有體積小,、成本低,、穩(wěn)定性高和實時性好等特點,有很強的實際應(yīng)用價值,。
1 嵌入式網(wǎng)絡(luò)視頻服務(wù)器的原理
嵌入式視頻服務(wù)器是一種提供網(wǎng)絡(luò)視頻傳輸和共享的嵌入式設(shè)備,。它采用嵌入式一體化結(jié)構(gòu),以面向?qū)崟r處理的軟件平臺,,集成了多通道視頻,、網(wǎng)絡(luò)傳輸?shù)榷喾N功能,將視頻和音頻信號進行采集,、壓縮,、復合后轉(zhuǎn)換為網(wǎng)絡(luò)IP包,采用合適的網(wǎng)絡(luò)協(xié)議實現(xiàn)了視頻和音頻壓縮數(shù)據(jù)流的實時網(wǎng)絡(luò)傳輸,,使得用戶無論身在何處都能通過網(wǎng)絡(luò)獲得指定現(xiàn)場的實時圖像和聲音信息,。此外,通過視頻服務(wù)器內(nèi)置的一個嵌入式網(wǎng)絡(luò)服務(wù)器,,還能實現(xiàn)對視頻服務(wù)器的遠程配置和其他附屬設(shè)備的遠程控制與狀態(tài)獲取,。
由于把視頻壓縮和網(wǎng)絡(luò)功能集中到一個體積很小的設(shè)備內(nèi),可以直接連入局域網(wǎng),,達到即插即看,省掉多種復雜的電纜,,安裝方便(僅需設(shè)置一個IP地址),。用戶也無需安裝任何硬件設(shè)備,僅用瀏覽器即可觀看,,也可以在上端主機編制控制程序,,通過人機界面進行瀏覽。
2 系統(tǒng)的硬件設(shè)計
基于ADSP-BF532的嵌入式網(wǎng)絡(luò)視頻服務(wù)器的主要硬件功能模塊為:視頻輸入模塊,、核心的ADSP-BF532 CPU,、視頻輸出模塊,、外部存儲模塊、仿真調(diào)試接口(JTAG)模塊以及電源模塊,。
圖1為該系統(tǒng)組成結(jié)構(gòu)圖,,具體設(shè)計如下:系統(tǒng)前端視頻采集由ADV7183實現(xiàn),視頻數(shù)據(jù)" title="視頻數(shù)據(jù)">視頻數(shù)據(jù)采集格式為YUV422Planar,,采集的數(shù)據(jù)經(jīng)過ADSP-BF532的PPI接口直接存儲在SDRAM里,,ADV7183在自己的時鐘控制下通過PPI接口自動向SDRAM單元送數(shù)據(jù),當采集完一場數(shù)據(jù)時DMA產(chǎn)生中斷,,在DMA的中斷服務(wù)程序里根據(jù)實際設(shè)定情況完成視頻處理,;音頻采集由AD1836以及外圍相應(yīng)的電路來實現(xiàn),音頻采集格式為單聲道,,8000Samples/s,,每個采樣用16Bits量化,采集的數(shù)據(jù)經(jīng)過ADSP-BF532的PPI接口直接存儲在SDRAM里,,當設(shè)定存放音頻采集數(shù)據(jù)的緩存器滿時DMA產(chǎn)生中斷,,在DMA的中斷服務(wù)程序里根據(jù)實際設(shè)定情況處理音頻數(shù)據(jù); ADSP-BF532一方面把采集來的視頻音頻數(shù)據(jù)經(jīng)SPI接口送入MPC860進行處理,,通過MPC860的MII接口與物理網(wǎng)絡(luò)相連接,,然后送到PC機上供實時監(jiān)看和監(jiān)聽;一方面實時處理采集的音視頻數(shù)據(jù),,壓縮編碼完成后的數(shù)據(jù)送到PC機,,并存入硬盤。系統(tǒng)配置JTAG接口,,運用于調(diào)試階段,。本文主要研究嵌入式視頻服務(wù)器中的視頻數(shù)據(jù)的處理,對于音頻數(shù)據(jù)不予介紹,。
3 系統(tǒng)的軟件設(shè)計與優(yōu)化
系統(tǒng)在Blackfin系列的軟件開發(fā)環(huán)境Visual DSP++3.1下實現(xiàn),,主要分為視頻外設(shè)編程、視頻編碼編程,、視頻傳輸編程以及系統(tǒng)優(yōu)化部分,。
3.1 系統(tǒng)外設(shè)軟件設(shè)計
視頻輸入設(shè)備ADV7183:ADSP-BF532通過I2C總線配置ADV7183采集圖像的亮度、對比度,、色度和飽和度等,。ADV7183的內(nèi)部控制寄存器訪問通過I2C總線接口完成。
視頻輸入PPI接口:半雙工形式,,最大16位數(shù)據(jù)傳輸,,輸入時采用二維DMA方法,每采集一幀圖像進行一次處理。二維DMA程序如下:
本程序采用標準的ITU-656接收模式,,接收視頻數(shù)據(jù)字節(jié)流:
X_COUNT=360; Y_COUNT=288;
X_MODIFY=4; Y_MODIY=4,;
按以上設(shè)置執(zhí)行二維DMA后,從首地址開始的內(nèi)存數(shù)據(jù)排列:
0,, 4,, 8, …… 356
360,, 360+4,, 360+8, …… 360+356
2×360,, 2×360+4,, ?? 2×360+8 …… 2×360+356
…… …… …… …… ……
284×360,284×360+4,,284×360+8,,……284×360+356
視頻輸出UART接口:利用ADSP-BF532提供的UART口,加快調(diào)試過程,。
串行SPI和網(wǎng)絡(luò)接口設(shè)備MPC860的編程:利用SPI接口,,將ADSP-BF532作為傳輸數(shù)據(jù)的主設(shè)備,MPC860作為從設(shè)備,,將數(shù)據(jù)傳送給MPC860處理,接收視頻數(shù)據(jù)并提供網(wǎng)絡(luò)接口,。其中網(wǎng)口、SPI接口接收數(shù)據(jù)的流程如圖2所示,。
3.2 視頻編碼
考慮到壓縮效率和碼率,,視頻服務(wù)器的核心采用了MPEG-4 Simple Profile標準進行視頻壓縮編碼。只進行幀內(nèi)編碼(I幀)和幀間預測編碼(P幀),,而不進行雙向預測編碼(B幀),,適合矩形視頻對象(Video Object)編碼?! ?BR> 其中的核心算法有DCT和IDCT,,它采用2D 8×8 DCT,并且采用循環(huán)緩沖,充分利用了Blackfin DSP的優(yōu)勢,,減少了循環(huán)體內(nèi)部的指令執(zhí)行數(shù),;MPEG-4采用兩種方法確定量化步長,一是采用TM5速率控制方式,,二是采用MPEG-4中定義的速率控制模型,,它們都是通過碼流速率大小以及圖像質(zhì)量的要求來改變量化系數(shù)。MPEG-4的直流系數(shù)量化采用非線性量化方式,,交流系數(shù)既可以選擇H.263量化也可以使用MPEG量化,這里采用H.263模式,。表1為MPEG-4量化操作表,。
運動預測使用條塊SAD(當前的圖像與預測圖像的絕對差值和)最小搜索出最匹配的宏塊,,而且Blackfin DSP提供了一條視頻專用指令SAA,大大提高了速度,;最后用邊界填充(PADDING)減少在宏塊邊界上的運動誤差,。
3.3 視頻網(wǎng)絡(luò)傳輸?shù)膶崿F(xiàn)
經(jīng)過視頻采集、壓縮后的視頻數(shù)據(jù)通過網(wǎng)絡(luò)進行傳輸,,其傳輸層用TCP傳輸協(xié)議" title="傳輸協(xié)議">傳輸協(xié)議傳輸信息包很小的操作控制命令,,用UDP傳輸協(xié)議傳輸視頻圖像數(shù)據(jù)。因為TCP這種傳統(tǒng)的連接協(xié)議必須要求數(shù)據(jù)無誤地順序傳輸?shù)娇蛻舳说膽?yīng)用層,,可以利用TCP傳輸協(xié)議傳輸網(wǎng)絡(luò)監(jiān)控中的控制命令,,保證服務(wù)器和客戶端正確接收到操作命令。UDP傳輸協(xié)議沒有提供網(wǎng)絡(luò)流量控制和數(shù)據(jù)包丟失,、出錯處理,,在高級壓縮算法如MPEG-4采用了幀間壓縮的方法,數(shù)據(jù)包丟失可能影響到連續(xù)幾幀視頻圖像,。所以,,基于UDP傳輸協(xié)議的應(yīng)用程序必須靠設(shè)計解決可靠性問題。
上端軟件提供友好的用戶界面,,用Visual C++6.0實現(xiàn),。根據(jù)用戶的需求,通過網(wǎng)絡(luò)從遠程終端接收視頻數(shù)據(jù),,包括MPEG-4的解碼過程,、網(wǎng)絡(luò)傳輸控制和網(wǎng)絡(luò)命令編碼等。有兩種編寫方式,,第一種需要專門寫一個服務(wù)器/客戶端軟件來發(fā)送和接收視頻圖像數(shù)據(jù),;第二種可以采用服務(wù)器/瀏覽器模式,即將客戶端軟件做成控件,,嵌入到網(wǎng)頁中,,做成基于WEB的數(shù)字視頻服務(wù)器。本文采用第一種方式,。
網(wǎng)絡(luò)通訊模塊采用組播技術(shù),,提高程序的效率。系統(tǒng)IP網(wǎng)絡(luò)數(shù)據(jù)通信流程圖如圖3所示,。本文為實現(xiàn)組播服務(wù)特別寫了一個類CMulticast,,它是專門為視頻傳輸而封裝的類,用于服務(wù)器和客戶機兩端,。下面對此類的公共訪問函數(shù)進行介紹,。
class CMulticast : public Cobject
{
public:
void Close(); //關(guān)閉創(chuàng)建的套接字" title="套接字">套接字
BOOL IsConnect();
Static Void Unintilize(); //Winsock終止
Static Void Initilize(); //Winsock啟動
Int Receive(char* lpData, int size); //從指定組的指定端口讀取數(shù)據(jù)
Int Send(char* lpData, int size) //向目的地址發(fā)送消息
BOOL Create(Cstring lpstrAddr,unsigned short port,HWND HWND);//創(chuàng)建和綁發(fā)送或接收套接字并把該套接字加入組播組,并設(shè)置了消息回調(diào)機制
CMulticast();
Virtual ~CMulticast()
Public:
HWND m_hWnd; //用于消息傳遞的窗口句柄
SOCKET m_hSocket; //發(fā)送或接收用套接字
SOCKET m_hGroupSocket; //組套接字
BOOL m_bConnected; //是否已經(jīng)加入到一個組
SOCKADDR_IN addr; //發(fā)送套接字地址
SOCKADDR_IN srcaddr; //接收或發(fā)送的目的地址
}
3.3 系統(tǒng)級優(yōu)化
Blackfin軟件開發(fā)平臺的編譯系統(tǒng)支持ANSI C以及C++編譯,其系統(tǒng)還提供了大量的多媒體操作指令,。在針對系統(tǒng)軟件開發(fā)時,,可以根據(jù)硬件的特點研究和開發(fā)調(diào)試過程中的經(jīng)驗,對代碼的編譯和具體任務(wù)的處理進行優(yōu)化,。另外為了獲得較好的壓縮圖像質(zhì)量和較高的編碼效率,,要對MEPG-4視頻編碼算法進行適當?shù)膬?yōu)化,以及針對要縮短顯示模塊代碼執(zhí)行時間而進行上端軟件的設(shè)計優(yōu)化,。
4 實驗結(jié)果
在該實驗的基礎(chǔ)上,,經(jīng)過對ADV7183采集的視頻序列(幀率為30fps,CIF格式)進行測試,結(jié)果表明:(1)DSP可通過SPI接口實時傳輸視頻圖像編碼數(shù)據(jù),,數(shù)據(jù)不丟失,,不出錯;(2)在對MPEG-4視頻壓縮編碼測試時重建圖像質(zhì)量保真度接近1,;(3)在局域網(wǎng)上作模擬實驗,,可以實時傳輸CIF尺寸視頻圖像,傳輸延遲控制在0.5s以內(nèi),;(4)UART接口能夠完成本地視頻輸出,。基于ADSP-BF532的嵌入式網(wǎng)絡(luò)視頻服務(wù)器的設(shè)計方案是可行的,,但是某些技術(shù)指標仍然無法勝任實際的應(yīng)用場合,,需要進一步提高視頻壓縮的測試結(jié)果,增加大容量的硬盤存儲系統(tǒng)來存儲視頻數(shù)據(jù),。
參考文獻
1 ADSP-BF532 Blackfin DSP Hardware Reference.Analog De-vice,April 2003
2 Visual DSP++3.1 C/C++ Compiler and Library Manual for Blackfin Processors. Analog Device,April 2003
3 劉富強. 數(shù)字視頻監(jiān)控系統(tǒng)開發(fā)及應(yīng)用.北京:機械工業(yè)出版社,2003
4 鐘玉琢, 王 琪, 賀玉文. 基于對象的多媒體數(shù)據(jù)壓縮編碼國際標準——MPEG-4及其校驗模型.北京:科學出版社, 2000