基于Blackfin的網(wǎng)絡(luò)視頻壓縮系統(tǒng)設(shè)計
掃描二維碼
隨時隨地手機(jī)看文章
摘要:利用視頻解碼芯片ADV7183A來完成模擬視頻信號的采集量化,進(jìn)而由ADSP-BF561完成視頻數(shù)據(jù)的壓縮,再通過PPI傳輸將壓縮過的視頻數(shù)據(jù)傳送到由ADSP-BF537和LAN8187等芯片組成的網(wǎng)絡(luò)傳輸模塊,網(wǎng)絡(luò)傳輸模塊再將處理后的視頻數(shù)據(jù)流通過組播和單播方式發(fā)送給指定用戶。能夠滿足觀頻監(jiān)控系統(tǒng)的實時性和遠(yuǎn)程化要求。
關(guān)鍵詞:BF561;ADV7183A;視頻壓縮;網(wǎng)絡(luò)傳輸
隨著視頻社會的發(fā)展和科技的進(jìn)步,視頻信息業(yè)務(wù)得到快速增長,視頻信息技術(shù)經(jīng)歷了由模擬到數(shù)字的轉(zhuǎn)變,數(shù)字視頻是以數(shù)字形式記錄的視頻,數(shù)字化對視頻信息的傳輸和存儲創(chuàng)造了有利條件,但末處理的數(shù)字視頻流有較高的帶寬,因此在保證視頻圖像清晰度、流暢度、實時性的條件下,進(jìn)行視頻縮和網(wǎng)絡(luò)傳輸成為一項重要的技術(shù)。
1 設(shè)計方案
文中網(wǎng)絡(luò)視頻壓縮硬件系統(tǒng)結(jié)構(gòu)如圖1所示。在本網(wǎng)絡(luò)視頻壓縮系統(tǒng)中,采用Analog Device公司的ADSP-BF561、ADSP-BF537、ADV7183A心片;SMSC公司的LAN8187網(wǎng)絡(luò)芯片;系統(tǒng)可分為視頻采集壓縮模塊及網(wǎng)絡(luò)控制模塊,其中視頻采集壓縮模塊由ADI高性能雙核處理器DSP BF5 61和視頻解碼芯片ADV7183A構(gòu)成,并輔以SDRAM和Flash等外圍器件。網(wǎng)絡(luò)控制模塊由ADI高性能DSP BF537和以太網(wǎng)接口芯片LAN8187構(gòu)成,同樣輔以SDRAM和Flash等外圍器件。前端輸入的模擬視頻信號經(jīng)過視頻解碼芯片ADV7183A采集量化變換為數(shù)字視頻信號,通過BF561的并行PPI接口進(jìn)入BF561的緩沖存儲區(qū),由BF561完成覦頻數(shù)據(jù)的壓縮處理,壓縮形成的MPEG4視頻流通過并行PPI接口進(jìn)入BF537,經(jīng)過封裝處理后通過以太網(wǎng)接口進(jìn)行分發(fā)。
2 硬件電路設(shè)計
2.1 視頻采集壓縮模塊設(shè)計
視頻采集壓縮模塊由核心壓縮處理器BF561和前端視頻解碼器ADV7183構(gòu)成,并輔以外圍的SDRAM和Flash。
(1)視頻壓縮處理器BF561。BF561處理器是Blackfin系列中的高性能產(chǎn)品,BF561的核心由兩枚獨(dú)立的Blackfin處理器組成。BF561集成了一套通用的數(shù)字圖像處理外圍設(shè)備,為數(shù)字圖像處理和多媒體應(yīng)用創(chuàng)建了一個完整的系統(tǒng)級片上解決方案。利用BF561雙核結(jié)構(gòu),將前端視頻解碼器采集的視頻信號分割為上下半幀數(shù)據(jù),并將分割的視頻數(shù)據(jù)分別由其雙核獨(dú)立進(jìn)行壓縮處理,為完整地恢復(fù)壓縮前的畫面,在其雙核之間進(jìn)行了同步處理,使得根據(jù)輸出的數(shù)據(jù)信息解碼后能夠完整流暢的恢復(fù)壓縮前的畫面,同時為平衡兩個內(nèi)核工作量,還將系統(tǒng)的初始化、控制前端視頻解碼器等工作交給主核來處理,給視頻畫面疊加動態(tài)輔助信息的工作交給另一個內(nèi)核進(jìn)行處理。
(2)視頻解碼器ADV7183A ADV7183A是美國摸擬器件公司(ADI)推出的集成了10位ADC的增強(qiáng)型視頻解M碼器。它內(nèi)含3個精確模數(shù)轉(zhuǎn)換器(ADCs)和完整的自動增益控制(AGC)電路。其靈活的數(shù)字式輸出接口能夠與BF561的PPI接口進(jìn)行無縫連接,消除了由于數(shù)據(jù)信息傳輸速度造成整體壓縮處理能力的瓶頸。ADV7183A與DSP之間的配置通信遵循I2C協(xié)議,因此ADV7183A提供了標(biāo)準(zhǔn)I2C接口,與BF561的PF接口相連接。
BF561的PF,引腳和ADV7183A的0E引腳相連,控制視頻解碼器的數(shù)據(jù)輸出,這里輸出的數(shù)據(jù)可以選擇16/8位輸出,系統(tǒng)選擇8位輸出數(shù)據(jù)格式;
BF561的PF2引腳和ADV7183A的SDATA引腳相連,ADV7183A的SDATA引腳是I2C總線的串行數(shù)據(jù)輸入/輸出引腳;
BF561的PF0引腳和ADV7183A的SCLK引腳相連,ADV7183A的SCLK引腳是I2C總線的串行數(shù)據(jù)輸入/輸出引腳,為視頻解碼器提供串行時鐘輸入;
BF561的PPI2CLK引腳和ADV7183A的LLC1引腳相連,由ADV7183A的LLC1引腳為BF561提供視頻像素輸出同步時鐘;
BF561的PF13引腳和ADV7183A的RESFT引腳相連,為視頻解碼器提供復(fù)位信號;
BF561的PPI2D0~7引腳和ADV7183A的,P8-P15引腳相連,作為視頻數(shù)據(jù)傳輸總線。
同時為ADV7183A提供27 MHz的晶振輸入列XTAL引腳,選擇模擬輸入通道AIN1,在AIN1引腳上輸入模擬信號,對于系統(tǒng)而言,采取默認(rèn)配置,不再對I2C總線進(jìn)行配置。完成這些設(shè)置后,接上電源,ADV7183A就可以在默認(rèn)配置下正常工T作了,默認(rèn)輸入為PAL制的圖像,輸出是P8~P15的8位ITU—BT656的YCrCb型4:2:2視頻數(shù)據(jù)。
2.2 網(wǎng)絡(luò)傳輸模塊設(shè)計
網(wǎng)絡(luò)傳輸模塊是將視頻采集壓縮模塊處理過后的輸出數(shù)據(jù)流發(fā)送到外界用戶的通道,所以要求其核心處理理器既可以與BF561方便地連接又有很好的網(wǎng)絡(luò)擴(kuò)展性,所以選擇了同一系列的BF537處理器,充分利用其PPI接口實現(xiàn)與BF561的快速無縫連接;由于BF537集成了以太網(wǎng)MAC控制器,所以又可以和用BF537的網(wǎng)絡(luò)擴(kuò)展性能,輔以SMSC公司的以太網(wǎng)接口芯片LAN8187,同時由于LwIP(LightweightTCP/IP Stack,輕量級TCP/IP協(xié)議棧)有效地減少TCP/IP協(xié)議棧所占用的空間,LwIP約占用40 kB的內(nèi)存空間和ROM存儲空間,比在內(nèi)核中實現(xiàn)的TCP/IP協(xié)議棧要小得多,并且LwIP支持多網(wǎng)絡(luò)接口下的IP轉(zhuǎn)發(fā),支持ICMP協(xié)議,支持?jǐn)U展性的UDP報文,支持轉(zhuǎn)發(fā)的TCP報文,提供專門的內(nèi)部回調(diào)接口(RawAPI)。RAW API直接使用了LwIP協(xié)議棧中的回調(diào)函數(shù)(Call Back Functions),從而使應(yīng)用程序和協(xié)議棧代碼能夠更好地集成在一起,運(yùn)行在同一個進(jìn)程中,以提高應(yīng)用程序性能,使之適合于嵌入式系統(tǒng)的需要。
系統(tǒng)中的SDRAM主要用以加載系統(tǒng)程序和開辟視頻數(shù)據(jù)信息的存儲緩沖區(qū),F(xiàn)lash用于燒寫調(diào)試完成后的系統(tǒng)加載程序。它們通過核心處理器BF561和BF537的外部總線接口單元(EBIU)進(jìn)行擴(kuò)展。
3 系統(tǒng)軟件設(shè)計
3.1 視頻采集壓縮模塊
視頻采集壓縮模塊:由于BF561為雙核處理器,為充分利用其雙核結(jié)構(gòu)來提高視頻壓縮能力,在這個模塊的軟件設(shè)計中,對系統(tǒng)工作量進(jìn)行了合理的分配,系統(tǒng)加電后,首先在其主核中對系統(tǒng)進(jìn)行初始化,設(shè)置系統(tǒng)的工作倍頻,并對前端視頻解碼芯片ADV7183A進(jìn)行配置,管理和前段視頻解碼器的通信傳輸工作,然后進(jìn)入循環(huán)等待開始視頻壓縮命令,同時其另一個核也處于等待狀態(tài),在接收到視頻壓縮開始命令后,在主核中將前端采集的視頻數(shù)據(jù)分割為上下各半幀數(shù)據(jù),分別交給雙核進(jìn)行壓縮處理,為保證每一幀壓縮之后的視頻數(shù)據(jù)的完整性,在每一幀視頻數(shù)據(jù)壓縮的前后采用了信號量同步的方式,保證了雙核工作的同步性和視頻數(shù)據(jù)輸出的完整性,視頻采集壓縮處理部分程序流程如圖2所示。
3.2 網(wǎng)絡(luò)傳輸模塊
網(wǎng)絡(luò)傳輸模塊:網(wǎng)絡(luò)傳輸模塊主要負(fù)責(zé)本系統(tǒng)和用戶之間的交互,包括接收用戶命令和向用戶提供視頻數(shù)據(jù)流,其中向用戶提供數(shù)據(jù)流包括發(fā)送視頻數(shù)據(jù)和提供組播服務(wù)兩種方式,視頻采集壓縮模塊每壓縮處理完一幀數(shù)據(jù)后,就通過中斷的方式提醒BF537以DMA方式讀取壓縮完成后的視頻數(shù)據(jù),對于要求嚴(yán)格保證數(shù)據(jù)傳輸穩(wěn)定性與可靠性的用戶,網(wǎng)絡(luò)傳輸模塊以TCP的傳輸方式將讀取的視頻數(shù)據(jù)發(fā)送給指定用戶,對于主要以局域網(wǎng)用戶為主,用戶數(shù)量不定,且對傳輸穩(wěn)定性與可靠性要求不是很高的用戶,網(wǎng)絡(luò)傳輸模塊采用DP的傳輸方式將讀取的視頻數(shù)據(jù)發(fā)送給組播中的群成員,這里之所以用組播的方式也為了節(jié)省網(wǎng)絡(luò)帶寬資源。在系統(tǒng)工作中為防止接收視頻數(shù)據(jù)和發(fā)送之間的協(xié)調(diào)性,采用信號量的方式來約束接收和發(fā)送數(shù)據(jù)的邏輯,防止了發(fā)送重復(fù)數(shù)據(jù)或者空數(shù)據(jù)的問題,網(wǎng)絡(luò)傳輸模塊的程序流程如圖3所示。
4 結(jié)束語
網(wǎng)絡(luò)視頻壓縮系統(tǒng)利用核心處理器BF561、BF537以及外圍芯片,完成視頻信息的采集、壓縮處理、網(wǎng)絡(luò)傳輸?shù)裙δ?,能夠滿足視頻監(jiān)控系統(tǒng)的實時性和遠(yuǎn)程化要求,提供了單播和組播兩種不同的遠(yuǎn)程監(jiān)控方式。