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