王 賀
(上海國茂數(shù)字技術(shù)有限公司,上海201203)
責(zé)任編輯:許 盈
我國自主產(chǎn)權(quán)的高級視頻編碼協(xié)議AVS、AVS+[1]相繼成熟并確定,其編碼效率與H.264/AVC[2]達(dá)到了同一檔次[3]。近幾年,AVS實時高清編碼器在各類市場中都有較大的需求,最有代表性的是廣播級視頻編碼器。廣播級視頻編碼器產(chǎn)品按照平臺來分類,大致可以分為兩類:一類是“硬編碼”,另一類是“軟編碼”。
最傳統(tǒng)的硬件編碼器是沒有操作系統(tǒng)參與的完全由數(shù)字邏輯電路完成編碼操作的數(shù)字電路設(shè)備,如廣為應(yīng)用的74系列編碼器。在視頻編碼器領(lǐng)域的硬編碼,指的是所有編碼工作都由ASIC芯片完成,沒有操作系統(tǒng)和軟件參與的編碼方案,比如富士通的MB86H50芯片,能夠?qū)崿F(xiàn)H.264的準(zhǔn)高清編碼,但是編碼質(zhì)量有限制。由于商用視頻編碼器功能要求高,其功能模塊中不僅包含視頻編碼模塊,一般還包括了音視頻采集、音頻編碼、碼流復(fù)用、加密等功能模塊,沒有操作系統(tǒng)和軟件的支持是無法實現(xiàn)的。只要編碼器需要操作系統(tǒng)支持,并且有軟件參與工作的都屬于軟件編碼器,即行業(yè)內(nèi)所說的軟編碼,軟編碼按照所使用的操作系統(tǒng)分為兩大類,一類是加載嵌入式操作系統(tǒng)的方案,如DSP+FPGA,ARM+DSP,ARM+FPGA以及CPU+FPGA;另一類是基于多媒體服務(wù)器的方案。下一節(jié)對現(xiàn)有的幾種常見的軟編碼方案進(jìn)行介紹。
該方案中FPGA只承擔(dān)了視頻數(shù)據(jù)采集與編碼碼流輸出的功能,而主要的編碼工作由DSP處理器承擔(dān),DSP加載了裁剪的Linux操作系統(tǒng)或者定制的Sysbios系統(tǒng)完成編碼軟件的調(diào)度,編碼過程中DSP與FPGA之間存在數(shù)據(jù)交互[4]。因此對于DSP的處理能力要求較高,較低端的DSP處理器無法滿足廣播級編碼的要求,因此各大廠商也推出了針對視頻處理的DSP產(chǎn)品,比如TI公司的Keystone系列DSP芯片。該方案的邏輯圖如圖1所示,F(xiàn)PGA首先將輸入信號復(fù)合YUV圖像數(shù)據(jù),送到SDRAM中間緩存中,DSP讀取緩存中的YUV數(shù)據(jù)進(jìn)行壓縮編碼,DSP的程序架構(gòu)是完全的軟件架構(gòu),不同的DSP處理器對多線程的處理方式有所不同。最后將壓縮的碼流再轉(zhuǎn)交給FPGA模塊,由FPGA模塊負(fù)責(zé)將TS(Transport Stream)數(shù)據(jù)發(fā)送出去。
ARM處理器具有體積小、功耗低、成本低的特點,同時作為一種通用處理器,數(shù)據(jù)管理能力強,擴展接口豐富。如圖2所示,該方案的系統(tǒng)主控制模塊以ARM處理器為核心[5],負(fù)責(zé)系統(tǒng)的通用控制,也負(fù)責(zé)與DSP視頻處理的通信控制。視頻處理模塊以DSP芯片為核心,負(fù)責(zé)視頻數(shù)據(jù)的采集、視頻存儲等功能。系統(tǒng)可以包括多路的音頻、視頻輸入。DSP視頻處理模塊作為子系統(tǒng),接受ARM的控制,與ARM有大量的視頻數(shù)據(jù)通信。ARM控制模塊與DSP視頻處理模塊,各自是一個獨立的嵌入式計算系統(tǒng),除了數(shù)據(jù)交互外,二者的開發(fā)調(diào)試都是分開和獨立的。自下向上,都包括硬件設(shè)備層、設(shè)備驅(qū)動層、操作系統(tǒng)層和應(yīng)用程序?qū)铀膶印?/p>
圖1 DSP+FPGA方案邏輯框圖
圖2 ARM+DSP系統(tǒng)框圖
在ARM主控制模塊中,硬件設(shè)備包括SDRAM、Flash、時鐘管理、電源管理等核心模塊,構(gòu)成一個最小系統(tǒng),能支持整個編碼系統(tǒng)的運行。為了軟硬件開發(fā)和外部設(shè)備擴展,硬件設(shè)備包括如下幾部分:JTAG調(diào)試電路,模擬/數(shù)字信號采集模塊,DSP數(shù)據(jù)交換總線等。DSP視頻處理模塊的硬件設(shè)備包括視頻采集、編碼、存儲等部分。該方案加載的DSP/BIOS是一個簡易的實時嵌入式操作系統(tǒng),主要用于完成同步、編碼控制通信以及實時檢測等功能。
ARM與DSP的通信方式有多種,比如串口通信、網(wǎng)絡(luò)通信、HPI并行連接通信等方式。這些方式各有優(yōu)缺點和適用場合,該方案采用的是HPI連接方式。當(dāng)采集數(shù)據(jù)隊列準(zhǔn)備好之后,ARM通過HPI收到采集完成信號,然后ARM發(fā)送編碼啟動的信號給DSP,調(diào)用DSP的一個核來啟動一個線程,通過這種方式完成編碼。對外圍設(shè)備的調(diào)度、碼流的輸入輸出以及網(wǎng)絡(luò)功能的實現(xiàn)等也由ARM處理器加載的嵌入式操作系統(tǒng)完成。
這兩種方案中,ARM和CPU加載嵌入式操作系統(tǒng),完成編碼流程調(diào)度和數(shù)據(jù)輸入輸出功能。FPGA承擔(dān)大部分的編碼工作量,比如運動估計、變換量化等編工作。方案[6]如圖3所示,ARM與FPGA之間通過AHB總線通信,由于計算能力的限制,編碼任務(wù)量是非對稱地分布在兩個處理核心之間,ARM承擔(dān)了碼流復(fù)用和可變長熵編碼,主要的預(yù)測工作由FPGA完成。FPGA中的編碼模塊被分為前向、后向兩個通路,在前向通路中,宏塊數(shù)據(jù)的地址由地址發(fā)生器產(chǎn)生,根據(jù)地址送入幀內(nèi)或者幀間預(yù)測單元。然后根據(jù)預(yù)測結(jié)果得到殘差值,將殘差值送入DCT變換和量化單元,根據(jù)不同的QP設(shè)置輸出不同質(zhì)量的變換量化結(jié)果。變換量化后的數(shù)據(jù)作為編碼數(shù)據(jù)通過AHB總線送入ARM進(jìn)行可變長編碼。在FPGA的后向通路中,編碼數(shù)據(jù)被解碼后重建作為參考圖像為后續(xù)圖像作參考幀。FPGA內(nèi)部所有的編碼流程是由一個邏輯控制單元控制的,在一幀圖像內(nèi)的編碼順序是依照宏塊的排列順序。CPU+FPGA的方案與ARM+FPGA方案基本一致,不同之處在于多核CPU可以更多地分擔(dān)編碼工作量,提供更好的編碼質(zhì)量。
圖3 ARM+FPGA系統(tǒng)框圖
FPGA的功能是由硬件描述語言實現(xiàn)的,如果FPGA運行出錯,那么錯誤排查非常復(fù)雜。而且由于FPGA開發(fā)要顧及時序和布線等問題,F(xiàn)PGA上任何一個編碼工具的調(diào)整都會影響其他編碼工具的實現(xiàn),那么就使得對FPGA的功能升級困難,而且FPGA與主控核心之間的數(shù)據(jù)通信依然是系統(tǒng)開發(fā)的難點。
在多核技術(shù)廣泛應(yīng)用之前,單核CPU的處理頻率存在瓶頸,使得單個CPU無法負(fù)擔(dān)高清實時編碼巨大的計算量,不得不借助于專用ASIC處理芯片;多核技術(shù)的成熟,使得CPU的計算能力出現(xiàn)了飛躍,隨著CPU的并行處理核心數(shù)增加,其處理能力得到了數(shù)倍甚至數(shù)十倍的提高,選擇ASIC芯片輔助編碼的必要性已經(jīng)失去。知名的編碼器廠商都有自己的廣播級軟件視頻編碼器產(chǎn)品。由于編碼工作都是由多核CPU運行軟件完成的,能夠完善地繼承參考模型中各個編碼工具的功能。在該類編碼器的研發(fā)中無需考慮其他幾種方案遇到的工程問題,比如不同處理核心之間的通信問題,主要工作內(nèi)容就集中在提高編碼效率、完善軟件架構(gòu)。
方案[7]的并行架構(gòu)如圖4所示,原始圖像Fn通過前向路徑:預(yù)測(幀內(nèi)或幀間)、整數(shù)變換、量化和熵編碼獲得編碼碼流,而通過重構(gòu)路徑,即反量化、反變換、運動補償來獲得重建圖像F'n,用作預(yù)測編碼的參考幀。為經(jīng)過并行預(yù)處理后的原始圖像,MV’為經(jīng)過整像素運動估計后的運動矢量,MV為經(jīng)過亞像素運動估計后的最終運動矢量。該框架主要可分為3大部分,分別為預(yù)處理模塊、運動估計模塊以及編碼模塊。雖然3個模塊是串行連接的,但各模塊之間有一定的幀數(shù)量延遲時間,因此各個模塊就可以獨立并行工作:當(dāng)?shù)?個模塊進(jìn)行了M幀數(shù)據(jù)的處理后,第2個模塊便開始運行;當(dāng)?shù)?個模塊對數(shù)據(jù)進(jìn)行了N幀處理后,第3個模塊就開始進(jìn)行編碼處理。由于在實際的視頻編碼系統(tǒng)中,除去視頻數(shù)據(jù)的輸入輸出、存儲設(shè)備的初始時間以及硬件平臺的啟動時間,單純在編碼模塊中運動估計部分往往占據(jù)最多的編碼時間。而在運動估計中,整像素運動估計在多參考幀模式下占據(jù)最大的計算量和計算時間,因此,整像素運動估計的并行化是解決問題的關(guān)鍵。該方案的編碼框架利用了編碼延遲能夠緩沖幀的特點,同時充分利用預(yù)處理模塊獲得的幀類型參數(shù),使運動估計模塊對每幀數(shù)據(jù)獨立地并行化運動估計,經(jīng)過運動估計后視頻幀才進(jìn)入編碼模塊。這種并行運動估計極大地提高了整個編碼框架的并行性,也極大地提高了多核計算資源的利用率。在并行運動估計完成后進(jìn)行運動補償,然后對殘差圖像進(jìn)行DCT變換、量化以及熵編碼來得到最終碼流。由于在這些模塊沒有整像素運動估計那么高的計算復(fù)雜度,因此計算速度提高很多,也提高了幀間預(yù)測的效率,從而能夠減小并行幀數(shù)。經(jīng)實驗驗證,該方案的率失真性能相比理論最優(yōu)的率失真性能僅僅低約0.2 dB,保證了編碼圖像的高質(zhì)量。
高性能服務(wù)器的硬件平臺是經(jīng)過了市場的多年驗證的,穩(wěn)定性很高,而且專業(yè)級的操作系統(tǒng)的功能較為強大,可以靈活選用功能最優(yōu)的輸入輸出設(shè)備,在更換外圍設(shè)備時對視頻編碼核心沒有任何影響。同時,可以針對不同用戶需求定制復(fù)用、加密等功能,而且可以通過對軟件的修改完成對各種復(fù)雜網(wǎng)絡(luò)功能的支持。當(dāng)編碼器廠商在對編碼核心進(jìn)行調(diào)整優(yōu)化后,可以及時地對用戶的編碼器進(jìn)行在線升級,換言之,在軟件編碼器的使用過程中,其性能可以隨著時間不斷提升,這就使得廣電運行商的帶寬壓力不斷減小,編碼功能的選擇也不斷增加,客觀上延長了產(chǎn)品的生命期。
圖4 多核服務(wù)器并行編碼軟件架構(gòu)
由于不需要加載操作系統(tǒng),硬編碼在啟動速度上快于軟編碼。也是因為沒有操作系統(tǒng),所以硬編碼的功能有很大局限性,故大量的編碼芯片是應(yīng)用在如視頻監(jiān)控、移動設(shè)備數(shù)據(jù)壓縮等領(lǐng)域,廣播級的編碼設(shè)備沒有純粹的ASIC芯片編碼器。硬編碼的另一個缺陷是編碼質(zhì)量稍遜,而且市場上尚無能支持1 080p全高清編碼的廣播級編碼芯片。
采用了ARM,DSP,F(xiàn)PGA等元件的編碼器,整體體積可以做得相對小,但各個器件之間存在設(shè)備間數(shù)據(jù)通信問題,在特殊條件下可能引起數(shù)據(jù)的不穩(wěn)定。FPGA對串行性較強的數(shù)據(jù)處理能力較差,必須依賴其他處理單元協(xié)同處理。而且FPGA的功能更新困難,升級不便,如果運行出現(xiàn)錯誤,排除錯誤的周期也較長。由于該方案的硬件平臺不是通用平臺,都需要特殊定制,對平臺的穩(wěn)定性需要長期觀察。
服務(wù)器平臺方案對視頻編碼工具的功能裁剪最少,故編碼圖像質(zhì)量最好。該方案使用的編碼軟件是在成熟的環(huán)境中開發(fā)的,相關(guān)資源豐富、可靠,有利于功能的更新升級,而且對網(wǎng)絡(luò)功能的應(yīng)用更友好。硬件平臺方面,國際廠商所提供的服務(wù)器平臺在設(shè)計、選材的能力方面強于普通廠商,其硬件平臺可靠性有保證,而且對于外圍設(shè)備兼容性更好,對潛在的功能擴展有好處。
表1是幾個主要性能評價標(biāo)準(zhǔn)的對比表格,可以看出在整體性能上,高性能服務(wù)器平臺具有巨大優(yōu)勢。
表1 各類平臺性能對比
本文首先介紹了硬編碼和軟編碼的定義,并且對常見的軟編碼方案進(jìn)行了介紹,指出各個方案的特點,隨后進(jìn)行了對比,指出軟編碼的優(yōu)勢。在互聯(lián)網(wǎng)時代,廣播電視設(shè)備不可避免地在向網(wǎng)絡(luò)化、IP化過渡,因此對視頻編碼器是否能支持更復(fù)雜的網(wǎng)絡(luò)功能要求,比如視頻的網(wǎng)絡(luò)組播、視頻編碼器的遠(yuǎn)程網(wǎng)絡(luò)管理,是評價一個編碼器是否合格的重要標(biāo)準(zhǔn),而且未來的編碼器將集成各種各樣的媒體處理功能,那么對編碼器的整體性能的要求也非常高。當(dāng)今視頻編碼技術(shù)和網(wǎng)絡(luò)技術(shù)更新的速度在加快,軟編碼必將是未來視頻編碼器的主流。
[1]GB/T 20090.2—2006,信息技術(shù)先進(jìn)音視頻編碼第2部分:視頻[S].2006.
[2]ISO/IEC11496-10:2005(E),Advanced video coding for generic audiovisual services[S].2005.
[3]張偉民.AVS+標(biāo)準(zhǔn)的主觀圖像質(zhì)量對比分析[J].電視技術(shù),2013,37(21):9-11.
[4]牛建偉,胡建平,毛士藝.基于DSP和FPGA的視頻編碼器協(xié)同設(shè)計與算法優(yōu)化實現(xiàn)[J].航空學(xué)報,2005,26(1):90-92.
[5]王應(yīng)莉.基于ARM+DSP架構(gòu)的視頻處理系統(tǒng)[D].成都:電子科技大學(xué),2007.
[6]LICCIARDO G,COSTAGLIOLA M.An H.264 encoder for real time video processing designed forSPEAr customizable system-on-chip family[C]//Proc.IEEE International Conference on Signal Processing and Communications(ICSPC).Dubai:IEEE Press,2007:824-827.
[7]蔣驍辰,李國平,王國中,等.基于AVS+實時編碼的多核并行視頻編碼算法[J].電子與信息學(xué)報,2014,36(4):810-816.