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