張 帥,蔣華龍,黃學(xué)達(dá)
(1.南陽(yáng)師范學(xué)院,物理與電子工程學(xué)院,河南 南陽(yáng)473061;2.重慶重郵信科通信技術(shù)有限公司,重慶400065)
數(shù)字視頻服務(wù)器(Digital Video Server,DVS)是一個(gè)復(fù)雜的系統(tǒng),它以流媒體技術(shù)、視頻編解碼技術(shù)、因特網(wǎng)通訊技術(shù)為基礎(chǔ),以視頻信號(hào)采集、壓縮、存儲(chǔ)、傳輸和播放為核心,以圖像分析為特色,是以后視頻采集壓縮設(shè)備發(fā)展的新方向,廣泛地應(yīng)用于安全生產(chǎn)、樓宇安防、火災(zāi)監(jiān)控、視頻會(huì)議等場(chǎng)合。它的主要作用是對(duì)采集的視頻圖像信號(hào)進(jìn)行壓縮,在確保一定的重建質(zhì)量的基礎(chǔ)上,使用盡量少的比特?cái)?shù)來(lái)代表視頻信息,從而降低視頻信號(hào)對(duì)傳輸帶寬和存儲(chǔ)容量的要求。
為了實(shí)現(xiàn)上述目標(biāo),必須解決以下問(wèn)題:①需要有支持實(shí)時(shí)多媒體處理的硬件平臺(tái);②需要有先進(jìn)的視頻壓縮標(biāo)準(zhǔn)。由TI 公司推出的新一代的OMAP 3530 嵌入式多媒體處理器,采用ARM+DSP 雙內(nèi)核及3D 加速設(shè)計(jì),具備一流的數(shù)字信號(hào)處理性能和微處理器功能,支持MPEG4、H.264/AVC,并能實(shí)現(xiàn)與ITU-R 656 視頻編解碼器的無(wú)縫連接,使用該處理器能夠很方便地構(gòu)建視頻服務(wù)器系統(tǒng),加快產(chǎn)品的開(kāi)發(fā)速度,降低成本。
本文討論和分析了基于OMAP3530[1]處理器和Linux 操作系統(tǒng)的嵌入式網(wǎng)絡(luò)視頻服務(wù)器的基本結(jié)構(gòu)及具體的實(shí)現(xiàn)方法。
該網(wǎng)絡(luò)視頻服務(wù)器具有以下3 個(gè)特點(diǎn):①整體方案采用ARM + DSP 的雙核結(jié)構(gòu);②采用H.264 標(biāo)準(zhǔn)作為視頻壓縮編碼標(biāo)準(zhǔn);③采用開(kāi)放的Linux 操作系統(tǒng)。系統(tǒng)總體結(jié)構(gòu)如圖1 所示,主要由視頻輸入/輸出模塊、音視頻信號(hào)處理模塊、音頻輸入/輸出模塊、以太網(wǎng)通信模塊、存儲(chǔ)模塊構(gòu)成。具體工程流程:首先服務(wù)器端OMAP3530 的ARM 內(nèi)核通過(guò)驅(qū)動(dòng)程序啟動(dòng)攝像頭進(jìn)行視頻采集→由CCD 攝像頭獲得的模擬視頻信號(hào)經(jīng)視頻解碼器轉(zhuǎn)換為數(shù)字視頻信號(hào)→ARM 內(nèi)核利用DSP/BIOS Link 將得到的視頻信號(hào)傳送給DSP 內(nèi)核→OMAP3530 的DSP 內(nèi)核利用優(yōu)化后的H.264 編碼器對(duì)視頻流進(jìn)行H.264 編碼→再把編碼后的視頻流回送給ARM 內(nèi)核→最后ARM 內(nèi)核通過(guò)嵌入式Linux操作系統(tǒng)的RTP/RTCP 協(xié)議棧,將數(shù)據(jù)打包,并運(yùn)行Web 服務(wù)器,等待客戶端通過(guò)網(wǎng)絡(luò)訪問(wèn)數(shù)據(jù)流。另外系統(tǒng)可以通過(guò)以太網(wǎng)接口獲取遠(yuǎn)程終端的控制數(shù)據(jù),對(duì)攝像頭進(jìn)行控制及參數(shù)設(shè)置??紤]到進(jìn)程監(jiān)控的需要,可同時(shí)將數(shù)字視頻信號(hào)直接輸出到TV 或LCD 等顯示設(shè)備上。
圖1 視頻服務(wù)器的結(jié)構(gòu)框圖
系統(tǒng)的視頻輸入模塊采用模擬CCD 攝像頭,由于CCD 攝像頭輸出信號(hào)為模擬信號(hào),處理器不能直接處理,因此需要視頻解碼器完成視頻信號(hào)的數(shù)字化,考慮到產(chǎn)品的兼容性,視頻解碼芯片選擇TI 公司的視頻解碼器TVP5158[2],它具有以下的優(yōu)點(diǎn):①在同一芯片上集成了4 個(gè)獨(dú)立的視頻解碼器,可接收4 路復(fù)合輸入或8 路獨(dú)立的攝像輸入[3];②能夠與OMAP 器件直接連接;③4 個(gè)集成視頻解碼器通過(guò)I2C 總線可同時(shí)或單獨(dú)編程;④采用TVP5158 可以構(gòu)建多通道系統(tǒng),對(duì)多個(gè)TVP5158 進(jìn)行級(jí)聯(lián),可以實(shí)現(xiàn)多路視頻輸入,大大減少板級(jí)空間與布局復(fù)雜性;⑤TVP5158 具備內(nèi)置獨(dú)立視頻縮放器,承擔(dān)了縮放功能,從而為視頻處理器節(jié)省了寶貴的處理能力。在該系統(tǒng)中OMAP3530通過(guò)I2C 接口對(duì)TVP5158 進(jìn)行相應(yīng)的配置并啟動(dòng),TVP5158 負(fù)責(zé)將攝像頭輸出的PAL/NTSC 格式的模擬復(fù)合視頻信號(hào)轉(zhuǎn)換成BT656 格式的數(shù)字視頻信號(hào),然后通過(guò)CAM 接口送給OMAP3530 進(jìn)行相應(yīng)的處理。如果系統(tǒng)采用的是數(shù)字?jǐn)z像頭,則不需要進(jìn)行轉(zhuǎn)換,可直接連接到 OMAP3530 的 CAM 接口。由于OMAP3530 的內(nèi)部集成了DAC,可以將數(shù)字視頻信號(hào)直接轉(zhuǎn)換為PAL/NTSC Video,所以外部監(jiān)控顯示設(shè)備可以直接連接到OMAP3530 的TV/DSI 輸出接口。
系統(tǒng)的視頻信號(hào)處理模塊采用TI 公司的OMAP3530,該處理器集成了600MHz 的ARM Cortex-A8 內(nèi)核與430MHz 的TMS320C64x +的DSP 內(nèi)核,內(nèi)置圖形加速器,支持?jǐn)?shù)字高清1080p 視頻播放,廣泛應(yīng)用于便攜式消費(fèi)類產(chǎn)品、視頻監(jiān)控、多媒體智能設(shè)備、醫(yī)療影像、工業(yè)控制等領(lǐng)域。該處理器的特點(diǎn)在于把需要大量計(jì)算的數(shù)據(jù)進(jìn)行合理的分配,數(shù)據(jù)送到DSP內(nèi)核中進(jìn)行單獨(dú)處理,而不需要占用到ARM 內(nèi)核的太多運(yùn)算資源,因此當(dāng)系統(tǒng)需要即時(shí)處理數(shù)據(jù)時(shí),ARM 內(nèi)核就可以承擔(dān)即時(shí)運(yùn)算任務(wù)進(jìn)行數(shù)據(jù)處理,這種分配的優(yōu)點(diǎn)在于大幅提高了系統(tǒng)的工作效率,避免了大量數(shù)據(jù)都堆積到同一個(gè)微處理器核心進(jìn)行處理的資源等待時(shí)間。ARM 內(nèi)核與DSP 內(nèi)核之間的數(shù)據(jù)傳輸是通過(guò)OMAP3530 中的DSP/BIOS Link 來(lái)實(shí)現(xiàn)的。在該系統(tǒng)中OMAP3530 的ARM 內(nèi)核負(fù)責(zé)音/視頻解碼器控制、數(shù)據(jù)交換、網(wǎng)絡(luò)傳輸;而DSP 內(nèi)核運(yùn)行優(yōu)化后的H.264 壓縮編碼算法對(duì)采集進(jìn)來(lái)的視頻信號(hào)進(jìn)行處理及音頻信號(hào)的處理。
系統(tǒng)的存儲(chǔ)器模塊采用的是一塊Micron 公司的MT29C1G24MADLAJA-6 IT[4],該存儲(chǔ)芯片內(nèi)部集成了128 MB 的DDR 和128 MB 的NandFlash,它通過(guò)OMAP3530 的SDRC 與GPMC 接口與之進(jìn)行連接。NandFlash 用于固化程序,每次上電都從Flash 啟動(dòng);DDR 用于作為整個(gè)硬件系統(tǒng)的工作內(nèi)存,分配給ARM和DSP 使用。該系統(tǒng)還使用了MMC/SD Interface 用來(lái)外接SD 卡,用來(lái)存儲(chǔ)Linux 操作系統(tǒng)的圖形界面和應(yīng)用程序。另外系統(tǒng)還通過(guò)OMAP3530 的MMC 接口外擴(kuò)了一塊硬盤(pán)(Hard Disk),可以將壓縮后的視頻數(shù)據(jù)保存到硬盤(pán)設(shè)備上,等待客戶端讀取。
系統(tǒng)的以太網(wǎng)通信模塊選用SMSC 公司的LAN9211[5],該芯片支持多種嵌入式CPU 或SoC 接口,支持快速以太網(wǎng)10/100 Mbps 網(wǎng)絡(luò)傳輸速度。LAN9211 內(nèi)部用于接收和發(fā)送數(shù)據(jù)的存儲(chǔ)有16kB,LAN9211 芯片還集成了CSMA/CD 協(xié)議的MAC 和PHY,符 合 IEEE 802. 3/802. 3u 標(biāo) 準(zhǔn)。因 為OMAP3530 的GPMC 接口同時(shí)外接了兩個(gè)器件,一個(gè)Flash,一個(gè)LAN9211,就是說(shuō)它們共用了數(shù)據(jù)線和地址線,所以必須用總線隔離器將它們隔離開(kāi),該系統(tǒng)使用兩片Philips 公司的74ALVC164245 芯片作為總線隔離器,連 接 在 Flash 和 OMAP3530、LAN9211 和OMAP3530 中間,通過(guò)GPMC 的控制總線,如NCS6、NOE,和地址總線配合起來(lái)進(jìn)行控制,從而使處理器在訪問(wèn)其中一個(gè)器件的時(shí)候另一個(gè)器件對(duì)外呈現(xiàn)高阻態(tài)。
系 統(tǒng) 采 用 電 源 管 理 芯 片 TPS65930[6]配 合OMAP3530 工作并承擔(dān)一定的任務(wù),它們之間通過(guò)I2C總線進(jìn)行通信。TPS65930 功能強(qiáng)大,內(nèi)部集成了眾多組件,不但提供系統(tǒng)所需要的時(shí)鐘、各種電源,還提供雙通道音頻編解碼器與驅(qū)動(dòng)器、各種監(jiān)控特性、電池充電器、LED 驅(qū)動(dòng)器、10 位3 輸入模數(shù)轉(zhuǎn)換器、帶集成5V 電源的高速USB 收發(fā)器、I2C 通信接口等。因?yàn)門(mén)PS65930 內(nèi)置了Audio 編解碼器,所以系統(tǒng)輸入/輸出的Audio 信號(hào)的編解碼工作由其完成。由于OMAP3530 內(nèi)部集成有Audio 接口,所以外部SPK 與MIC 可直接與Audio 接口連接。
系統(tǒng)的軟件開(kāi)發(fā)分為兩大部分,即ARM 內(nèi)核與DSP 內(nèi)核兩部分。ARM 內(nèi)核軟件主要處理人機(jī)交互、網(wǎng)絡(luò)通信等非實(shí)時(shí)多任務(wù)請(qǐng)求,采用嵌入式Linux 作為底層操作系統(tǒng),針對(duì)視頻解碼模塊/存儲(chǔ)模塊/網(wǎng)絡(luò)通信模塊等外圍器件分別編寫(xiě)驅(qū)動(dòng)程序、為DSP 分配引導(dǎo)與工作內(nèi)存、設(shè)置的DSP MMU 以及ARM 與DSP之間的Mailbox 中斷服務(wù),同時(shí)通過(guò)DSP/BIOS Link 來(lái)使用DSP 的各種資源,從而控制DSP 進(jìn)行H.264 編碼,移植Qt Embedded 作為系統(tǒng)的GUI 庫(kù),DSP 內(nèi)核軟件主要完成對(duì)音視頻信號(hào)編解碼,采用TI 公司提供的DSP/BIOS 作為操作系統(tǒng)。系統(tǒng)軟件結(jié)構(gòu)如圖2 所示。
圖2 系統(tǒng)軟件結(jié)構(gòu)
系統(tǒng)上電開(kāi)機(jī)后首先執(zhí)行Flash 中的ARM 引導(dǎo)程序,完成對(duì)系統(tǒng)程序的引導(dǎo),完成對(duì)硬件系統(tǒng)的初始化工作,包括設(shè)置OMAP3530 及外圍硬件;接著啟動(dòng)Linux,加載各種設(shè)備,對(duì)于ARM 上的Linux 操作系統(tǒng)而言,DSP 相當(dāng)于它的外設(shè),對(duì)DSP 的控制與控制操作系統(tǒng)中的任一個(gè)普通外設(shè)是一樣的。這里將DSP當(dāng)作Linux 下的一個(gè)字符類型設(shè)備來(lái)對(duì)待,在驅(qū)動(dòng)程序內(nèi)通過(guò)配置Mailbox 的一系列寄存器,實(shí)現(xiàn)ARM 與DSP 中斷方式的通信[8-9]。由于Mailbox 中斷方式僅適用于在數(shù)據(jù)量較小的情況下使用,而在該系統(tǒng)中需要處理的視頻數(shù)據(jù)量較大,所以還需要采用ARM 與DSP 之間通信的另外一種方式:DSP 的MMU 方式,即配置DSP 的MMU,把一塊屬于DSP 的內(nèi)存映射到外部共享的內(nèi)存單元中;同時(shí)結(jié)合兩者共享DDR SDRAM 內(nèi)存的方式,實(shí)現(xiàn)ARM 和DSP 之間的通信與數(shù)據(jù)交換。一旦操作系統(tǒng)加載DSP 驅(qū)動(dòng),在應(yīng)用程序中就可以通過(guò)Linux 統(tǒng)一的系統(tǒng)調(diào)用接口open,close,read,write,ioctl 等等來(lái)使用和控制DSP。
圖3 ARM 內(nèi)核軟件結(jié)構(gòu)
由于在Linux 操作系統(tǒng)中集成了一個(gè)視頻采集的API 函數(shù)Video4Linux(V4L2),該函數(shù)很有用,可以提供open、write、read、ioctl 等功能,用戶可以通過(guò)修改control word 來(lái)獲取視頻設(shè)備的信息、幀緩沖的參數(shù)、獲取圖像[10-12],因此程序中的視頻信號(hào)采集通過(guò)調(diào)用該API 來(lái)實(shí)現(xiàn),采集到的視頻數(shù)據(jù)(以幀為單位),存入ARM 和DSP 的共享內(nèi)存中,同時(shí)設(shè)置對(duì)應(yīng)的全局變量標(biāo)志,ARM 循環(huán)檢測(cè)這些變量標(biāo)志,一旦發(fā)現(xiàn)緩沖區(qū)有數(shù)據(jù)時(shí),通過(guò)ioctl 函數(shù),通知DSP 進(jìn)行H.264編碼。ARM 與DSP 之間的共享內(nèi)存是通過(guò)DSP/BIOS Link 來(lái)分配,為了防止兩者之間的讀寫(xiě)沖突,使用MailBox 中斷方式。OMAP3530 中有兩個(gè)的MailBox,分別對(duì)應(yīng)ARM 與DSP,ARM 與DSP 都可以通過(guò)各自的MailBox 向?qū)Ψ桨l(fā)起中斷,同時(shí)傳遞參數(shù)并設(shè)置狀態(tài),以通知對(duì)方自己的狀態(tài)和請(qǐng)求類別。當(dāng)編碼完成后,DSP 產(chǎn)生MailBox 中斷,通知ARM 端從共享內(nèi)存中取走編碼后的H.264 數(shù)據(jù)。如果有客戶端提出請(qǐng)求,則通過(guò)網(wǎng)絡(luò)發(fā)送出去;反之則將數(shù)據(jù)暫時(shí)存儲(chǔ)到硬盤(pán)中,等待客戶端提出請(qǐng)求。
DSP 內(nèi)核軟件設(shè)計(jì)主要是對(duì)傳送過(guò)來(lái)的視頻流進(jìn)行H.264 壓縮編碼。首先DSP 準(zhǔn)備就緒,接著等待ARM 通過(guò)MailBox 向其發(fā)送中斷信號(hào),一旦收到中斷信號(hào),DSP 就從共享內(nèi)存中讀取視頻流,然后執(zhí)行H.264 編碼,數(shù)據(jù)編碼完畢,DSP 向ARM 發(fā)送MailBox 中斷信號(hào),同時(shí)將編碼數(shù)據(jù)發(fā)送至共享內(nèi)存等待ARM進(jìn)行相應(yīng)的處理。具體流程如圖4 所示。
圖4 DSP 內(nèi)核軟件結(jié)構(gòu)
H.264 編碼的控制與使用是通過(guò)調(diào)用TI 公司的Codec Engine 中的API 來(lái)實(shí)現(xiàn)的,并且在DVSDK 軟件提供了工具可以使用兼容XDM/XDAIS 的用戶算法創(chuàng)建自己的編解碼器服務(wù)[13-14]。Codec Engine 中的有一類專用于實(shí)現(xiàn)視頻、圖像、音頻等算法的 API(VIDENCx_、VIDDECx_)用以實(shí)現(xiàn)音視頻信號(hào)的編解碼,這里僅使用編碼API-VIDENCx_,在該API 中定義了幾個(gè)主要函數(shù):VIDENC_create()、VIDENC_process()、VIDENC_control()、VIDENC_dqbuf()、VIDENC_delete(),分別用來(lái)實(shí)現(xiàn)創(chuàng)建編碼器、處理編碼器、傳遞控制編碼器的動(dòng)態(tài)參數(shù)、驅(qū)動(dòng)視頻數(shù)據(jù)入列、刪除編碼器(釋放占用的系統(tǒng)資源)。H.264 編碼器的設(shè)計(jì)框圖如圖5 所示。
由于流媒體(音頻、視頻)傳輸要求低延時(shí)、高實(shí)時(shí)性、QOS 保證等等,所以TCP/UDP 協(xié)議不能滿足它的要求[15-16]。這里網(wǎng)絡(luò)傳輸采用RTP/RTCP 傳輸協(xié)議來(lái)實(shí)現(xiàn),其中RTP 協(xié)議負(fù)責(zé)視頻流數(shù)據(jù)的傳輸,RTCP 協(xié)議負(fù)責(zé)傳輸控制協(xié)議。經(jīng)過(guò)視頻采集/編碼后的視頻數(shù)據(jù)通過(guò)網(wǎng)絡(luò)進(jìn)行傳輸,首先在RTP/RTCP層上進(jìn)行包封裝,添加定時(shí)、同步信息、包序號(hào)等信息,然后把這些打包的RTP 數(shù)據(jù)流傳送到UDP/TCP 層和IP 層,獲得的IP 包在網(wǎng)絡(luò)上傳輸。在實(shí)際的設(shè)計(jì)過(guò)程中,在Linux 系統(tǒng)中采用了開(kāi)源的RTP 庫(kù)-JRTPLIB。由于JRTPLIB 是一個(gè)高度封裝后的RTP 庫(kù),用戶在使用它時(shí)不需要關(guān)心RTCP 數(shù)據(jù)報(bào)是如何被發(fā)送和接收的,因?yàn)檫@些都可以由JRTPLIB 自己來(lái)完成。只要PollData()或者SendPacket()方法被成功調(diào)用,JRTPLIB 就能夠自動(dòng)對(duì)到達(dá)的RTCP 數(shù)據(jù)報(bào)進(jìn)行處理,并且還會(huì)在需要的時(shí)候發(fā)送RTCP 數(shù)據(jù)報(bào),從而能夠確保整個(gè)RTP 會(huì)話過(guò)程的正確性。
圖5 H.264 編碼器的設(shè)計(jì)框圖
本文重點(diǎn)介紹了基于OMAP3530 雙核處理器的網(wǎng)絡(luò)視頻服務(wù)器的設(shè)計(jì)結(jié)構(gòu),結(jié)合DSP 計(jì)算復(fù)雜算法的高效率和ARM 精于并行處理數(shù)據(jù)的優(yōu)點(diǎn),為網(wǎng)絡(luò)視頻服務(wù)器的快速實(shí)現(xiàn)提供了高效、靈活的設(shè)計(jì)方案。該設(shè)計(jì)具有體積小、成本低、穩(wěn)定性高、可擴(kuò)展性強(qiáng)等特點(diǎn),將在數(shù)字視頻服務(wù)與監(jiān)控領(lǐng)域有著廣闊的應(yīng)用前景。
[1] Texas.OMAP35x Application Processor Technical Reference Manual[CP/OL]. www.ti.com,2010.04.
[2] Texas.TVP5158 Data Manual[CP/OL].www.ti.com,2009.07.
[3] 范斐斐.基于OMAP5912 的H_264 編解碼器的實(shí)現(xiàn)[D].武漢理工大學(xué),2008.5.
[4] MICRO. MT29C2G48MAKAMAKC-5 IT Data Manual[CP/OL].www.micro.com,2007.05.
[5] SMSC.LAN9211 Data Manual[CP/OL]. www. smsc. com,2003.01.
[6] Texas.TPS65930 Integrated Power Management Data Manual[CP/OL]. www.ti.com,2009.10.
[7] 林 林.基于OMAP5910 的無(wú)線流媒體系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D].天津大學(xué),2007.1.
[8] 于雪蓮,陳 錢(qián),顧國(guó)華. 基于i_MX27 的H_264 網(wǎng)絡(luò)視頻監(jiān)控系統(tǒng)設(shè)計(jì)[J].電視技術(shù),2009(5):119-121.
[9] 鹿寶生,陳啟美,丁勝軍.基于TMS320DM642 的嵌入式網(wǎng)絡(luò)視頻服務(wù)器的實(shí)現(xiàn)[J].計(jì)算機(jī)工程與設(shè)計(jì),2006(7):2362-2364.
[10] 楊明極,劉 冰,呂鑫磊. 基于TMS320DM6467 的移動(dòng)視頻服務(wù)器的硬件設(shè)計(jì)[J].電視技術(shù),2011(23):51-54.
[11] 沈 騫,婁淑琴,宿金華,等.基于VW2010 芯片的網(wǎng)絡(luò)視頻壓縮編解碼器設(shè)計(jì)與實(shí)現(xiàn)[J]. 計(jì)算機(jī)測(cè)量與控制,2007(12):1814-1816.
[12] 李 鋒,秦嘉凱. 基于嵌入式Linux 的實(shí)時(shí)網(wǎng)絡(luò)視頻監(jiān)控系統(tǒng)[J].電視技術(shù),2011(23):145-148.
[13] 黃 璞,蔣 挺,周 正.基于OMAP 平臺(tái)的嵌入式流媒體傳輸系統(tǒng)設(shè)計(jì)[C]//中國(guó)通信學(xué)會(huì)第五屆學(xué)術(shù)年會(huì)論文集,2008.1:209-213.
[14] 薛 漪,馬伍新.基于TMS320DM642 芯片H.264 編碼器的設(shè)計(jì)[J].計(jì)算機(jī)工程與設(shè)計(jì),2005(5):1158-1160.
[15] 劉恩虹,周 兵,葛寶珊,等. 基于H.264 的嵌入式視頻編碼器[J].計(jì)算機(jī)工程,2009(9):227-229.
[16] 劉 源,朱善安,葉旭東.基于DM642 的嵌入式視頻監(jiān)控系統(tǒng)硬件設(shè)計(jì)[J].電子器件,2008(9):907-908.