基于GM8180的嵌入式視頻服務(wù)器設(shè)計(jì)
摘要:詳細(xì)介紹了一種基于臺(tái)灣智原科技公司GM8180芯片的嵌入式視頻服務(wù)器設(shè)計(jì)。描述了該服務(wù)器的結(jié)構(gòu)和功能,對系統(tǒng)的各個(gè)組成模塊進(jìn)行了分析和介紹,如視頻采集模塊、音頻輸入和輸出模塊、以太網(wǎng)模塊等。在軟件方面,對RTSP流媒體服務(wù)器軟件架構(gòu)和視頻采集、編碼的流程進(jìn)行了說明。系統(tǒng)采用H.264視頻編碼技術(shù),單芯片即可實(shí)現(xiàn)2路D1的H.264實(shí)時(shí)編碼以及多用戶的實(shí)時(shí)流媒體服務(wù)。
關(guān)鍵詞:視頻監(jiān)控;視頻服務(wù)器;GM8180;H.264;RTSP
引言
嵌入式網(wǎng)絡(luò)視頻服務(wù)器可將前端采集的視頻信號(hào)壓縮編碼后,通過IP網(wǎng)絡(luò)傳送到終端進(jìn)行顯示或記錄。與傳統(tǒng)的模擬閉路視頻監(jiān)控系統(tǒng)相比,由于采用IP網(wǎng)絡(luò)來傳輸數(shù)字視頻信號(hào),擺脫了模擬信號(hào)線路衰減的距離限制,實(shí)現(xiàn)遠(yuǎn)程監(jiān)控。
目前流行的構(gòu)建嵌入式網(wǎng)絡(luò)視頻服務(wù)器的方案有ARM+DSP和ASIC兩種。前者以TI公司和ADI公司為代表,其優(yōu)點(diǎn)在于具有很大的靈活性。利用DSP強(qiáng)大的計(jì)算能力,可以在前端嵌入式服務(wù)器中實(shí)現(xiàn)智能化和個(gè)性化的應(yīng)用。但是由于ARM+DSP方案涉及音視頻編解碼器的開發(fā),開發(fā)成本大和開發(fā)周期長使其飽受詬病。相比之下,ASIC方案通常在單芯片上集成視頻編碼器,使得開發(fā)人員能夠?qū)⒕性谝曨l服務(wù)器的設(shè)計(jì)當(dāng)中,大大縮減了開發(fā)成本和時(shí)間。本文介紹一種基于ASIC芯片GM8180的嵌入式網(wǎng)絡(luò)視頻服務(wù)器方案。
1 系統(tǒng)硬件結(jié)構(gòu)
GM8180是由臺(tái)灣智原(Faraday)公司推出的一款高性能SoC芯片,片上包含了主頻高達(dá)500 MHz的ARM9核以及H.264編/解碼引擎、MPEG4編/解碼引擎。除此之外,GM8180還集成了DDR控制器、Flash/s靜態(tài)存儲(chǔ)控制器,以及支持2路8位ITU-R BT.656視頻采集控制器、USBOTG、MMC/SDC、IDE、I2C、SPI、I2S、AC97等。
系統(tǒng)框架如圖1所示,視頻服務(wù)器系統(tǒng)充分利用GM8180主芯片內(nèi)帶有的兩路視頻采集通道,外接Phips公司的SAA7113H視頻解碼芯片實(shí)現(xiàn)2路CVBS視頻信號(hào)采集。視頻編碼直接使用片內(nèi)集成的H.264編碼引擎進(jìn)行H.264視頻編碼壓縮,無需外接其他編碼芯片。音頻采集方面,GM8180直接與Wolfson公司的WM8731音頻編解碼芯片連接,實(shí)現(xiàn)音頻的采集和回放。在網(wǎng)絡(luò)方面,GM8180集成了以太網(wǎng)MAC控制器,外圍直接連接以太網(wǎng)物理接口芯片DM9161A,即可完成以太網(wǎng)功能。此外,系統(tǒng)還包括了實(shí)時(shí)時(shí)鐘、DDR、NOR Flash、電源模塊等。[!--empirenews.page--]
1.1 視頻采集模塊
GM8180片上集成的視頻采集模塊可以提供2路8位采集通道。輸出ITU-R BT.656的CMOS視頻采集模塊,可以直接與GM8180相連接;輸出CVBS或者S-Video模擬信號(hào)的采集模塊,則需要外接視頻解碼芯片。本系統(tǒng)中的視頻解碼芯片采用的是Philips公司的SA7113H。SAA7113H支持隔行掃描,支持PAL、NTSC等多種視頻輸入格式,輸出支持ITU_R BT.656等多種格式,通過I2C總線控制,即可實(shí)現(xiàn)對輸入模擬信號(hào)的預(yù)處理、水平和垂直同步信號(hào)的分離,以及亮度和色度的設(shè)置等。
GM8180片內(nèi)集成了標(biāo)準(zhǔn)的I2C總線控制器,SAA7113H通過I2C總線與GM8180連接。在I2C總線上連接2塊SAA7113H時(shí),可將其上的RTSO引腳懸空或拉低,為這兩塊SAA7113H配置不同的I2C地址。具體連接如圖2所示。
1.2 音頻采集模塊
GM8180支持多種音頻輸入接口,包括1個(gè)AC97和2個(gè)I2S接口。I2S是Philips公司為數(shù)字音頻設(shè)備之間的音頻數(shù)據(jù)傳輸而制定的一種總線標(biāo)準(zhǔn),主要用于家庭影院中的高質(zhì)量音頻D/A轉(zhuǎn)換器。AC97則是以Intel為首的5家計(jì)算機(jī)廠商制定的規(guī)格標(biāo)準(zhǔn),除規(guī)定音頻幀格式外,還具有控制功能。
本系統(tǒng)使用Wolfson公司的WM8731音頻芯片,通過I2S總線連接GM8180。WM8731可以提供CD音質(zhì)的音頻錄音和回放,為16 Ω的負(fù)載提供50 mW的輸出功率。該器件具有多種功耗降低模式,在回放模式的下典型功率消耗為8.5 mW,同步錄音和回放時(shí)的功率消耗為24 mW。待機(jī)模式下,供電電流可降低到50μA。
GM8180與WM8731的連接如圖3所示,WM8731能夠支持立體聲采集和回放,在系統(tǒng)設(shè)計(jì)中將WM8731立體聲采集/回放的左右聲道分別拆分成2路獨(dú)立單聲道的采集/回放通道使用。
[!--empirenews.page--]
1.3 其他模塊
網(wǎng)絡(luò)方面,GM8180集成了以太網(wǎng)接口控制器,支持RMII接口,可直接連接以太網(wǎng)物理接口芯片DM9161A。DM9161A是Davicom公司生產(chǎn)的一款低功耗、高性能的以太網(wǎng)物理層芯片,它完全兼容IEEE 802.3u 10Base-T/100:Base-TX標(biāo)準(zhǔn),同時(shí)兼容ANSI TP-P(如1995)標(biāo)準(zhǔn);支持MII和RMII兩種接口模式,可完成對網(wǎng)絡(luò)數(shù)據(jù)的接收解碼和對數(shù)據(jù)幀的編碼發(fā)送。
此外,實(shí)時(shí)時(shí)鐘芯片S35390A通過I2C總線連接主芯片GM8180為系統(tǒng)提供準(zhǔn)確、不間斷的時(shí)間信息以及定時(shí)報(bào)警服務(wù)。
2 系統(tǒng)軟件設(shè)計(jì)
在軟件的設(shè)計(jì)上,采用ARM-Linux 2.6操作系統(tǒng)作為嵌入式服務(wù)器軟件的承載平臺(tái)。ARM-Linux的源代碼完全免費(fèi)開放,內(nèi)核可任意裁剪,應(yīng)用程序和驅(qū)動(dòng)都非常豐富。在ARM-Linux操作系統(tǒng)的基礎(chǔ)上,通過Vide04Linux(V4L)接口采集的視頻圖像交由GM8180片內(nèi)的H.264編碼引擎進(jìn)行壓縮編碼;音頻上,通過OSS接口采集PCM數(shù)據(jù)進(jìn)行自適應(yīng)多速率窄帶語音(AdaptiveMulti-Rate NarrOWband,AMRNB)編碼。通過RTSP流媒體服務(wù)器為用戶提供實(shí)時(shí)的音視頻訪問服務(wù)。
2.1 視頻采集驅(qū)動(dòng)
V4L是Linux下用于獲取視頻數(shù)據(jù)的通用API接口。將GM8180的視頻采集封裝成V4L接口,以便位于應(yīng)用層的RTSP服務(wù)器開發(fā)使用。V4L驅(qū)動(dòng)程序需向操作系統(tǒng)內(nèi)核注冊video_device設(shè)備,用于指定文件操作接口,使得用戶層可以通過標(biāo)準(zhǔn)文件操作來采集視頻。
視頻采集的流程如圖4所示,用戶設(shè)置采集參數(shù)(例如圖像分辨率)時(shí),驅(qū)動(dòng)需要完成SAA7113H和GM8180片上視頻采集控制器的寄存器設(shè)置,以及驅(qū)動(dòng)內(nèi)核態(tài)下圖像數(shù)據(jù)緩沖區(qū)的分配等工作。此后,應(yīng)用層以VIDIOCMCAPTURE標(biāo)志和VIDEOSYNC標(biāo)志為參數(shù)循環(huán)調(diào)用ioctl()函數(shù)來獲得視頻圖像數(shù)據(jù)。
當(dāng)應(yīng)用程序以VIDIOCMCAPTURE標(biāo)志調(diào)用ioctl()函數(shù)時(shí),驅(qū)動(dòng)檢查采集控制器和DMA狀態(tài),如果當(dāng)前是正常的采集狀態(tài),則ioctl()系統(tǒng)調(diào)用返回;如果當(dāng)前不是正常的采集狀態(tài),則重新觸發(fā)采集控制器和DMA。當(dāng)應(yīng)
用程序以VIDEOSYNC標(biāo)志調(diào)用ioctl()函數(shù)時(shí),驅(qū)動(dòng)先判斷采集緩沖區(qū)內(nèi)是否有圖像數(shù)據(jù),沒有則將調(diào)用者掛起在采集等待隊(duì)列中。直到采集完1幀完整的數(shù)據(jù),在DMA中斷響應(yīng)函數(shù)中調(diào)用wake_up()函數(shù)將采集等待隊(duì)列中的進(jìn)程喚醒,返回圖像數(shù)據(jù)給應(yīng)用層調(diào)用者。
2.2 H.264編碼引擎
GM8180片上集成支持基線檔次的H.264編碼引擎,該編碼引擎遵循AMBA 2.0總線規(guī)范。H.264編碼引擎通過AHB總線與主CPU和其他片上模塊相連。編碼引擎同時(shí)具有AHB主、從模塊功能:
◆當(dāng)主CPU訪問編碼引擎內(nèi)部寄存器時(shí),編碼引擎為從模塊,主CPU作為主模塊;
◆當(dāng)編碼引擎通過內(nèi)建DMA讀寫系統(tǒng)內(nèi)存時(shí),編碼引擎為主模塊,DDR控制器為從模塊。[!--empirenews.page--]
H.264編碼引擎內(nèi)建了兩個(gè)DMA通道,通道O用于讀寫原始圖像、參考幀、重建幀等數(shù)據(jù),通道1用于將編碼完的H.264碼流回寫到系統(tǒng)內(nèi)存中。在編碼引擎工作之前,需要為圖像原始數(shù)據(jù)、參考幀、重建幀緩存分配物理上連續(xù)的內(nèi)存空間,并將緩存起始地址和長度以一定格式組織成DMA命令鏈數(shù)組,設(shè)置給編碼引擎DMA通道O。將存放編碼后碼流數(shù)據(jù)的緩存基址設(shè)置給通道1。而H.264編碼參數(shù),例如條帶類型、量化參數(shù)等則直接通過寄存器設(shè)置。
編碼1幀圖像時(shí),H.264編碼引擎會(huì)根據(jù)DMA命令鏈數(shù)組中的圖像數(shù)據(jù)和參考幀緩存基址,以宏塊為單元讀入當(dāng)前幀和參考幀,進(jìn)行運(yùn)動(dòng)估計(jì)、運(yùn)動(dòng)補(bǔ)償、整型DCT變換和量化。通過DMA將重建幀寫到系統(tǒng)內(nèi)存中,更新參考幀緩存。最后進(jìn)行熵編碼,生成H.264碼流并通過DMA通道1寫回到系統(tǒng)內(nèi)存中。完成編碼之后,編碼引擎通過中斷通知主CPU。
2.3 RTSP流媒體服務(wù)器
實(shí)時(shí)流協(xié)議(Real Time Streaming Protocol,RTSP)是由Real Networks和Netscape公司共同提出的,該協(xié)議定義了一對多的應(yīng)用程序如何有效地通過IP網(wǎng)絡(luò)傳送多媒體數(shù)據(jù)的方法。RTSP協(xié)議構(gòu)建在實(shí)時(shí)傳輸協(xié)議(Real-time Transport Protocol,RTP)和實(shí)時(shí)控制協(xié)議(RealT-ime Control Protocol,RTCP)之上,它使用TCP或者UDP完成數(shù)據(jù)傳輸。
如圖5所示,RTSP服務(wù)器軟件設(shè)計(jì)為分層結(jié)構(gòu),采用socket網(wǎng)絡(luò)編程和pthread多線程技術(shù)實(shí)現(xiàn)。系統(tǒng)設(shè)計(jì)一個(gè)單獨(dú)的線程用于監(jiān)聽RTSP端口以及進(jìn)行RTSP會(huì)話的信令交互處理,這樣的設(shè)計(jì)保證服務(wù)器能夠?qū)γ總€(gè)客戶連接作出快速的響應(yīng)。當(dāng)一個(gè)RTSP會(huì)話成功建立之后,服務(wù)器將為該會(huì)話分配一組RTP/RTCP端口以及相應(yīng)的緩沖區(qū),同時(shí)創(chuàng)建一個(gè)新的線程用于負(fù)責(zé)發(fā)送RTP和RTCP報(bào)文以及接收、分析客戶端反饋的RTCP接收者報(bào)告。在RTSP、RTP、RTCP協(xié)議實(shí)現(xiàn)和音視頻編碼器之間設(shè)計(jì)了一層實(shí)時(shí)流媒體管理層,通過它將音視頻采集和編碼驅(qū)動(dòng)的初始化、采集數(shù)據(jù)、編碼以及在運(yùn)行過程中更改采集或者編碼參數(shù)(如更改碼率、幀率、請求編碼關(guān)鍵幀)等操作抽象成統(tǒng)一的實(shí)時(shí)媒體文件接口。
結(jié)語
本文設(shè)計(jì)的基于GM8180的嵌入式視頻服務(wù)器,通過片上的H.264編碼引擎實(shí)現(xiàn)2路D1分辨率的H.264實(shí)時(shí)編碼,通過軟件實(shí)現(xiàn)2路AMRNB音頻編碼,以及實(shí)時(shí)流媒體傳輸?shù)南嚓P(guān)協(xié)議。充分挖掘了GM8180這款A(yù)SIC芯片的潛在性能。