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