基于DaVinci?平臺的網(wǎng)絡視頻解碼系統(tǒng)分析與設計
摘要:隨著視頻壓縮技術的不斷發(fā)展,單路1080p@60Hz分辨率的視頻可以壓縮到幾兆進行傳輸,一個百兆網(wǎng)口可以傳輸多達10多路的IP視頻信號。目前的服務器單純依靠CPU進行軟解碼已經(jīng)顯得非常吃力[1];匹配高性能的服務器或者配置多臺服務器卻有存在高成本的壓力。針對這些現(xiàn)狀,本文設計了一個基于TI的DaVinci?平臺的網(wǎng)絡視頻解碼系統(tǒng)。驗證結果顯示,采樣該網(wǎng)絡視頻解碼系統(tǒng),可以使得單臺服務器增加上百路的IP視頻解碼,同時不影響服務器的其它性能,性能可靠且成本有很大優(yōu)勢。
本文引用地址:http://www.ex-cimer.com/article/264525.htm1 TI 816X平臺簡介
DM816x DaVinci?視頻處理器[2]是高度集成、可編程平臺,其具有強大的視頻處理能力,具備1080p@60Hz的H.264編解碼能力。該平臺在視頻領域的應用范圍非常廣泛,涉及領域包含:視頻編碼、解碼、轉碼和速率轉換、視頻安全、視頻會議、視頻基礎設施、媒體服務器和數(shù)字標牌。
DM816xDaVinci?視頻處理器包含了3個高分辨率視頻和成像協(xié)處理器(HDVICP2)。每個協(xié)處理器能夠執(zhí)行一個1080P@60Hz的H.264編碼或解碼或者多個較低分辨率或幀速率的編碼和解碼。另外,也可完成多通道HD至HD或HD至SD代碼轉換以及多重編碼。同時,其具備了一個數(shù)字視頻輸出口、一個數(shù)字視頻輸入口、還有一個數(shù)字視頻輸入輸出復用口,其單個輸出輸入口還具備了多路視頻同時分時輸出、輸入功能。芯片內(nèi)部集成了Cortex?-A8 32位RISC處理器處理器和DSP內(nèi)核,同時還集成了3D圖象引擎SGX530。DM816x DaVinci?視頻處理器提供了豐富的外設。視頻接口有同步HD和SD模擬視頻的輸出和雙HD視頻輸入;網(wǎng)絡接口包含了2個具有GMII和MDIO接口的千兆位以太網(wǎng),兩路千兆網(wǎng)提供了多路IP視頻接入的傳輸通道。豐富的外設集提供了控制外圍設備以及與外部處理器進行通信的功能。
2 系統(tǒng)結構和工作原理
該網(wǎng)絡視頻解碼系統(tǒng)采用DM816X和FPGA的方案,具體功能框圖如圖1。前端網(wǎng)絡采用千兆網(wǎng)絡PHY芯片,速率為10M/100M/1000M自適應。一般來說,網(wǎng)絡IP視頻從異地過來,均是通過一個路由進入到系統(tǒng)的前端網(wǎng)絡采集模塊;不通的路由支持支持的速率不通,同時線路的連接方式也相異,因此,我們這里采用了速率自適應和線路自適應的PHY芯片。在PHY片的另外一側是MAC口,對應的是解碼芯片的MAC口,采用的是千兆通信方式,網(wǎng)絡時鐘的速率是125MHz。從帶寬上來看,前端網(wǎng)絡可以支持高達幾百路的D1視頻接入,從而保證了海量視頻數(shù)據(jù)接入的可能。
IP視頻解碼部分是采用TI的DM816X芯片為核心,外掛DDR和Flash等設備組成。在DM816x芯片上嵌入Linux操作系統(tǒng),作為整個單板的主控系統(tǒng),管理各種外設,包括網(wǎng)口、DDR、可調電源模塊和Flash等,還可通過對FPGA模塊進行寄存器讀寫來管控后端的視頻處理環(huán)節(jié)。目前網(wǎng)絡視頻大部分帶有數(shù)據(jù)打包協(xié)議,我們這個系統(tǒng)可以支持標準的RTSP協(xié)議,同時也支持非標準的數(shù)據(jù)包,只有給出前端打包協(xié)議,就可以自定義解網(wǎng)絡數(shù)據(jù)包。網(wǎng)絡解包后,得到H.264碼流后,便送入到816x內(nèi)置的解碼器(HDVICP2)進行解碼;解碼后的數(shù)據(jù)可以利用816x的視頻處理系統(tǒng)進行裁剪、縮放和疊加。經(jīng)過一系列處理后,將圖像通過816x的2路視頻數(shù)據(jù)輸出通道進行輸出。雖然在物理通道上只有2路視頻輸出口,但是,通過軟件編程,可以采用Tri Stream 656的方式,分時輸出6路1080p@30Hz的視頻信號到視頻緩沖和顯示處理模塊。
視頻緩沖和顯示處理模塊主要由FPGA芯片和位于服務器上的顯卡組成。經(jīng)過解碼芯片處理后的視頻數(shù)據(jù)進入到FPGA后,還不能直接進入到顯卡。首先,邏輯芯片需要對視頻數(shù)據(jù)進行幀緩存,把數(shù)據(jù)先放進DDR2中,在DDR2中建立3幀圖像存放空間,通過控制讀取視頻幀的速度達到幀率調整的目的。邏輯內(nèi)部的PCI-E設備傳輸數(shù)據(jù)是采用串行傳輸,而從緩沖區(qū)出來的是并行視頻數(shù)據(jù),這個時候需要對視頻數(shù)據(jù)進行并串轉換。在服務器端的顯卡,通過驅動軟件可以開辟出一塊顯存區(qū)域用于存放并顯示視頻數(shù)據(jù)。一般和PC系統(tǒng)進行數(shù)據(jù)交互采用DMA方式是最為高效直接的,因此,我們將開辟處理的顯存區(qū)域映射到PCI-E設備中,通過邏輯程序把視頻數(shù)據(jù)通過DMA方式放入到映射區(qū)域。這樣,就相當于直接把視頻數(shù)據(jù)放入到顯卡中進行顯示。
linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)
linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)linux相關文章:linux教程
評論