蔣驍辰 李國平王國中 趙海武 藤國偉
(上海大學(xué)通信與信息工程學(xué)院 上海 200072)
AVS標(biāo)準(zhǔn)[1]作為我國制定的具有自主知識產(chǎn)權(quán)的音視頻編解碼標(biāo)準(zhǔn),對我國數(shù)字化音視頻產(chǎn)業(yè)的發(fā)展具有重要意義。AVS與H.264相比大大降低了算法復(fù)雜度,然而編碼效率也有不少降低。為了進(jìn)一步提高AVS的編碼效率,2012年3月18成立了AVS+工作推進(jìn)組,在原有AVS標(biāo)準(zhǔn)基礎(chǔ)上,在運動矢量預(yù)測、量化、熵編碼等方面增加4項關(guān)鍵技術(shù),形成了 AVS+視頻編碼標(biāo)準(zhǔn)[2]。AVS+標(biāo)準(zhǔn)于2012年7月發(fā)布成為廣電行業(yè)標(biāo)準(zhǔn),2013年3月18日正式應(yīng)用于衛(wèi)星電視播放。
由于 AVS+新增了多項關(guān)鍵技術(shù),雖然提高了編碼效率,但其編碼端的復(fù)雜度必然會大大提升,而且該標(biāo)準(zhǔn)主要應(yīng)用于 3D高清電視,這些都為編碼器的實現(xiàn)提出極大的挑戰(zhàn),因此研究編碼器加速的實現(xiàn)方法是AVS+產(chǎn)業(yè)化的關(guān)鍵課題。
近年來,隨著多核處理器浪潮的不斷來襲,利用多核處理器的視頻編碼并行加速成為了標(biāo)準(zhǔn)制定以及編解碼產(chǎn)品設(shè)計的主流方向。在快速發(fā)展的多核硬件系統(tǒng)以及并行工具的條件下[3],需要有更好的并行編碼的軟件和算法來實現(xiàn)更加快速有效的視頻編碼功能。對于傳統(tǒng)的視頻編碼系統(tǒng),在MPEG-2之后引入了slice的概念,大大提升了編碼系統(tǒng)的抗誤碼能力,而且逐漸出現(xiàn)了并行編碼的理念,slice的相關(guān)技術(shù)也一直應(yīng)用于后續(xù)的并行編碼算法。但是仍然存在對于邊緣數(shù)據(jù)主要是邊緣運動矢量和幀內(nèi)預(yù)測的無法預(yù)測性,并且降低了并行編碼效率。當(dāng)前基于H.264的并行視頻壓縮是國內(nèi)外學(xué)者研究并行編碼的熱點。Intel研究中心的研究人員提出了基于Intel超線程體系結(jié)構(gòu)下的H.264編碼器的并行編碼模型[46]-。對于如何進(jìn)行幀級并行化,slice級并行化和宏塊級并行化分別進(jìn)行了討論,并采用slice級并行的方法進(jìn)行實施,編碼速度顯著提高,加速比接近處理器核心的數(shù)目,這樣做的后果是顯著地增大碼率。浙江大學(xué)和Intel中國研究中心的研究人員對 H.264的離散余弦變換(Discrete Cosine Transform, DCT)和解碼[7]進(jìn)行了并行化研究,采用Intel的擴(kuò)展指令集(Streaming Simd Extensions,SSE)的向量運算特性,對H.264計算量較大的變換和量化部分進(jìn)行了指令集的優(yōu)化。文獻(xiàn)[8]中提出了將編碼和運動估計并行處理,并且通過原始圖像作為運動估計參考幀來充分解決依賴性問題,雖然這種并行處理提高了硬件的利用率,但是沒有完全去除編碼線程和運動估計之間依賴性。對于新一代視頻編碼標(biāo)準(zhǔn)HEVC, JCT-VC (Joint Collaborative Team on Video Coding)也專門針對提高并行編碼性能提出了有價值的技術(shù),如 WPP (Wavefront Parallel Processing)和 Tiles[9]。WPP[10]技術(shù)簡單來說只需要上一行的第 2個最大編碼單元(LCU),編解碼完畢即可以開始當(dāng)前行的編解碼,以此提高編解碼器的并行處理能力。而Tiles技術(shù)[11]則是利用垂直和水平的邊界將圖像劃分為一些行和列,劃分出的矩形區(qū)域為一個 Tile,每一個 Tile包含整數(shù)個LCU且Tile之間相互獨立,以此來實現(xiàn)并行。上述兩種技術(shù)只適用于HEVC標(biāo)準(zhǔn),且都是利用空間并行化,因此并行化程度不高,且難以處理好碼率分配問題。AVS+標(biāo)準(zhǔn)不支持WPP和Tiles并行化技術(shù),只有slice編碼可用于并行化計算,而幀內(nèi)slice的并行編碼不僅降低編碼效率,而且也會產(chǎn)生條帶效應(yīng)[12]。
通過對上述傳統(tǒng)并行編碼技術(shù)的分析,我們發(fā)現(xiàn)傳統(tǒng)的視頻編碼框架是影響并行編碼的最主要因素,因此,本文改變了傳統(tǒng)的編碼框架,提出了一種新的視頻并行編碼框架。該框架包括并行視頻預(yù)處理,并行運動估計,幀內(nèi)/幀間并行編碼結(jié)構(gòu),并將新的編碼框架應(yīng)用于基于 AVS+標(biāo)準(zhǔn)的實時編碼器中,得到一種基于 AVS+實時編碼的視頻并行編碼算法。本文實驗表明,該并行編碼算法有效地去除幀間參考相關(guān)性,從而充分利用了多核多處理器的運算能力,極大地提高了視頻編碼速度。
傳統(tǒng)的視頻編碼標(biāo)準(zhǔn)的語法結(jié)構(gòu)層次由高到低依次為序列(sequence),圖像組(group of pictures),幀(frame),片(slice),宏塊(macroblock)和塊(block)。一個視頻序列可以包含一個或多個圖像組,每個圖像組總是由I幀開始。
一幀圖像可以分為一個或多個片,每個片在編碼時不能參考同個圖像的其它片,這樣可以限制誤碼的擴(kuò)散。因此片間是編碼獨立的。由于標(biāo)準(zhǔn)中有其特有的片語法結(jié)構(gòu),因此幀內(nèi)并行編碼采用片級并行更易實現(xiàn)碼流的封裝,因為,在編碼數(shù)據(jù)流中所有的視頻序列頭信息、圖像頭信息和片頭信息都放置在輸出碼流的前部,所以主線程將各個任務(wù)線程的壓縮數(shù)據(jù)流收集后,進(jìn)行數(shù)據(jù)同步和封裝更容易些[13]。
幀內(nèi)片級并行編碼的基本原理如圖1所示。將1幀圖像分成4個片,每個片通過1條工作線程進(jìn)行編碼,各工作線程之間并行工作,所有線程完成編碼任務(wù)之后進(jìn)行數(shù)據(jù)同步。雖然片級并行編碼充分利用了語法結(jié)構(gòu)特點實現(xiàn)編碼并行化,且易于實現(xiàn),但編碼效率不高,且會產(chǎn)生條紋效應(yīng)。
圖1 幀內(nèi)片級并行編碼示意圖
傳統(tǒng)的幀間級并行編碼模式主要利用幾幀之間可共用參考幀的特點進(jìn)行并行化編碼,對于一個序列,在串行編碼起始的I幀和P幀后,可以將使用相同參考幀的P幀和B幀同時進(jìn)行編碼。
如圖2所示,假設(shè)輸入視頻為IBBPBBP的形式,第1個 I 幀I(0)和P幀P(3)必須串行編碼,第2個P幀P(6)和前兩個B幀B(1), B(2),它們不需要相互參考,沒有數(shù)據(jù)相關(guān)性,所以可以并行編碼。這3幀的參考幀都是I(0)和P(3),因此在串行編碼完I(0)和P(3)后,我們可以分出3個線程來并行處理P(6), B(1)和B(2)。這3幀并行編碼完成后,程序又回到主線程,準(zhǔn)備編碼 P(9), B(4)和 B(5)。這種并行方式的缺點在于沒有很大程度地消除幀間相關(guān)性,從而并行度不是很高,且由于幀間較大的依賴性和參考性以及各個幀編碼時間的不完全一致性,難免會在某些時候造成延時等待,削弱了系統(tǒng)性能。另外,其算法擴(kuò)展性也不佳,它的加速比較大地受限于圖像組B幀的數(shù)量。
根據(jù)運動物體存在連續(xù)性的特點,視頻圖像中的宏塊的搜索范圍是有限的,因此無需等待當(dāng)前幀全部編完,只要后面參考當(dāng)前幀的待編碼幀已經(jīng)獲得所需要的參考信息,它就可以同時進(jìn)行編碼[14]。
圖2 幀間并行示意圖
如圖 3所示,假設(shè)輸入序列為IBBPBBP,序列中的每幀都采用片級的并行編碼方式進(jìn)行編碼,而在各幀之間,其基本編碼順序與傳統(tǒng)幀間編碼方式相同,只是每幀之間有時間上的延遲,而不是如圖2那樣各級之間是一種串行模式。在圖3中,當(dāng)編碼第1個I(0)時,只要P(3)已經(jīng)獲得所需要的參考數(shù)據(jù)時它就能開始并行地進(jìn)行編碼,同理B(1),B(2)和P(6)也不需要等待前面兩幀編完就可以開始并行編碼。但這種方式造成了參考圖像之間存在依賴性,從而導(dǎo)致編碼并行度的下降,為了提高編碼速度,往往會采用加大并行幀數(shù)的方式,這樣會導(dǎo)致比特數(shù)的分配不準(zhǔn)。
圖3 具有參考依賴性的幀間并行編碼示意圖
對于傳統(tǒng)的視頻編碼框架,主要包括兩條編碼路徑:前向路徑和重構(gòu)路徑。原始圖像nF通過前向路徑:預(yù)測(幀內(nèi)或幀間)、整數(shù)變換、量化和熵編碼獲得編碼碼流,而重構(gòu)路徑:反量化、反變換、運動補償來獲得重建圖像,用于預(yù)測編碼的參考幀。這樣由前向路徑和重構(gòu)路徑構(gòu)成了整個編碼反饋環(huán)。由于這個編碼反饋環(huán)的存在,很難在這種結(jié)構(gòu)下實現(xiàn)編碼的并行性。因此我們需要改變傳統(tǒng)的編碼框架,設(shè)計一種新的并行編碼結(jié)構(gòu)。
在實際的視頻編碼器中一般都會存在一定的時間延遲,具體延遲時間根據(jù)實際的應(yīng)用情況而定?;谶@個特點,本文提出一種新的并行視頻編碼框架,充分利用這個延時特性,改變了傳統(tǒng)的視頻編碼框架,充分讓編碼模塊并行工作,設(shè)計了如圖 4所示的結(jié)構(gòu)。
圖4 并行編碼模塊框圖
該框架主要包括3個主要模塊,分別為預(yù)處理模塊、運動估計模塊、以及編碼模塊。雖然3個模塊串行地對編碼序列進(jìn)行相應(yīng)處理,但各模塊之間有一定的幀數(shù)量延遲時間,因此各個模塊就可以獨立并行工作:當(dāng)?shù)?個模塊進(jìn)行了M幀數(shù)據(jù)的處理后,第2個模塊便開始運行;當(dāng)?shù)?個模塊對數(shù)據(jù)進(jìn)行了N幀處理后,第3個模塊就開始進(jìn)行編碼處理。
整個并行編碼系統(tǒng)完整的結(jié)構(gòu)框圖如圖 5所示。相比傳統(tǒng)的視頻編碼結(jié)構(gòu),新的框架改變了反饋回路,主要添加了預(yù)處理模塊和并行整像素運動估計模塊,在并行編碼模塊中,主要用亞像素運動估計代替原來的運動估計。圖中為進(jìn)行并行預(yù)處理后的原始圖像,MV'為經(jīng)過整像素運動估計后的運動矢量,MV為經(jīng)過亞像素運動估計后的最終運動矢量。
(1)并行預(yù)處理 圖5中的并行預(yù)處理模塊中首先對原始視頻圖像序列進(jìn)行去噪濾波,平滑濾波以及RGB到Y(jié)UV顏色空間轉(zhuǎn)換等預(yù)處理,由于預(yù)處理在空間和時間上都基于原始幀進(jìn)行,因此不存在相互之間的依賴性,可以并行進(jìn)行處理。另外在這個模塊中,最重要的工作是通過相關(guān)性參數(shù)的計算,來對序列進(jìn)行場景檢測和幀類型的判斷,通過并行濾波以及并行場景檢測和幀類型判斷,快速地為后續(xù)運動估計模塊和并行編碼模塊提供所需的相關(guān)數(shù)據(jù)信息。
(2)并行運動估計 由于在實際的視頻編碼系統(tǒng)中,除去視頻數(shù)據(jù)的輸入輸出,存儲設(shè)備的初始化及讀寫時間以及硬件平臺的準(zhǔn)備時間,單純在編碼模塊中運動估計部分往往需要花費最大量的時間。而在運動估計中,整像素運動估計在多參考幀模式下占據(jù)最大的計算量和計算時間,因此,整像素的并行化運動估計是解決問題的關(guān)鍵。然而并行化運動估計需要滿足下面條件:(1)參考幀之間沒有相關(guān)性;(2)可以同時獲得運動估計參考幀和被估計幀;(3)必須已經(jīng)確定好被估計幀和參考幀之間的參考關(guān)系。
圖5 并行編碼結(jié)構(gòu)框圖
如 3.1節(jié)中所述,由于傳統(tǒng)編碼框架中重建幀編碼回路的設(shè)計,很難在傳統(tǒng)的編碼結(jié)構(gòu)中進(jìn)行并行化運動估計。針對上述問題,如圖5所示,本文采用將原始圖像序列作為參考幀的方法,將消耗最大編碼時間的運動估計部分獨立分開,進(jìn)行并行化運動估計。由于在并行預(yù)處理模塊中原始幀數(shù)據(jù)也已經(jīng)被緩存,且已經(jīng)獲得了所有圖像的幀類型參數(shù)(I, P, B幀類型),這里只需要根據(jù)幀類型參數(shù)進(jìn)行原始參考幀選擇,因此滿足并行化運動估計的所需條件,多幀可以同時并行進(jìn)行整像素運動矢量搜索,從而大大提高了編碼并行度。
將原始圖像序列作為參考幀的方法首次在MPEG-2的開源編碼器TM5中得到使用,旨在提高運動估計的準(zhǔn)確度,因此這種方法能夠保證運動估計的正確性。在文獻(xiàn)[8]中提出了將編碼和運動估計并行處理,也采用原始圖像作為參考幀來解決運動估計對參考幀的依賴性,但是它只能保證編碼反饋環(huán)內(nèi)的運動估計的獨立性,無法實現(xiàn)多幀間運動估計的并行性。
本文提出的編碼框架,利用編碼延遲能夠緩沖幀的特點,同時充分利用預(yù)處理模塊獲得的幀類型參數(shù),使運動估計模塊對每幀數(shù)據(jù)獨立地并行化運動估計,經(jīng)過運動估計后的視頻幀才能進(jìn)入編碼模塊。這種并行運動估計極大地提高了整個編碼框架的并行性,也極大地提高了并行硬件計算資源的利用率。并行運動估計參考結(jié)構(gòu)如圖6所示,假設(shè)輸入序列為 IBBPBBP,箭頭所指方向即為當(dāng)前幀進(jìn)行運動估計的可選參考幀,根據(jù)上面的分析,如果硬件計算資源足夠,圖6中的所有幀可以同時進(jìn)行并行運動估計。
(3)并行幀內(nèi)、幀間編碼 通過之前兩個模塊已經(jīng)獲得了幀類型參數(shù)以及運動矢量,使得在編碼模塊中的計算量大大減小,這里采用隔行編碼的方式,每個場作為一個片,各個場之間獨立進(jìn)行編碼,并且采用2.3節(jié)中所示的幀間編碼方式,如圖5所示,首先進(jìn)行宏塊模式選擇,并將第2個模塊中獲得的整像素運動矢量 'MV作為亞像素搜索的起始點,進(jìn)行亞像素搜索得到最終的運動矢量 MV,然后經(jīng)過運動補償,對殘差圖像進(jìn)行整數(shù)變換、量化以及熵編碼來得到AVS碼流。由于在這個模塊中沒有進(jìn)行整像素運動估計,因此計算速度提高很多,也提高了幀間預(yù)測的效率,從而能夠減小并行幀數(shù),克服了2.3節(jié)中所述方法的缺點。
AVS+視頻編碼標(biāo)準(zhǔn)不支持WPP和Tiles并行化技術(shù),只有片編碼可用于并行化計算。AVS+標(biāo)準(zhǔn)主要應(yīng)用于未來高清及 3D的網(wǎng)絡(luò)視頻和數(shù)字電視,適用于處理大分辨率下的單向視頻快速編碼,故而允許一定的延時。且 AVS+支持隔行編碼。根據(jù) AVS+標(biāo)準(zhǔn)的上述特點,我們將上述并行編碼框架應(yīng)用到 AVS+視頻編碼標(biāo)準(zhǔn)的實時編碼器中,得到了基于 AVS+實時編碼的并行視頻編碼算法。該算法適用于 3D及高清的數(shù)字電視和網(wǎng)絡(luò)電視,對于大分辨率單向視頻編碼有很大優(yōu)勢,而對于雙向視頻通信,若同樣處理高清視頻,考慮其緩存時延和信道時延,再加上編碼延遲時間,難以滿足實際雙向視頻通信的最低延遲要求。算法的具體步驟如下:
步驟1 建立L個并行預(yù)處理線程。由于預(yù)處理是在原始圖像上進(jìn)行,并且算法復(fù)雜度不高,因此預(yù)處理線程之間沒有相關(guān)性,線程數(shù)L一般不要超過2,每個線程對應(yīng)一幀原始圖像。
步驟 2 建立 2×M 個整像素并行運動估計線程。由于經(jīng)過步驟1后,每幀的編碼幀類型已經(jīng)確定,因此根據(jù)各自對應(yīng)的原始圖像參考幀進(jìn)行并行運動估計。AVS+視頻編碼標(biāo)準(zhǔn)主要應(yīng)用于隔行圖像,在運動估計中,每幀圖像分成2個場,每個場的運動估計獨立作為一個線程工作。
步驟3 建立2×N個編碼線程。每個編碼線程根據(jù)步驟 2獲得的整像素運動矢量進(jìn)行亞像素搜索,這樣有效降低了編碼的復(fù)雜度。每幀間編碼采用 2.3節(jié)介紹的參考幀之間相互依賴的并行編碼方式;考慮到 AVS+視頻編碼標(biāo)準(zhǔn)主要應(yīng)用于隔行圖像,因此每幀內(nèi)分為2場,每場作為一個片,各個場之間獨立進(jìn)行編碼,這樣既提高了編碼的并行度,也沒有編碼效率的損失和條帶效應(yīng)的出現(xiàn)。
步驟4 并行編碼線程的碼率控制。由于步驟2進(jìn)行運動估計之后,不僅獲得了編碼圖像的運動矢量,而且也得到了編碼圖像的絕對差值和(SAD),這樣獲得的SAD可以作為編碼圖像的復(fù)雜度參考,為編碼圖像的比特分配提供了依據(jù)。
步驟 5 編碼延遲控制。從上面的編碼步驟可以推導(dǎo)出編碼器的編碼延遲為L+M+N幀的時間,其值越小,說明編碼延遲越小。L和M的選取主要取決于硬件資源條件,其值越大占用的硬件資源越多,對整個編碼系統(tǒng)的并行度影響越大。而N的取值在占用硬件資源的同時也影響系統(tǒng)的編碼并行度,一般來說,N越大編碼并行度越大,但N達(dá)到一定數(shù)量后由于重建幀之間的相關(guān)性導(dǎo)致并行度不變,但N越大將會給碼率控制造成更大的誤差。因此,L, M, N的分配原則是,在硬件資源CPU核心足夠的情況下L和M越大越好,而N的取值要綜合考慮編碼速度和碼率控制誤差,在不影響編碼速度的前提下取較小值。
根據(jù)上面的算法步驟,以及編碼器硬件資源的可得性,可以確定編碼器延遲要求以及線程處理瓶頸,合理地分配L, M, N。
為了驗證所提出的并行編碼框架性能,本文使用一臺Dell服務(wù)器作為多核測試平臺,CPU為Intel Xeon, 2×12核,單核主頻3.06 GHz,測試序列采用廣電總局廣播科學(xué)院規(guī)劃院的 1920×1080高清序列:parterre, dial, basketball, volleyball, leaf,birdcage,以及一個將上述6個序列拼接而成的高清測試序列。編碼順序為IPBB, GOP是30,搜索范圍±32,測試軟件為根據(jù) AVS+視頻編碼標(biāo)準(zhǔn)[15]開發(fā)的 AVS+高清實時編碼器,該編碼器既支持傳統(tǒng)的 AVS+視頻編碼方式(串行編碼),也支持本文提出的基于 AVS+的并行視頻編碼算法(并行編碼)。實驗中分配預(yù)處理線程L為1,并行運動估計線程M為4, N為幀間并行幀數(shù),其它參數(shù)名稱的意義描述如表1所示。
表1 參數(shù)名稱的意義描述
當(dāng)計算機利用多核處理器進(jìn)行并行運算時,CPU利用率是體現(xiàn)算法效率的一個重要特性。若程序運行時能充分調(diào)動各個CPU核同時工作,必然會大大提高計算速率。
圖 7(a)為采用串行編碼對測試序列進(jìn)行編碼時的CPU利用率,僅有第11個線程在進(jìn)行工作,說明串行編碼無法充分利用 CPU核。而圖 7(b)中采用本文的算法進(jìn)行并行編碼,運動估計設(shè)置為ME2,使用亞像素搜索 3,且設(shè)置幀間編碼幀數(shù)為16,可以看到每個CPU核都參與了計算,且利用率都較高。
加速比是衡量并行計算算法性能的一個重要指標(biāo),反映了并行優(yōu)化后和優(yōu)化前程序運算速度之間的關(guān)系。本文的編碼算法中,加速比定義為并行算法優(yōu)化后編碼幀率和優(yōu)化前的編碼幀率的比:式中SU為加速比,其值越大,算法的并行性越好,編碼速度也越快。
圖7 CPU利用率比較
表2所示為測試1500幀拼接高清序列在不同的運動估計參數(shù)ME1和ME2以及亞像素搜索1, 2, 3下實現(xiàn)的加速比,fps表示編碼幀率。可以看出,采用本文并行算法能夠獲得足夠的平均加速比,完全滿足實際需求。
表2 不同運動估計復(fù)雜度下的加速比
如上所述,并行幀間預(yù)測編碼中的并行幀數(shù)是一個決定編碼并行度的關(guān)鍵問題。若幀間并行編碼幀數(shù)N太少,并行度就達(dá)不到預(yù)期的目標(biāo),從而影響編碼速率;而并行幀數(shù)太大,會增大碼率分配的誤差。因此確定適當(dāng)?shù)膸g并行編碼幀數(shù)是一個關(guān)鍵問題。
表3給出了在不同幀間并行幀數(shù)下進(jìn)行并行編碼得出的實驗結(jié)果。設(shè)置亞像素搜索參數(shù)為 3。由于并行幀數(shù)越大,越有利于提高解碼幀主觀質(zhì)量,但同時需要考慮幀率是否也能獲得相應(yīng)增加。由表3可見,幀間并行幀數(shù)為8時,編碼速率已經(jīng)完全滿足實際編碼器的要求,而此時的編碼延遲為13幀(L=1, M=4, N=8)。而幀間并行幀數(shù)越少,對編碼器碼率控制越有利。另外,由表3可見,當(dāng)并行幀數(shù)從4開始累加后,幀率有大幅度提高,但當(dāng)其達(dá)到12以后,幀率開始出現(xiàn)波動且沒有繼續(xù)增長,因此,我們可以在滿足編碼速度的前提下盡量減少幀間并行幀數(shù),這為更好地實現(xiàn)碼率控制提供了有利的條件。
表3 幀間并行幀數(shù)對編碼速率的影響
我們對6個高清序列進(jìn)行測試后,繪制不同比特率下,在并行和串行條件下編碼的率失真曲線圖,如圖8所示,兩條不同黑白的曲線分別是串行編碼和并行編碼的結(jié)果。對于重建幀的質(zhì)量主要通過PSNR在不同比特率下的率失真曲線來比較。通過計算得到6組序列的平均PSNR損失值為0.14 dB,最小損失為0 dB,最大損失在0.23 dB以內(nèi)。
采用原始幀作為運動估計的參考幀雖然可以大大提高編碼并行度,但對運動估計的準(zhǔn)確性還有一定影響,因為在運動補償?shù)臅r候使用了解碼回路的重建幀。對6個序列進(jìn)行測試后,圖8給出了2個PSNR損失最大序列的率失真曲線(我們需要考慮在最壞環(huán)境下的編碼情況,其它4個序列效果較好),兩條曲線分別是在不同碼率下串行編碼和并行編碼的結(jié)果??梢钥闯觯词乖谧畈畹臈l件下也僅有0.2 dB左右的損失,故采用原始幀作為運動估計參考圖像的方式對此并行編碼框架下的編碼圖像結(jié)果的影響極小,是切實可行的,因此在解碼圖像質(zhì)量方面,本文提出的并行編碼算法能和一般串行編碼一樣獲得比較好的效果,而并行編碼在速率上的提升很明顯,這也進(jìn)一步驗證了本文算法性能好且損耗低的優(yōu)勢。
圖8 不同序列的率失真曲線
本文改變了傳統(tǒng)視頻編碼框架,利用編碼器延遲的特點,設(shè)計了一種新的并行編碼框架,將這種并行編碼框架應(yīng)用于 AVS+標(biāo)準(zhǔn)高清視頻編碼標(biāo)準(zhǔn),提出了一種基于 AVS+實時視頻編碼的并行視頻編碼算法。實驗結(jié)果表明,該算法能充分發(fā)揮多核處理器的運算能力,在編碼性能損失極小,編碼延遲可控(在0.5 s以上)的條件下,極大地提高了視頻的編碼速度。
[1] 張曉亮. AVS地面數(shù)字電視產(chǎn)業(yè)化推廣和應(yīng)用[J]. 電視技術(shù),2012, 36(22): 3-4.Zhang X L. The promotion and application of terrestrial digital TV industrialization[J]. Video Engineering, 2012,36(22): 3-4.
[2] 董文輝, 鄧向冬. AVS+視頻壓縮技術(shù)及應(yīng)用[J]. 廣播與電視技術(shù), 2012, 12(s1): 41-43.Dong W H and Deng X D. Techniques and applications of AVS+video compressing[J]. Radio & TV Broadcast Engineering, 2012, 12(s1): 41-43.
[3] Chen Da and Singh D. Fractal video compression in OpenCL:an evaluation of CPUs, GPUs, and FPGAs AS Acceleration platforms[C]. 18th Asia and South Pacific Design Automation Conference(ASP-DAC), Yokohama, 2013:297-304.
[4] Ge S, Tian X, and Chen Y K. Efficient multithreading implementation of H.264 encoder on Intel hyper-threading architectures[C]. IEEE Proceedings of the 2003 Joint Conference of the Fourth International Conference, Singapore,2003: 469-473.
[5] Tian X, Chen Y K, Girkar M, et al.. Exploring the use of hyper-threading technology for multimedia applications with Intel OpenMP compiler[C]. Proceedings of the Intel Parallel& Distributed Processing Symposium, Nice, 2003: 36-43.
[6] Chen Y K, Tian X, Ge S, et al.. Towards efficient multi-level threading of H.264 encoder on Intel hyper-threading architectures[C]. Proceedings of the 18th Intel Parallel and Distributed Processing Symposium, Santa Fe, 2004: 63-72.
[7] Ye Jian-hong and Liu Ji-lin. Fast parallel implementation of H.264/AVC transform exploiting SIMD instructions[C].Intelligent Signal Processing and Communication Systems,Xi’an, 2007: 870-873.
[8] 張超. 基于TILE64的H.264多線程并行編碼[D]. [碩士論文],西安電子科技大學(xué), 2011.Zhang C. Multithreaded parallel programming of H.264 on TILE 64[D]. [Master dissertation], Xidian University, 2011.
[9] Alvarez-Mesa M, Chi C C, and Juurlink B. Parallel video decoding in the emerging HEVC standard[C]. IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP), Kyoto, 2012: 1545-1548.
[10] Chi Ching-chi, Alvarez-Mesa M, and Juurlink B. Parallel scalability and efficiency of HEVC parallelization approaches[J]. IEEE Transactions on Circuit and System for Video Technology, 2012, 22(12): 1827-1838.
[11] Fuldseth, A, Horowitz M, and Xu Shi-li. Tiles for managing computational complexity of video encoding and decoding[C].Picture Coding Symposium (PCS), Krakow, 2012: 382-392.
[12] 許昌滿, 李國平, 王國中. AVS 編碼器Slice 并行處理算法研究與實現(xiàn)[J]. 中國圖象圖形學(xué)報, 2009, 14(6): 1108-1113.Xu C M, Li G P, and Wang G Z. Study and implementation of AVS encoding algorithm based on slice parallel[J]. Journal of Image and Graphics, 2009, 14(6): 1108-1113.
[13] 寧華, 梅錚, 李錦濤. 基于slice的H.264并行視頻編碼算法[J].計算機工程, 2005, 31(4): 181-182, 211.Ning H, Mei Z, and Li J T. Slice-based parallel algorithm of H.264 video encoder[J]. Computer Engineering, 2005, 31(4):181-182, 211.
[14] 于俊清, 李江, 魏海濤. 基于同構(gòu)多核處理器的 H264多粒度并行編碼器[J]. 計算機學(xué)報, 2009, 32(6): 1100-1109.Yu J Q, Li J, and Wei H T. Multi-Grain parallel H.264 encoder for homogeneous multi-core architecture[J]. Chinese Journal of Computers, 2009, 32(6): 1100-1109.
[15] AVS Working Group. GY/T257.1-2012, Radio and television-Advanced coding and decoding of audio and video-Part 1:Video[S]. 2012.
[16] Zhao W Q and Xu S. Research and optimization of UMHexagons algorithm based on H.264[C]. 2012 Fourth International Conference on Multimedia Information Networking and Security (MINES), Nanjing, 2012: 600-603.