李勝輝,王文敏
(中移在線服務(wù)有限公司,河南,鄭州 450000)
隨著無線通信技術(shù)的迅速發(fā)展,可視化數(shù)字媒體豐富了人們?nèi)粘I睿悄苁謾C(jī)等信息采集設(shè)備逐漸普及,圖像、視頻音頻的采集更加便利。視頻數(shù)據(jù)庫、可視電話、視頻會議已經(jīng)進(jìn)入實(shí)用階段,音頻視頻信息內(nèi)容豐富,數(shù)據(jù)量占有巨大空間。對音頻視頻的傳輸使用時間過長,數(shù)據(jù)的傳輸和存儲的實(shí)現(xiàn)成本非常大,對資源產(chǎn)生極大的消耗。
針對上述存在的問題,文獻(xiàn)[1]中基于TMS320DM642的通用音視頻解碼器,數(shù)據(jù)集并行和線程級并行增強(qiáng)了對音視頻信息的處理能力,但核心處理器的散熱性能較差,輸出圖像碼率不穩(wěn)定。文獻(xiàn)[2]基于DSP軟硬件結(jié)合方法實(shí)現(xiàn)了音視頻編解碼,使用特殊的DSP數(shù)字信號處理芯片,數(shù)據(jù)傳輸采用HPI方式,但系統(tǒng)中沒有設(shè)計(jì)網(wǎng)絡(luò)接口,通信中視頻圖像的編解碼時延較大。
針對上述研究中存在的不足,本研究對通信音視頻編解碼進(jìn)行了詳細(xì)的分析,并構(gòu)建了通信音視頻編解碼系統(tǒng),將編解碼過程分為音視頻編碼子系統(tǒng)和音視頻解碼子系統(tǒng),并對視頻編碼算法進(jìn)行了優(yōu)化。
在多媒體通信過程中所傳輸?shù)囊曨l圖像和音頻數(shù)據(jù)都含有大量的冗余信息,增加了通信傳輸?shù)臅r間。如果音視頻的分辨率更高,傳輸?shù)臄?shù)據(jù)量迅速增加,使用的傳輸時間增加,無法保證通信的實(shí)時性。通信中視頻圖像信息中數(shù)字幀內(nèi)有空域冗余,圖像的前后幀之間存在時域冗余[3]。為降低傳輸時間,保證通信的實(shí)時性,對音視頻信號進(jìn)行編碼,消除通信信號中的冗余信息,降低相關(guān)性[4]。采用幀間編碼技術(shù),將視頻數(shù)據(jù)的每一個幀分為若干區(qū)塊,每個區(qū)塊中像素的位移向量相同,視頻圖像中幀的相對變化稱為運(yùn)動矢量[5]。根據(jù)視頻圖像的變化,每幀的畫面存在不同的運(yùn)動矢量,通過熵編碼進(jìn)一步對音視頻信號進(jìn)行壓縮,能夠依照圖像中前一幀的像素預(yù)測下一幀的圖像,減少視頻信號中的冗余信息[6]。圖1為本研究通信音視頻編解碼系統(tǒng)總體結(jié)構(gòu)框圖。
圖1 系統(tǒng)總體結(jié)構(gòu)框圖
本研究通信音視頻編解碼系統(tǒng)分為系統(tǒng)核心部分、音視頻編碼子系統(tǒng)和音視頻解碼子系統(tǒng)。根據(jù)用戶對通信音視頻編碼需求,系統(tǒng)構(gòu)建于Linux系統(tǒng)的開源框架之上,利用GSteamer插件加速視頻的處理,能夠提高通信圖像質(zhì)量,減少音視頻信號中的噪聲[7]。音視頻解碼子系統(tǒng)能夠支持高達(dá)8路視頻的并行解碼和顯示,實(shí)現(xiàn)實(shí)時解碼、視頻圖像滿幀率顯示、不會出現(xiàn)卡頓的情況。當(dāng)進(jìn)程開始時根據(jù)設(shè)定參數(shù)開始解碼和顯示線程。系統(tǒng)核心部分采用共享內(nèi)存完成各子系統(tǒng)之間的通信,并實(shí)現(xiàn)自動檢測視頻和顯示故障,通過無線通信通知用戶。系統(tǒng)升級模塊實(shí)現(xiàn)對整個系統(tǒng)的升級和維護(hù),降低了成本,提高了升級速度[8]。表1為各模塊接口的具體指標(biāo)。
表1 各模塊接口指標(biāo)
在實(shí)際編碼工程中,視頻圖像的參考幀在經(jīng)過編碼解碼和濾波后的通信視頻幀中選擇,這種方式可以提高預(yù)測精度和視頻圖像的壓縮編碼效率[9]。將預(yù)測值與視頻圖像進(jìn)行處理,對音視頻信號變換量化后得到相應(yīng)的變換系數(shù)[10]。根據(jù)變換系數(shù)對通信中的信號進(jìn)行熵編碼,壓縮后的信號包含解碼的圖信息,通過網(wǎng)絡(luò)打包后進(jìn)行傳輸。
音視頻編解碼模塊連接外部電源后,將外部電能轉(zhuǎn)換為系統(tǒng)所需的各類電源,提供標(biāo)準(zhǔn)工作電壓給各芯片使用,同時時鐘芯片輸出多種時鐘信號傳輸?shù)礁餍酒?,使各芯片發(fā)揮正常功能。復(fù)位芯片發(fā)生復(fù)位信號使各芯片功能復(fù)位,經(jīng)過AD模數(shù)轉(zhuǎn)換,然后傳輸?shù)叫乱曨l編解碼專用的輸入通道,按照指定的碼率和幀率對通信中傳輸信號進(jìn)行編碼。視頻編碼芯片處理器的內(nèi)部原理框如圖2所示。
圖2 處理器內(nèi)部原理框圖
本文應(yīng)用Hi3531處理器,具有雙核處理器,能夠同時對多路視頻進(jìn)行編解碼,安裝有特定的網(wǎng)絡(luò)加速模塊,同時具有高度集成和多個外圍接口,能夠滿足多種差異的產(chǎn)品功能和圖像質(zhì)量要求。處理器最高主頻可支持390 MHz,提供獨(dú)立的32 kB L1I緩存、32 kB L1D緩存和共享265 kB L2緩存。支持多協(xié)議視頻解碼,包括H.264/AVC Baseline、Main和High三個檔次以及MJPEG/JPEG Baseline、MPEG-4、MPEG-2、AVS基準(zhǔn)檔次等,自適應(yīng)比特率的碼率在16~40 Mbit/s范圍內(nèi),編碼幀率最高為60 fps。還能夠?qū)D像信息去隔行,對通信中視頻圖像進(jìn)行邊緣增強(qiáng),增強(qiáng)圖像的對比度,減小圖像的冗余信息。
視頻AD轉(zhuǎn)換芯片的性能直接關(guān)系到視頻信息解碼速度和圖像質(zhì)量,本研究選用AD9886A作為視頻輸入芯片,如圖3所示。
圖3 AD9886A芯片圖
編碼器的視頻輸入芯片支持VGA格式的視頻信號,視頻經(jīng)過A/D,輸出數(shù)字RGB/YUV格式的視頻。同具有110 MSPS轉(zhuǎn)換速率,4∶2∶2輸出模式,140 MHz模擬帶寬,最大功耗為500 MW。
本研究選用TW2984芯片用來采集音頻信號,支持4路音頻同步輸入,內(nèi)置4個完整的音頻ADC和1個音頻DAC轉(zhuǎn)換器,支持多通道的輸入,采樣頻率為8/16/32/44.1/48 kHz。該芯片的內(nèi)部結(jié)構(gòu)如圖4所示。
圖4 TW2984芯片圖
音視頻編碼模塊通過AD轉(zhuǎn)換芯片轉(zhuǎn)換為數(shù)字RGB視頻信號和音頻信號,進(jìn)行編碼壓縮后通過連接的線路輸出。
采集到音視頻信號后,音視頻編碼子系統(tǒng)開始對原始數(shù)據(jù)進(jìn)行圖像幀編碼。使用圖像中的幀間像素進(jìn)行預(yù)測,進(jìn)一步對誤差變化和量化處理。通常使用的變換方式有離散余弦變換和小波變換等,視頻圖像經(jīng)過特定變換后能夠達(dá)到更好的視覺效果。
由于DCT整數(shù)變換,對通信中的音視頻信號量化壓縮前,引入H.264標(biāo)準(zhǔn)將時域信號轉(zhuǎn)換為頻域信號。通過離散余弦變換,避免了采用泛用性較強(qiáng)的DCT變換引起逆變換中錯配的問題。在對數(shù)據(jù)量化過程中,H.264根據(jù)視頻圖像的像素值變化范圍使用非靜態(tài)方法確定量化參數(shù),能夠最大程度地保留圖像的細(xì)節(jié),不損失視頻信息完整性的同時去除了不必要的碼流。H.264編碼方式如圖5所示。
圖5 H.264混合編碼
在對音視頻數(shù)據(jù)中比例因子進(jìn)行編碼時,除第一個比例因子外,剩余的比例因子都應(yīng)該利用特殊的霍夫曼碼進(jìn)行差分編碼,使用了頻域去除數(shù)據(jù)中的冗余信息,均勻量化可表示為
(1)
其中,Sn表示輸出的反量化音視頻數(shù)據(jù),Sm表示輸入的量化點(diǎn)數(shù),b表示每個音視頻數(shù)據(jù)自帶的位數(shù)。
而MP3使用非均勻量化可以進(jìn)一步壓縮對音視頻數(shù)據(jù)編碼的碼率,進(jìn)一步減小量化誤差,可表示為
(2)
其中,X(j)表示量化后的數(shù)值,ri(j)表示第i個頻帶的頻域值,Ci表示綜合因子。與之對應(yīng)的反量化公式為
(3)
其中,xri為反量化結(jié)果,A為綜合指數(shù)。量化不同的步長解析不同的頻譜系數(shù)采用非均勻量化,公式為
X(j)=int[(|ri(j)|×21/4s-cs)3/4+M]
(4)
其中,s表示比例因子,cs表示全局比例因子,M表示調(diào)整偏差。與之對應(yīng)反量化可表示為
(5)
關(guān)于時域混疊消除法的改進(jìn)離散余弦變換是一種與傅里葉變換有關(guān)的變換,處理對于數(shù)據(jù)量級較大的音視頻信息時的效果更好。在視頻圖像數(shù)據(jù)信號中,出現(xiàn)前一塊數(shù)據(jù)與之后的數(shù)據(jù)重疊的情況,使用離散余弦變換能夠避免音視頻數(shù)據(jù)區(qū)塊邊界出現(xiàn)冗余。AVS音視頻壓縮標(biāo)準(zhǔn)可表示為
(6)
其中,Xk表示混疊重建后輸入的音視頻信號,xn表示經(jīng)過變換后的輸入值。對音視頻信號量化后使用熵編碼進(jìn)行壓縮,同時不會產(chǎn)生任何編碼損耗。音視頻信號構(gòu)成為A={ai|i=1,2,…,m},其中每個信號出現(xiàn)的可能性表示為P(ai),音視頻信號的信息容量為I(ai)=-log2P(ai),其中某一音視頻信號在信源端與其他信號不關(guān)聯(lián),信號源的熵可定義為
(7)
其中,H(X)表示通信中某一音視頻信號的平均信息量。音視頻信號出現(xiàn)的可能性完全一致時,信號的熵達(dá)到最大,在實(shí)際通信音視頻信號編碼過程中出現(xiàn)信號的冗余,時信號編碼的復(fù)雜程度增加。H.264中采用CAVLVC算法可表示為
(8)
其中,Xij為通信信息中視頻圖像塊第i行第j列的值,Xmn表示變換矩陣中的系數(shù)值。量化公式為
(9)
其中,F(xiàn)表示輸出的音視頻信號量化值,Qstep表示量化步長。利用通信中用音視頻信號完成編碼的信息塊消除音視頻信號將出現(xiàn)概率上的聯(lián)系,減少了對音視頻編碼使用的資源,在一定程度上提高了編碼效率。
為驗(yàn)證本文研究通信音視頻編解碼技術(shù)的性能,分別使用文獻(xiàn)[1]編解碼方式、文獻(xiàn)[2]編解碼方式和本研究音視頻編解碼技術(shù)對視頻實(shí)驗(yàn)樣本進(jìn)行處理,比較分析輸出碼率水平和端到端時延。表2為本研究軟件實(shí)驗(yàn)環(huán)境。表3為實(shí)驗(yàn)數(shù)據(jù)樣本。
表2 實(shí)驗(yàn)環(huán)境
表3 數(shù)據(jù)樣本
本研究實(shí)驗(yàn)設(shè)定目標(biāo)幀率為30 fps,與視頻圖像的輸入幀率相同,設(shè)定為恒定碼率控制,I幀和P幀初始參數(shù)為28,編碼過程根據(jù)碼率對量化參數(shù)進(jìn)行調(diào)整。對標(biāo)準(zhǔn)測試圖像樣本進(jìn)行測試輸出的碼率如圖6所示。對圖像數(shù)據(jù)樣本的時延分析如圖7所示。
圖6 圖像序列輸出碼率
由圖6可知,本研究圖像序列輸出碼率范圍在5~6 Mbps,輸出碼率比較穩(wěn)定,有利于音視頻碼流的平穩(wěn)傳輸。
圖7 編解碼時延分析
觀察實(shí)驗(yàn)結(jié)果可知,本研究對音視頻數(shù)據(jù)的編解碼技術(shù)的時延最低,編解碼效率最高。本研究編解碼的幀頻為30 fps,編碼時延為65 ms,傳輸、解碼時延為168 ms,說明本研究編解碼技術(shù)具有更好的實(shí)時性,減少了音視頻信號中的冗余信息。
文獻(xiàn)[1]編解碼方式的幀率同樣為30 fps,編碼時延為125 ms,傳輸、解碼時延高達(dá)318 ms。文獻(xiàn)[2]編解碼方式的幀率為25 fps,編碼時延為86 ms,傳輸、解碼時延為272 ms。文獻(xiàn)[1]和文獻(xiàn)[2]的編解碼方式對視頻圖像樣本編解碼時延過高,算法過于復(fù)雜,運(yùn)算量較大,所使用的時間過長,效率不高,壓縮增益效果較差。
本研究對通信音視頻編解碼系統(tǒng)的設(shè)計(jì)和實(shí)現(xiàn)進(jìn)行了詳細(xì)的分析,能夠最大程度地滿足用戶通信需求。采用Linux系統(tǒng)的開源框架實(shí)現(xiàn)了通信中編解碼功能,提高了應(yīng)用程序的適用性。詳細(xì)說明了新視頻編解碼模塊的功能和設(shè)計(jì),使用H.264視頻編碼和G.711音頻編碼,并分析了子系統(tǒng)的實(shí)現(xiàn)過程。
本文研究還存在一些不足之處有待改進(jìn),對于視頻信息中內(nèi)容復(fù)雜、運(yùn)動較為強(qiáng)烈的情況,運(yùn)動估計(jì)算法的精度有待提高。信號中變換和量化使用的時間過長,對熵編碼還需進(jìn)一步優(yōu)化。