(中國人民解放軍92124部隊, 遼寧 大連 116000)
高清視頻技術是多媒體技術中的關鍵技術,多用于無線通信領域和計算機系統(tǒng)中[1]。多媒體設備從最初單一分辨率到如今的多分辨率立體視頻,從而也對視頻存儲提出了較高要求,采用立體視頻能夠形象記錄,盡管所需存儲空間不斷變大,但是相對記錄的內容依舊不能滿足用戶需求,在這種情況下,視頻壓縮就顯得尤為重要[2]。面臨有限信道的存儲空間,需要盡量壓縮數字視頻存儲空間,使用較低比特率傳輸高質量視頻。多媒體技術在當代人們生活中所占比重越來越高,更多移動終端被廣泛應用,隨著系統(tǒng)更新架構不斷推出,越來越多性能較好的系統(tǒng)平臺被采用[3]。基于ARM平臺是ARM公司新推出的平臺架構,其特定的處理器內核和微處理器具有較強兼容性,為編解碼器的編碼和解碼提供良好環(huán)境。
由于原始編解碼器存在編解碼速度慢,耗費時間長的問題,無法滿足人們需求[4]。為此,提出了基于ARM平臺的高清視頻信號編解碼器優(yōu)化設計。通過對編解碼器的研究,以及ARM平臺分析,可充分了解編解碼流程和各個模塊功能,同時也對ARM平臺處理器機制進行了更加深入的了解,由此可對編碼和解碼各個功能機制進行優(yōu)化,通過對比實驗可知,優(yōu)化后的編解碼器編解碼速度快,且耗費時間較短,能夠滿足人們需求。
隨著我國多媒體技術快速發(fā)展,視頻技術得到廣泛應用,ARM平臺具有性能強大ARM微處理器,并帶有NEON多媒體處理器,針對高清視頻信號的編解碼器在該平臺上進行優(yōu)化是安全的,在整個優(yōu)化過程中,需要采用多種技術,將數據對齊,分別對編碼器和解碼器進行優(yōu)化,能夠在很大程度上地提高編解碼器整體性能[3]。
1.1.1 高清視頻信號接口分離
ARM微處理器具有出色的性能和效率,能夠適用于各種移動和消費類應用,由于處理器是根據不同系統(tǒng)性能而實現的,為用戶苛刻性要求提供了較高編碼性能,并在該性能條件下移動設備功率消耗不到300 mW[5]。在該平臺下對編碼器進行編碼可大幅度提高編碼能力,同時可保持移動設備高功率水平。由于原始編碼器中保留著現場可編程門列(FRGA)模塊,為此,首先需在程序中對主要接口分離,將屬于現場可編程門列(FRGA)進行拆分,通過對不同函數的構建可在核心源程序中,構建7個不同種類的函數,并對其功能進行描述,如表1所示。
表1 核心編碼函數及其功能
由表1可知,現場可編程門列(FRGA)模塊主要是對幀間和幀內進行預測,促使殘差塊掉落,并對幀內部結構進行重新構造,這就包括了幀間和幀內的預測功能。根據其他編碼宏塊所獲取的信息進行預測,在幀間出現的模塊信息,為下一個宏塊編碼提供有效依據,并將信息完整保存,為下一個宏塊編碼提供參考。該部分功能主要是由上述構建函數而實現的,為此,完整幀內部預測模塊函數應包括Y300*macroblock*cache*load、Y300*macroblock*Forward prediction和Y300*macroblock*cache*save三個函數,針對濾波處理,需由Y300*reference*update函數來實現。
針對編碼變換、熵編碼功能實現,需由Y300*encode、Y300*macroblock*write*cavlc和Y300*nal*encode三個函數實現,因此,在上述函數中,Y300*macroblock*cache*load、Y300*macroblock* Forward prediction和Y300*macroblock*cache*save以及Y300*reference*update被劃分到功能模塊當中[6]。在ARM平臺下的程序結構中,各個函數之間的關系是具有獨立性的,不會因此而產生依賴性,因此,在面對宏觀模塊時,進行預測需將目前宏觀模塊和預測模塊同時當作輸入變量,將輸入信號作為預測編碼,如果當前的宏觀模塊與預測模塊同時進行優(yōu)化,那么只有殘差發(fā)生變化時,所得的函數才能包含所有功能,為此需對函數進行拆分,具體拆分過程如下所示:
1)將預測部分從函數中提取出來,采用兩個函數和兩個全局數組方式,名稱和功能如表2所示,在函數中需根據當前預測模塊所包含的所有高清視頻編碼中的亮度與色度信號,調用函數,將獲取的殘差數據全部存入全局數據組中,作為DCT變換輸入[7]。
表2 函數和全局數組名稱功能描述
2)在源程序中修改函數,并逐級調用,促使輸入的模塊為當前宏觀模塊的預測信息,經過上述一系列高清視頻信號接口分離后,輸入殘差數據,相應函數參數也要進行一定修改。經過調整后的函數被內部程序調用了,那么可降低程序修改量,直接將殘差數據輸入,為下一步優(yōu)化提供準確數據。
1.1.2 編碼器代碼精簡
經過上述高清視頻信號接口分離后,獲得了準確輸入數據,將此數據作為基本數據進行編碼器檔次調整,因此對編碼器代碼精簡是具有必要性的。刪除基本檔次,將不需要模塊去除,如果將編碼器內部基本幀內容去除后,那么剩下的檔次只有I幀和P幀,去除B幀之后,不能進行實時編碼,為此,刪除B幀可省去后向預測繁瑣編碼過程[8]。進行熵編碼時,需將自適應的二進制算術編碼應用到不同檔次的實時編碼過程當中,由于編碼器只支持熵編碼,而不支持嫡編碼,為此刪除與嫡編碼有關的所有程序語句。
1.1.3 編碼器邏輯結構精簡
在對高清視頻幀數進行判定時,由于對代碼進行了精簡,為此在編碼過程中省去了后向預測繁瑣編碼過程。在代碼精簡后的編碼器中首先對其它幀進行編碼,將輸入視頻數據序列進行多次空間轉移以及重新排列,空間存儲轉移過程如圖1所示。
圖1 高清視頻幀存儲空間轉移過程
由圖1可知:在讀入視頻數據時,首先應該先保存Y300_ picture過程,然后將數據拷貝下來,同時向邊界方向進行擴展,經過擴展后的視頻寬度變?yōu)?2像素,那么主要用于數據預測和視頻方向預計[9]。確定預測幀方向后,將讀入順序與輸入順序進行對比,如果輸入順序視頻幀數一定數值后,可進行重排,對讀入視頻幀數序列進行類型判斷,最后,對current序列中的視頻進行編碼。
針對目前函數中存在的序列,經過種類判定后,序列需再次排列,將B幀存在在P幀之后,然后對函數進行重新調用,隨后按照當前幀順序完成編碼。針對I幀種類的判斷,可對P幀進行編碼,當編碼完成后,需對P幀進行預測,預測后的數據是需要修正的,由此可知,如果編碼時含有B幀,那么B幀種類判定結果比較復雜;如果編碼時沒有B幀,那么實際幀序列為IPPP…,為此,需對部分邏輯進行簡化,去掉current序列,需對每次讀入的幀數進行直接判定,但需保留I幀判定方式,優(yōu)化后的編碼器幀判斷類型如圖2所示。
圖2 優(yōu)化后的編碼器幀判斷類型
在整個解碼器優(yōu)化的過程中,需利用內聯(lián)函數將數據對齊,并采用多重優(yōu)化技術將解碼器內部進行優(yōu)化,該方式能夠提高解碼器性能,而且針對解碼速度也具有一定影響。采用匯編級別優(yōu)化方式,尤其是在ARM微處理器平臺下能夠并行處理,基于此,提出了針對并行處理機制的優(yōu)化方法,在較大程度上能夠提高整體性能。經過上述內容能夠獲取不同形式下的函數,針對熱點函數需對其進行優(yōu)化,以此為基礎提高高清視頻編碼器整體性能。
1.2.1 優(yōu)化C級別
在C級別優(yōu)化策略中,需對解碼器運算性能進行優(yōu)化,具體優(yōu)化過程如下所示:
由于內聯(lián)函數是函數調用的關鍵方法,采用該方法不但可以節(jié)省函數調用時間,還能使解碼整體達到高效率標準,通過對全部函數分析可知,經常被使用的函數是解碼器在優(yōu)化時最好的內聯(lián)紐帶,一般情況下,只要小于等于5個信號發(fā)出的指令,那么周期函數是需要通過內聯(lián)紐帶才能完成優(yōu)化的,具體優(yōu)化方式有:1)保密內聯(lián):通過編譯器對全部函數進行校驗,通過驗證的函數進行內聯(lián),然后編譯選項,利用內聯(lián)數據進行選擇來完成優(yōu)化;2)顯示內聯(lián):在函數中使用關鍵字進行優(yōu)化,在頭文件中的定義添加關鍵字,防止在連接過程中對定義重復設置;3)人工內聯(lián):通過人工方式,對有關性能影響較大關鍵函數進行定義替換,完成相應部分調用。
1.2.2 移除多余結構體以及冗余函數
在原始解碼過程中,難免會存在各種各樣的冗余結構,為此在優(yōu)化時,需將冗余結構的變量體去除,或者重新設置內存單元來減小內存占用情況,以此為基礎提高解碼運行效率。在ARM平臺下進行解碼,此時需要調用函數,以此為基礎調回更多數據來填滿緩存單元。通常情況下,原始緩存數據大小為128字節(jié),在小的緩存單元中會出現頻繁函數調用情況[10],此時需對信號解碼狀態(tài)進行讀取,如果調回的函數消耗時間較小,那么提高解碼器性能的幾率就會大大提高。
根據上述內容,在代碼優(yōu)化過程中,將調回函數數據緩存大小更改為1.5 K個字節(jié),該種優(yōu)化方式能夠有效提高解碼整體性能,在解碼器使用過程中,利用上層解碼數據將解碼幀儲存到模塊中,然后將上層數據通過回調函數方式進行數據收集,進而將整體回調函數去除,該步驟能夠加快解碼器的解碼速度,進而大大提高解碼器對高清視頻信號解碼的效率。
1.2.3 優(yōu)化熵解碼
一般情況下,利用哈夫曼解碼方式作為嫡解碼[11],可將解碼過程變得更加直觀化,通常采用二叉樹的方式呈現,如圖3所示。
圖3 二又樹解碼
查表方式如表3所示。
表3 熵解碼符號、碼字、碼長對應表
由表3可知,解碼過程查表可由以下幾個表組成,每次進行解碼時可讀取一個bit,剩下數據可通過如下方式進行。當讀取比特為1時,符號為a。當讀取比特為0時,需向下跳轉:當讀取比特為1時,符號為b。當讀取比特為0時,需向下跳轉;當讀取比特為1時,符號為c。當讀取比特為0時,需向下跳轉;當讀取比特為1時,符號為d。當讀取比特為0時,符號為e。該表一共分為14個等級,針對每一個等級,進行讀取的比特數分別為1-1-1-1-1-1-1-0-0-0-0-0-0。通過完成解碼后獲得的符號,進行一次性碼流最大字節(jié)比特數輸入,然后將數據進行一一比較進行解碼,可獲得解碼時所耗費時間,如果讀入1個比特數據,如果比特為0,那么需要根據上述方式繼續(xù)查找,如果達到哈夫曼葉節(jié)點則說明解碼成功。采用這種優(yōu)化方法,重新建立哈夫曼查表,每一個級別的查找都能快速完成,優(yōu)化后的查找等級,平均搜索時間較快,能夠滿足人們快速解碼需求。
為了驗證基于ARM平臺高清視頻信號編解碼器優(yōu)化設計有效性進行了如下實驗。該實驗選取某高清視頻編解碼器中的一些典型樣本進行測試,在ARM平臺上利用仿真工具驗證優(yōu)化后結果。
將初步移植到ARM平臺上編碼器整體性能進行測試,采用同一視頻不同分辨率方法,對復雜畫面序列進行測試。其中有關視頻名稱和內容的描述如下所示:
1)Foreman*cif.yuv:該序列表示視頻中的人物與背景紋理復雜程度一致,如果發(fā)生劇烈運動,那么視頻中的鏡頭會處于劇烈搖晃狀態(tài)下;
2)Silent*cif.yuv:該序列表示視頻處于靜鏡頭環(huán)境下,人物與背景紋理不一致,復雜程度相對高;
3)Container*cif*yuv:該序列表示視頻中的人物與背景紋理復雜程度一般,鏡頭集中且運動相對緩慢。
4)Bigships*1024*768.yuv:該序列表示視頻背景與人物視頻中運動紋理復雜程度一致均較高,運動相對緩慢;
5)Jet*1024*768.yuv:該序列表示視頻背景與人物運動紋理復雜程度一致均一般,此時鏡頭是可移動的。
利用CCS的profile工具,分別對序列進行統(tǒng)計,統(tǒng)計結果如表4所示。
表4 編碼器序列統(tǒng)計結果
為了使性能驗證結果更加具有可靠性,將原始解碼器與本文優(yōu)化后的解碼器序列情況進行對比,結果如表5所示。
表5 兩種設計方法序列測試結果對比
由表5可知:由于每個測試的序列長度均為25幀,相比于原始編碼器中的序列初始統(tǒng)計結果,優(yōu)化后的編碼器平均編碼速度提高了約12倍。
不同解碼率在優(yōu)化后的性能統(tǒng)計結果如表6所示。
表6 不同解碼率性能優(yōu)化結果
根據表6中解碼器優(yōu)化性能,將原始解碼器與優(yōu)化后的解碼器平均解碼時間進行對比,結果如圖4所示。
圖4 兩種方法解碼時間對比結果
由圖4可知在高碼率條件下的原始解碼器耗費時間為50101 s,而優(yōu)化后的解碼器平均解碼時間為46390 s;在中碼率條件下的原始解碼器耗費時間為168153 s,而優(yōu)化后的解碼器平均解碼時間為108057 s;在低碼率條件下的原始解碼器耗費時間為200132 s,而優(yōu)化后的解碼器平均解碼時間為102635 s;在普通樣本條件下的原始解碼器耗費時間為240134 s,而優(yōu)化后的解碼器平均解碼時間為187564 s。
根據上述分別對編碼器優(yōu)化性能和解碼器優(yōu)化性能進行驗證,可得出實驗結論:原始編解碼器無論是編碼速度還是解碼速度都遠遠小于優(yōu)化后的編解碼器,且時間也是比優(yōu)化后編解碼器耗費較多,由此可知經過優(yōu)化后的編解碼器平均耗費時間較短,編解碼速度較快。
通過對編解碼器研究,以及ARM平臺分析,可充分了解編解碼流程和各個模塊功能,同時也對ARM平臺處理器機制進行了更加深入了解。分別對編碼和解碼各個功能機制進行優(yōu)化,可充分提高編解碼器整體性能,在完成針對編解碼模塊優(yōu)化后,整體性能有了較大程度提高,并通過實驗證明,優(yōu)化后編解碼器無論是編碼速度還是解碼速度都比原始編碼器快,且耗費時間短,可充分保證其整體性能的穩(wěn)定性,更有針對性地完成優(yōu)化工作。
參考文獻:
[1] 張 晗, 段鵬松. 基于通信編碼的視頻監(jiān)控無損控制優(yōu)化設計[J]. 科技通報, 2015, 31(12):209-211.
[2] 武為江, 蒲 濤, 朱華濤,等. 基于波長選擇開關的OCDMA 編解碼系統(tǒng)實驗研究[J]. 中國激光, 2016,20(1):116-121.
[3] 陳天恒, 楊曉靜, 王偉力,等. 基于蟻群算法的變電站視頻監(jiān)控聯(lián)動方案優(yōu)化設計[J]. 電力系統(tǒng)保護與控制, 2016, 44(2):134-139.
[4] 孫 文, 全惠敏, 吳桂清,等. 基于ARM和以太網接口的振動信號采集系統(tǒng)設計[J]. 電源技術, 2015, 39(9):1963-1964.
[5] 劉隆華, 黃洪全, 黃啟哲,等. 基于電弧外特性的故障定位信號發(fā)生器優(yōu)化設計[J]. 電力系統(tǒng)自動化, 2016, 40(9):100-105.
[6] 王風燕, 方華麗, 劉志剛. 基于信號白噪聲處理的玉米精密排種器結構優(yōu)化設計[J]. 農機化研究, 2016, 38(7):30-34.
[7] 劉艷飛, 郭 軍. 基于三值光學計算機解碼器信號判定系統(tǒng)的設計研究[J]. 激光雜志, 2016, 37(8):54-56.
[8] 龔 裕, 朱海業(yè), 李 楠. 基于正交試驗方法的相鄰電容傳感器優(yōu)化設計[J]. 北京工業(yè)大學學報, 2015,19(1) :32-36.
[9] 時維元, 林正英, 陳希信,等. 線性調頻信號低旁瓣脈壓窗函數的優(yōu)化設計[J]. 現代雷達, 2015, 37(10):18-20.
[10] 周 軍, 李 娟, 王慶豐,等. 基于自發(fā)輻射抑制的紅外光機系統(tǒng)優(yōu)化設計[J]. 光學學報, 2015, 35(3):278-285.
[11] 龔楊陽, 安軍社, 朱 巖. CCSDS標準下低碼率LDPC碼的編碼器設計[J]. 電子設計工程, 2017, 25(5):57-60.