吳 迪,宋曉梅
(西安工程大學(xué)電子信息學(xué)院,西安 710048)
視頻分配器是通過(guò)硬件電路把一個(gè)視頻信號(hào)源平均分配成多路視頻信號(hào),并通過(guò)VGA、DVI或是HDMI高清視頻輸出線等將一路視頻信號(hào)多路輸出到N個(gè)有線連接的顯示器上。廣泛應(yīng)用于視頻會(huì)議、多媒體教學(xué)等場(chǎng)合。視頻分配器的最大分配數(shù)量一般為4路、8路、16路、32路、64路等,由硬件電路決定,不能再進(jìn)行擴(kuò)展。如果需要擴(kuò)展只能購(gòu)買(mǎi)新的視頻分配器設(shè)備。
目前,視頻信號(hào)的應(yīng)用場(chǎng)合越來(lái)越廣泛,這種視頻分配方式已經(jīng)無(wú)法滿足人們的需求。首先,由于有線視頻分配器的線長(zhǎng)是一定的,只能在一定距離內(nèi)使用(一般在20米內(nèi)),所以嚴(yán)重影響了使用的方便性,而如果利用WIFI技術(shù)進(jìn)行無(wú)線收發(fā),使用距離則可以擴(kuò)展到100米并且能夠適應(yīng)任何地域環(huán)境。其次,由于有線視頻分配器最大承載量一定并且數(shù)量比較少,所以對(duì)大部分用戶來(lái)說(shuō)接入節(jié)點(diǎn)的數(shù)量決定了設(shè)備的數(shù)量和網(wǎng)絡(luò)的復(fù)雜程度以及成本的高低,而WIFI的最大理論接入數(shù)量為65535,實(shí)際接入量由于硬件資源與成本關(guān)系,系統(tǒng)調(diào)度又采用FIFO模式,如果接入量達(dá)到FIFO深度時(shí),硬件資源提供的資源不能滿足所有設(shè)備同時(shí)工作的最大要求,會(huì)造成FIFO滿而出現(xiàn)溢出,這時(shí)會(huì)出現(xiàn)數(shù)據(jù)丟失的現(xiàn)象,所以接入量最優(yōu)為100個(gè)(不大于100個(gè)),這已經(jīng)可以滿足大多數(shù)用戶的需求?;谶@些原因,研究基于WIFI的無(wú)線視頻分配問(wèn)題,以緩解目前所遇到的這一難題。
視頻信號(hào)分為數(shù)字視頻信號(hào)和模擬視頻信號(hào),在計(jì)算機(jī)中,數(shù)據(jù)都是以二進(jìn)制進(jìn)行存儲(chǔ)的,也即視頻信號(hào)都是以數(shù)字信號(hào)的形式在計(jì)算機(jī)中進(jìn)行傳輸?shù)?。但是,?shù)字視頻的數(shù)據(jù)量非常大,比如一路NTSC制數(shù)字電視的信息速率高達(dá)216Mbps,這樣的話,1GB容量的存儲(chǔ)器也只能存儲(chǔ)不到10秒鐘的數(shù)字視頻。所以,要進(jìn)行視頻的實(shí)時(shí)傳輸,必須進(jìn)行視頻編碼處理。視頻編碼的目的就是在確保實(shí)時(shí)視頻質(zhì)量的前提下,盡可能地減少視頻序列的數(shù)據(jù)量,以便在信道上實(shí)時(shí)傳輸視頻信息。
將視頻信號(hào)進(jìn)行壓縮編碼以后,就可以傳送到WIFI模塊進(jìn)行發(fā)送。CPU對(duì)接收到的數(shù)據(jù)流進(jìn)行存儲(chǔ)(在緩存中進(jìn)行臨時(shí)存儲(chǔ))和轉(zhuǎn)發(fā)(通過(guò)WIFI發(fā)送模塊)。接收方接收到數(shù)據(jù)流以后,對(duì)數(shù)據(jù)包進(jìn)行相同壓縮方法的解壓縮,恢復(fù)到視頻信號(hào),進(jìn)行播放。
文章采用實(shí)時(shí)性較強(qiáng)的片上系統(tǒng)——ARM9,同時(shí),開(kāi)發(fā)軟件運(yùn)行于內(nèi)核態(tài),這樣就有效避免了系統(tǒng)調(diào)度延時(shí),可以直接對(duì)硬件進(jìn)行操作。在CPU對(duì)接收到的數(shù)據(jù)進(jìn)行轉(zhuǎn)發(fā)的過(guò)程中,利用DAM方式進(jìn)行,這樣可以有效地適應(yīng)視頻信號(hào)的大容量性,同時(shí)對(duì)實(shí)時(shí)性進(jìn)行進(jìn)一步的控制。
圖1 硬件設(shè)計(jì)框圖
軟件設(shè)計(jì)分為兩部分:上層功能性軟件和底層軟件。其中,上層軟件(包含界面設(shè)計(jì)等)保證視頻文件的一對(duì)多(指定接收端)發(fā)送,而底層軟件(基于Linux操作系統(tǒng))則是通過(guò)內(nèi)核的多線程處理以及數(shù)據(jù)轉(zhuǎn)發(fā),來(lái)保證視頻文件傳輸?shù)膶?shí)時(shí)性。
圖2 軟件整體設(shè)計(jì)框圖
內(nèi)核的多線程處理可以使軟硬件協(xié)調(diào)工作,提高視頻分配器的實(shí)時(shí)性、確定性。硬件傳輸具有快速有效以及覆蓋傳輸?shù)忍攸c(diǎn),需要軟件進(jìn)行緩沖處理。多線程的目的是為了對(duì)收發(fā)做互斥處理,盡量減少對(duì)多點(diǎn)傳輸?shù)南嗷ビ绊?,而設(shè)定優(yōu)先級(jí)是為了使高優(yōu)先級(jí)的操作得到快速有效的傳輸,保證實(shí)時(shí)的高優(yōu)先級(jí)傳輸操作。
中斷服務(wù)程序主要用于軟硬協(xié)調(diào)。操作系統(tǒng)對(duì)中斷操作優(yōu)先處理,當(dāng)中斷到達(dá)時(shí),需要及時(shí)的清除中斷,避免中斷頻發(fā)對(duì)操作系統(tǒng)正常運(yùn)行的內(nèi)核態(tài)產(chǎn)生影響,從而使操作系統(tǒng)內(nèi)核崩潰,進(jìn)而觸發(fā)操作系統(tǒng)內(nèi)核的自我保護(hù)系統(tǒng),觸發(fā)死機(jī)現(xiàn)象。由于中斷為硬件觸發(fā),具有高速性,而程序具有延時(shí)性,所以為避免在處理中斷的情況下丟失中斷狀態(tài),需要一個(gè)中斷服務(wù)程序,中斷服務(wù)程序采用隊(duì)列模式,可以緩存各種中斷狀態(tài)并進(jìn)行對(duì)應(yīng)接收線程的事件觸發(fā)。
接收服務(wù)程序是為了對(duì)數(shù)據(jù)進(jìn)行校驗(yàn)、處理以及對(duì)發(fā)送線程進(jìn)行觸發(fā)等。
DMA的開(kāi)啟主要是為了避免CPU參與工作帶來(lái)的延時(shí),可以有效的進(jìn)行多拍讀寫(xiě)操作,并節(jié)省時(shí)間。
圖3 線程工作流程框圖
基于以上處理,在系統(tǒng)上電后,硬件進(jìn)行自檢測(cè)。驅(qū)動(dòng)程序根據(jù)物理層芯片和鏈路層芯片的狀態(tài)寄存器判斷檢測(cè)是否完成。如果自檢完成,驅(qū)動(dòng)程序申請(qǐng)系統(tǒng)運(yùn)行時(shí)需要的內(nèi)核資源,并把物理內(nèi)存映射為虛擬內(nèi)存。映射完成后,驅(qū)動(dòng)程序?qū)Ω鱾€(gè)節(jié)點(diǎn)進(jìn)行初始化配置,并啟動(dòng)系統(tǒng)內(nèi)核態(tài)的收發(fā)線程。線程為事件驅(qū)動(dòng)模式,線程如果處于阻塞態(tài),即線程處于無(wú)限等待模式,線程掛接的服務(wù)程序?yàn)閷?duì)應(yīng)的收發(fā)處理函數(shù)。啟動(dòng)如果失敗則等待重試,如果成功則阻塞當(dāng)前線程。本設(shè)計(jì)接收線程的等待事件,由中斷延時(shí)處理函數(shù)置位。發(fā)送線程同樣為事件驅(qū)動(dòng)模式,該線程的等待事件為循序隊(duì)列的寫(xiě)指針置位。
當(dāng)線程等待事件(接收模塊接收到新數(shù)據(jù)時(shí))觸發(fā)時(shí),線程變阻塞態(tài)為就緒態(tài)并設(shè)置當(dāng)前線程的優(yōu)先級(jí)。當(dāng)線程處于運(yùn)行態(tài)時(shí),如果高優(yōu)先級(jí)的線程到達(dá),則低優(yōu)先級(jí)的線程由運(yùn)行態(tài)變?yōu)閽炱馉顟B(tài)。
圖4 線程狀態(tài)轉(zhuǎn)換圖
當(dāng)新數(shù)據(jù)到達(dá)時(shí),系統(tǒng)觸發(fā)中斷,此時(shí)中斷處理函數(shù)調(diào)用中斷延時(shí)處理函數(shù),在延時(shí)處理函數(shù)中過(guò)濾中斷狀態(tài)以及觸發(fā)對(duì)應(yīng)的線程事件。然后線程啟動(dòng),調(diào)用處理函數(shù),處理函數(shù)啟動(dòng)DMA(Direct Memory Access——直接內(nèi)存訪問(wèn))搬運(yùn)數(shù)據(jù),并進(jìn)行數(shù)據(jù)處理,同時(shí)通知發(fā)送線程的新數(shù)據(jù)到達(dá)事件。驅(qū)動(dòng)發(fā)送線程處理數(shù)據(jù),發(fā)送線程通過(guò)調(diào)用發(fā)送服務(wù)程序,發(fā)送接收到的新數(shù)據(jù)。
數(shù)據(jù)轉(zhuǎn)發(fā)——通過(guò)隊(duì)列模式實(shí)現(xiàn)數(shù)據(jù)轉(zhuǎn)發(fā)。在接收服務(wù)程序啟動(dòng)后,啟動(dòng)硬件側(cè)DMA,把數(shù)據(jù)從硬件資源緩存到預(yù)先申請(qǐng)的內(nèi)存區(qū),并且通過(guò)寫(xiě)指針把數(shù)據(jù)存放到指定位置。寫(xiě)操作完成后,更新寫(xiě)指針。當(dāng)發(fā)送服務(wù)程序啟動(dòng)后,啟動(dòng)主機(jī)側(cè)DMA把數(shù)據(jù)從內(nèi)存區(qū)搬運(yùn)到發(fā)送模塊硬件資源中。而主機(jī)側(cè)DMA搬運(yùn)通過(guò)讀寫(xiě)指針差距獲取需要搬運(yùn)的大小,搬運(yùn)完成后,更新讀指針,并檢測(cè)讀寫(xiě)指針是否相等,如果相等則變發(fā)送線程為阻塞狀態(tài),如果不相等則繼續(xù)搬運(yùn)數(shù)據(jù)。
為了節(jié)省內(nèi)存空間,使內(nèi)存區(qū)循環(huán)利用,本設(shè)計(jì)采用循環(huán)隊(duì)列模式。當(dāng)讀寫(xiě)指針到達(dá)內(nèi)存區(qū)最大地址時(shí),則通過(guò)設(shè)置使讀寫(xiě)指針從最小地址再次開(kāi)始,如此循環(huán)復(fù)用。當(dāng)指針跳變(最大地址變到最小地址)時(shí),若讀指針地址大于寫(xiě)指針地址,則需要進(jìn)行邊緣處理,即讀指針與讀指針最大值進(jìn)行比較搬運(yùn)數(shù)據(jù),當(dāng)輪換為最小時(shí)與寫(xiě)指針比較搬運(yùn)數(shù)據(jù)。
圖5 循環(huán)隊(duì)列工作框圖
DMA搬運(yùn)數(shù)據(jù)的效率可以控制在1.2us/M以下,所以不會(huì)出現(xiàn)內(nèi)存溢出的現(xiàn)象(內(nèi)存溢出現(xiàn)象為當(dāng)讀指針大于寫(xiě)指針一個(gè)周期時(shí),進(jìn)行內(nèi)存溢出報(bào)錯(cuò)的現(xiàn)象)。
數(shù)據(jù)轉(zhuǎn)發(fā)時(shí)使用循環(huán)隊(duì)列對(duì)數(shù)據(jù)進(jìn)行緩存,可以緩存6000×512K字節(jié)的數(shù)據(jù)包,保證傳輸?shù)拇_定性。所謂確定性就是數(shù)據(jù)傳輸過(guò)程中出現(xiàn)的錯(cuò)誤現(xiàn)象可預(yù)知,并通過(guò)一定的手段避免這種現(xiàn)象的發(fā)生。由于收發(fā)數(shù)據(jù)進(jìn)行線程切換,并協(xié)調(diào)線程工作,因此,執(zhí)行時(shí)不能保證數(shù)據(jù)接收發(fā)送過(guò)程中系統(tǒng)內(nèi)核態(tài)時(shí)間片的占用,從而可能使系統(tǒng)的操作對(duì)收發(fā)數(shù)據(jù)有影響。
視頻圖像的國(guó)際編解碼標(biāo)準(zhǔn)有:JPEG、JPEG 2000、H.261、H.263、H.264,以及 MPEG - 1、MPEG-2、MPEG-4,根據(jù)其壓縮比和比特率的不同。其應(yīng)用場(chǎng)所也有所不同,其中,H.264即先進(jìn)視頻編碼標(biāo)準(zhǔn)(Advanced Video Coding),比特率為8Kb/s~100Mb/s。在結(jié)構(gòu)上和算法上,H.264在H.263的基礎(chǔ)上進(jìn)行改進(jìn),擁有更高的編碼效率,可節(jié)省50%左右的碼率。而它自適應(yīng)的時(shí)延特性,使其既可以工作于低時(shí)延模式下(如視頻會(huì)議),也可以用于沒(méi)有時(shí)延限制的場(chǎng)合(如視頻存儲(chǔ))。同時(shí),H.264引入了面向IP包的編碼機(jī)制,有利于網(wǎng)絡(luò)中的分組傳輸,支持網(wǎng)絡(luò)中視頻流媒體的傳輸。符合利用WIFI進(jìn)行視頻轉(zhuǎn)發(fā)的需要,故采用基于H.264的編解碼芯片。
芯片選擇富士通的高清H.264編解碼芯片MB86H51,運(yùn)行頻率為27MHz/108MHz,可以對(duì)應(yīng)1,920 ×1,080(60i/50i)、1,440 × 1,080(60i/50i)、1,280 ×720(60p/50p)、720 ×480(60i)、720 ×576(50i)等不同分辨率輸出,流碼率最大支持20Mbps。
WIFI是IEEE定義的無(wú)線網(wǎng)技術(shù),基于802.11系列標(biāo)準(zhǔn)。目前廣泛使用的WIFI基于802.11n,傳輸速度為52Mbps,而在此基礎(chǔ)上制定的802.11ac標(biāo)準(zhǔn)的5GWIFI,即工作在5GHz頻段上,數(shù)據(jù)吞吐量為:在單通道鏈路上的最低速率為500Mb/s,最高可達(dá)到1Gbps。
802.11 ac的物理層是對(duì)802.11n標(biāo)準(zhǔn)的延續(xù),并且后向兼容。理論上說(shuō)802.11n在使用了40MHz帶寬和4個(gè)空間流后可以達(dá)到最高600Mbps的數(shù)據(jù)速率,盡管目前很多無(wú)線設(shè)備只能支持2路空間流。對(duì)于802.11ac來(lái)說(shuō),理論上使用160MHz帶寬,8個(gè)空間流,MCS9編碼,256QAM調(diào)制,最高速率能達(dá)到6.93Gbps。而真正可以使用的數(shù)據(jù)速率大概是1.56Gbps。
芯片選擇博通5G WIFI 802.11ac系列整合式系統(tǒng)芯片,可根據(jù)家庭和企業(yè)選擇不同的芯片,包括適用于中小企業(yè)路由器和網(wǎng)絡(luò)附接儲(chǔ)存裝置(NAS)的StrataGX BCM5301x系列,以及支持家用路由器和網(wǎng)關(guān)的 BCM4708x系列。其中 BCM5301x相比BCM4708x系列,CPU性能更高,接口更豐富,可為中小企業(yè)的網(wǎng)絡(luò)運(yùn)作和視頻會(huì)議提供更好的支持。而B(niǎo)CM4708x系列可為消費(fèi)者提供在家中或移動(dòng)中更可靠、無(wú)縫地連接,以及清晰流暢的網(wǎng)絡(luò)視頻觀看。
通過(guò)上述軟硬件設(shè)計(jì),現(xiàn)假設(shè)一部高清電影需占用1G的存儲(chǔ)空間,使用H.264壓縮編碼后,每秒的數(shù)據(jù)流通常在30-45MB之間,而5G WIFI的傳輸速度提升到了1Gbps,每秒可以傳輸約125MB的內(nèi)容。即使加上信道時(shí)延所占用的時(shí)間(不到0.1s),信道上每秒大約仍剩余0.5s左右的空閑。而人眼的視覺(jué)暫留時(shí)間是0.05秒,因此,當(dāng)連續(xù)的圖象變化超過(guò)每秒24幀畫(huà)面的時(shí)候,人眼便無(wú)法分辨每幅單獨(dú)的靜態(tài)畫(huà)面,因而看上去是平滑連續(xù)的視覺(jué)效果。所以,通過(guò)WIFI實(shí)時(shí)地接收和發(fā)送多路視頻信號(hào)在理論上是可行的。
在科技高速發(fā)展的今天,人們對(duì)視頻等文件傳輸速度的要求越來(lái)越高,而千兆無(wú)線傳輸速率標(biāo)準(zhǔn)所帶來(lái)的傳輸?shù)谋憬菪砸矟M足了我們?nèi)找嬖鲩L(zhǎng)的無(wú)線傳輸需求,為打造新一代無(wú)線網(wǎng)絡(luò)生活奠定基礎(chǔ)。
文章針對(duì)如何利用內(nèi)核多線程處理和數(shù)據(jù)轉(zhuǎn)發(fā)、結(jié)合H.264視頻壓縮技術(shù)和5G WIFI技術(shù)實(shí)時(shí)傳輸視頻文件做出了初步分析。而目前,5G WIFI技術(shù)尚不成熟(存在兼容性問(wèn)題),相信在不久的將來(lái),隨著5G WIFI技術(shù)的發(fā)展與成熟,能夠解決視頻文件實(shí)時(shí)性傳輸?shù)漠a(chǎn)品將會(huì)帶來(lái)科技產(chǎn)品的又一次新變革。
[1]郭政.5G WiFi標(biāo)準(zhǔn)——802.11ac解析及應(yīng)用展望[J].科技傳播,2012(15):1 -2.
[2]謝希仁.計(jì)算機(jī)網(wǎng)絡(luò)(第5版)[M].北京:電子工業(yè)出版社,2009.
[3]王寧寧,張瑾.微型計(jì)算機(jī)原理與接口技術(shù)[M].北京:國(guó)防工業(yè)出版社,2009.
[4]李云飛.基于ARM9的無(wú)線路由器設(shè)計(jì)[J].計(jì)算機(jī)工程與設(shè)計(jì),2006(24):1-4.
[5]劉國(guó)梁.從H.264向H.265的數(shù)字視頻壓縮技術(shù)升級(jí)[J].鐵路通信信號(hào)工程技術(shù),2011(5):2 -4.
[6]錢(qián)方遠(yuǎn).基于H.264的視頻壓縮技術(shù)及其在網(wǎng)絡(luò)視頻監(jiān)控系統(tǒng)中的應(yīng)用研究[D].北京:北京郵電大學(xué),2008.
[7]侯素芳,蘆漢生,殷玉喆..基于H.264的數(shù)字視頻壓縮圖像質(zhì)量的評(píng)價(jià)[J].光學(xué)技術(shù),2006(S1):1-3.
[8]杰夫瑞,克里斯托夫,葛子昂,等.windows核心編程[M].北京:清華大學(xué)出版社,2009.