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