999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于X264多線程并行編碼研究

2011-08-09 05:04:16魏妃妃梁久禎柴志雷
電視技術(shù) 2011年19期
關(guān)鍵詞:實(shí)驗(yàn)

魏妃妃,梁久禎,柴志雷

(江南大學(xué)物聯(lián)網(wǎng)工程學(xué)院,江蘇 無(wú)錫 214122)

責(zé)任編輯:史麗麗

0 引言

隨著網(wǎng)絡(luò)電視、視頻會(huì)議和高清視頻的不斷發(fā)展,人們對(duì)視頻編解碼的速度和其圖像的清晰度提出了越來(lái)越高的要求,H.264/AVC作為最新的編碼標(biāo)準(zhǔn),代表著向低碼率高質(zhì)量發(fā)展的趨勢(shì)。雖然H.264/AVC比以往的編碼標(biāo)準(zhǔn)節(jié)省了碼率,但因?yàn)槠湫略龅木幋a特性,使其增加了編碼復(fù)雜度,使用單處理器的編碼速度已經(jīng)不能滿足視頻的實(shí)時(shí)傳輸和大規(guī)模的共享要求,因此研究一種高效的視頻并行編碼策略是目前的重要課題。

作為一種開(kāi)放的H.264/AVC編碼器,X264比較注重實(shí)用性。它在保證了編碼效率未明顯降低的情況下,舍棄了如多參考幀和幀間預(yù)測(cè)中不必要的塊模式等這些具有極高復(fù)雜性的技術(shù);另外X264實(shí)現(xiàn)了指令級(jí)并行,在此基礎(chǔ)上,人們又提出了線程級(jí)并行方法,其中包括GOP級(jí)、幀級(jí)、片級(jí)和宏塊級(jí)并行策略[1-2]。但是其研究方法都不夠充分,絕大多數(shù)還是針對(duì)單一粒度進(jìn)行并行實(shí)施。本文主要研究通過(guò)多線程來(lái)實(shí)現(xiàn)片級(jí)和幀間宏塊級(jí)的并行。

本文介紹片級(jí)多線程并行編碼算法和幀間宏塊級(jí)并行編碼算法及其實(shí)現(xiàn)過(guò)程,片級(jí)多線程并行編碼算法只對(duì)一幀圖像進(jìn)行編碼,在系統(tǒng)中只需保存與該幀圖像編碼相關(guān)的一些參考幀圖像數(shù)據(jù)便可,所以對(duì)內(nèi)存需要量小[3],同時(shí)通過(guò)實(shí)驗(yàn)表明,在編碼碼率相對(duì)恒定的條件下,幀間宏塊級(jí)多線程并行編碼算法比片級(jí)并行編碼具有更高的編碼速度。本文提出可以根據(jù)兩種算法的特點(diǎn),運(yùn)用POSIX線程庫(kù),進(jìn)行多粒度并行編碼算法研究,達(dá)到視頻更好的實(shí)時(shí)編碼的要求。

1 相關(guān)知識(shí)介紹

1.1 POSIX多線程

IEEE的開(kāi)放系統(tǒng)接口標(biāo)準(zhǔn)POSIX線程,通常稱為Pthreads標(biāo)準(zhǔn)。視頻編碼多線程應(yīng)用程序可以在串行計(jì)算機(jī)上開(kāi)發(fā),并且不作任何改變地在并行計(jì)算機(jī)上運(yùn)行,同時(shí)多線程化的視頻編碼程序要比使用別的并行程序容易編寫得多,另外利用多線程能躲避延遲時(shí)間,當(dāng)一個(gè)線程在等待通信操作時(shí),其他的線程可以利用CPU,這樣可以屏蔽相應(yīng)的開(kāi)銷,因此本文使用多線程進(jìn)行視頻編碼的并行處理[4]。

1.2 片

在視頻編碼的過(guò)程中為了限制誤碼的擴(kuò)散和傳輸,一個(gè)圖像幀可以被編碼成一個(gè)或更多個(gè)片,編碼的各個(gè)片之間是相互獨(dú)立的,在同一幀中每個(gè)片的編碼不依靠其他片作為參考,一個(gè)獨(dú)立幀的搜索范圍也不能超過(guò)片的邊界[5-6]。

1.3 幀間宏塊的關(guān)系

為了提高視頻編碼的性能,H.264/AVC需要以編碼幀的重構(gòu)圖像作為參考來(lái)處理時(shí)間冗余,即幀間預(yù)測(cè)模式需要先前已經(jīng)編碼過(guò)的參考幀。當(dāng)前幀的當(dāng)前宏塊能夠編碼之前,至少其參考幀中的對(duì)應(yīng)位置和它附近的8個(gè)相鄰宏塊是可用的[7],如圖1所示,因此實(shí)現(xiàn)幀間宏塊級(jí)并行必須要考慮幀間各個(gè)宏塊之間的依賴性。

圖1 幀間預(yù)測(cè)模式的數(shù)據(jù)依賴關(guān)系

1.4 并行編碼的加速比

加速比是度量采用多線程并行處理比采用單個(gè)線程處理的加速倍數(shù),用來(lái)衡量并行算法性能的重要指標(biāo),著重于并行處理相對(duì)于串行處理的優(yōu)化效果。在H.264/AVC中加速比主要用來(lái)表征采用并行算法后編碼幀率前后的變化情況。

加速比越大,算法的編碼速度越快,并行性能越好,視頻編解碼的實(shí)時(shí)性越強(qiáng)。

2 X264片級(jí)并行編碼算法

2.1 片級(jí)并行

根據(jù)片與片之間相互獨(dú)立的特點(diǎn),同一幀內(nèi)的各個(gè)片可以并行編碼。每一幀分成固定數(shù)量的片,為每個(gè)片分配一個(gè)線程進(jìn)行編碼[8]。在進(jìn)行編碼之前需要對(duì)每個(gè)線程進(jìn)行同步,其中主要操作就是參考圖像幀需要同時(shí)進(jìn)行更新。片級(jí)并行不用考慮前后幀之間的參考問(wèn)題,每一幀的分片數(shù)可以人為設(shè)定,因此使并行編碼具有更大的自由度。片級(jí)的并行程度理論上取決于幀的分片數(shù),分片數(shù)越大,獲得的并行加速比越大,但由于在編碼過(guò)程中要加入片頭等信息,這樣就增加了系統(tǒng)開(kāi)銷,因而在采取片級(jí)并行時(shí),不能無(wú)限制地提高分片數(shù)目來(lái)獲取加速比,需要對(duì)圖像質(zhì)量、視頻壓縮率和并行效率三者做權(quán)衡,來(lái)決定每幀采用的分片數(shù)。假如幀I,P和B的排列順序?yàn)镮BBPBBP,其N個(gè)線程的Slice級(jí)并行方法如圖2所示。

圖2 Slice并行方法示意圖

2.2 算法實(shí)現(xiàn)描述

片級(jí)多線程并行編碼算法實(shí)現(xiàn)過(guò)程如下:

步1:主線程依次讀入幀,對(duì)每一幀按照設(shè)定的thread來(lái)進(jìn)行slice劃分,通過(guò)主線程來(lái)創(chuàng)建各個(gè)片的線程,每個(gè)片獨(dú)立進(jìn)行編碼。

步2:當(dāng)創(chuàng)建的片級(jí)線程數(shù)目達(dá)到設(shè)定的線程數(shù)時(shí),主線程將處于堵塞狀態(tài),幾個(gè)slice并行編碼,各個(gè)片之間不相互參考,僅參考已經(jīng)編碼完的圖像。

步3:當(dāng)所有片級(jí)線程都編碼完成時(shí)返回到主線程,主線程繼續(xù)讀入下一幀,如果所有的幀都編碼完成則結(jié)束,否則轉(zhuǎn)入步2。

3 幀間宏塊級(jí)的X264并行編碼算法

3.1 幀間宏塊級(jí)并行

幀間宏塊級(jí)并行方法如圖3所示,當(dāng)Img0中的第一行已經(jīng)被處理完的時(shí)候,它還不能被立即編碼。這是因?yàn)檫\(yùn)動(dòng)估計(jì)的搜索范圍要大于兩個(gè)宏塊大小。為了準(zhǔn)確地預(yù)測(cè)幀的運(yùn)動(dòng)區(qū)域,必須等去塊濾波和四分之一像素插值之后的編碼宏塊被重構(gòu)。如果運(yùn)動(dòng)估計(jì)的搜索范圍是宏塊的兩倍大,那么直到Img0的第三行被編碼完成后Img1左上角的第一個(gè)宏塊才能被編碼。在圖3中,Img1中當(dāng)前正在編碼的宏塊可以和Img0中帶有相同顏色的宏塊同時(shí)進(jìn)行編碼。此后,只要判斷宏塊間不存在數(shù)據(jù)依賴性,Img1中的宏塊就可以和Img0的一些宏塊同時(shí)進(jìn)行編碼。通過(guò)增加幀間并行,在X264編碼器中提供了更多的并行性[9]。此算法的并行機(jī)理在于:當(dāng)前幀要編碼的宏塊跟其余幀的其他宏塊同時(shí)編碼的條件是必須等當(dāng)前幀的宏塊要參考的其余幀的宏塊編碼完成。

3.2 算法實(shí)現(xiàn)描述

幀間宏塊級(jí)多線程并行算法實(shí)現(xiàn)過(guò)程如下:

步1:主線程依次讀入幀,然后通過(guò)主線程來(lái)創(chuàng)建輔助線程,先創(chuàng)建的線程進(jìn)行編碼,隨后的幀只有當(dāng)其參考幀中所依賴的宏塊編碼完成后才能開(kāi)始編碼。

圖3 幀間宏塊級(jí)并行方法示意圖

步2:當(dāng)創(chuàng)建的輔助線程達(dá)到設(shè)定的線程數(shù)時(shí),主線程將處于堵塞狀態(tài),輔助線程并行的編碼各幀中沒(méi)有相互依賴關(guān)系的宏塊。

步3:當(dāng)最先被創(chuàng)建輔助線程的幀編碼完成時(shí)將返回到主線程,主線程繼續(xù)讀入新幀(直到?jīng)]有新幀轉(zhuǎn)步4)并為其創(chuàng)建新的線程,以保證用于并行編碼的線程達(dá)到設(shè)定的線程數(shù),然后重復(fù)步2。

步4:當(dāng)所有的幀編碼完成之后,輔助線程釋放,主線程完成后續(xù)工作并退出。

4 兩種算法實(shí)驗(yàn)結(jié)果與分析

算法使用VS2008開(kāi)發(fā)平臺(tái),以X264為研究對(duì)象,實(shí)驗(yàn)用C語(yǔ)言編寫。實(shí)驗(yàn)設(shè)備是一臺(tái)雙核PC機(jī):操作系統(tǒng)為Microsoft Windows XP Professional(SP3),CPU規(guī)格為Intel Core 2 Duo CPU T5800(2.00 GHz),內(nèi)存為 2.00 Gbyte,硬盤為 160 Gbyte。

實(shí)驗(yàn)采用主要編碼檔次,其主要的編碼參數(shù)設(shè)置為:B幀為2幀;參考圖像為1幀;環(huán)路濾波可用;CABAC熵編碼算法可用;運(yùn)動(dòng)估計(jì)的搜索范圍為正負(fù)16個(gè)像素點(diǎn)。

實(shí)驗(yàn)選取了運(yùn)動(dòng)緩慢的Akiyo和運(yùn)動(dòng)劇烈的Coastguard兩個(gè)視頻序列,對(duì)片級(jí)并行編碼算法和幀間宏塊級(jí)并行編碼算法分別在QCIF和CIF兩種不同的格式下進(jìn)行測(cè)試,測(cè)試序列均為300幀,設(shè)置keyint_max為250。

表1是片級(jí)多線程并行和幀間宏塊級(jí)多線程并行兩種方法在不同線程數(shù)下編碼幀率(單位為f/s)的測(cè)試結(jié)果。

表1 兩種并行方法在不同線程數(shù)下的幀率

圖4和圖5分別是視頻序列Akiyo和Coastguard在兩種并行算法實(shí)驗(yàn)測(cè)試下,不同線程數(shù)目對(duì)應(yīng)的加速比的關(guān)系圖。

圖4 Akiyo兩種算法下加速比和線程數(shù)目關(guān)系

圖5 Coastguard兩種算法下加速比和線程數(shù)目關(guān)系

由測(cè)試結(jié)果可以看出,在設(shè)定的實(shí)驗(yàn)條件下,幀間宏塊級(jí)多線程并行編碼算法比片級(jí)多線程并行編碼算法具有更高的加速比。另外,對(duì)于片級(jí)并行算法,并不是設(shè)定的線程數(shù)越多,得到的加速比就越高,尤其對(duì)于運(yùn)動(dòng)緩慢的視頻序列,而當(dāng)線程數(shù)為2時(shí),加速比達(dá)到了最大。

表2是片級(jí)并行和幀間宏塊級(jí)并行兩種方法在不同線程數(shù)下編碼碼率(單位為kbit/s)的測(cè)試結(jié)果。

表2 兩種并行方法在不同線程數(shù)下的編碼碼率

表3是片級(jí)并行和幀間宏塊級(jí)并行兩種方法在不同線程數(shù)下峰值信噪比(單位為dB)的測(cè)試結(jié)果。

表3 兩種并行方法在不同線程數(shù)下的峰值信噪比

由表2的測(cè)試結(jié)果可知,幀間宏塊級(jí)多線程并行編碼算法得出的編碼碼率相對(duì)恒定,基本保持不變;片級(jí)多線程并行編碼算法的編碼碼率隨著線程數(shù)目的增大先增加后保持不變。由表3可以看出,兩種算法下的峰值信噪比變化不大,片級(jí)多線程并行編碼算法的相對(duì)偏低,因片與片之間的獨(dú)立性破壞了片與片邊界處數(shù)據(jù)的相關(guān)性。

通過(guò)上面研究和實(shí)驗(yàn)可以得出,在編碼碼率相對(duì)恒定的條件下,幀間宏塊級(jí)多線程并行編碼算法比片級(jí)并行編碼具有更高的編碼速度,同時(shí)因?yàn)槠?jí)并行編碼方法容易產(chǎn)生條帶效應(yīng),所以要考慮圖像質(zhì)量,但是片級(jí)并行編碼因只對(duì)一幀圖像進(jìn)行編碼,在系統(tǒng)中只需保存與該幀圖像編碼相關(guān)的一些參考幀圖像數(shù)據(jù)便可,對(duì)內(nèi)存需求要少,系統(tǒng)開(kāi)銷要少,所以在進(jìn)行X264并行編碼的過(guò)程中,需要對(duì)圖像質(zhì)量、內(nèi)存利用率和并行效率三者做權(quán)衡來(lái)折中考慮這兩種算法,同時(shí)也可折中這兩種算法的優(yōu)缺點(diǎn)來(lái)研究視頻編碼的并行處理。

5 結(jié)束語(yǔ)

本文分別研究了片級(jí)多線程并行編碼算法和幀間宏塊級(jí)并行編碼算法,通過(guò)實(shí)驗(yàn)得出了這兩種算法的優(yōu)劣勢(shì)。對(duì)比實(shí)驗(yàn)結(jié)果表明,在編碼碼率相對(duì)恒定的條件下,幀間宏塊級(jí)多線程并行編碼算法比片級(jí)并行編碼具有更高的編碼速度,但因其需要對(duì)多幀圖像進(jìn)行并行編碼,在系統(tǒng)中需保存與多幀圖像編碼有關(guān)的參考幀圖像數(shù)據(jù),所以占用大量的內(nèi)存,于是提出可以結(jié)合兩種算法的特點(diǎn),將兩種算法結(jié)合進(jìn)行多線程并行編碼算法研究。另外,因?qū)嶒?yàn)條件的限制,沒(méi)有在更多核上進(jìn)行這兩種算法的比較,所以實(shí)驗(yàn)結(jié)果不夠全面,未來(lái)的研究重點(diǎn)是實(shí)現(xiàn)X264最大粒度的并行。

[1]蔣興昌,周軍,羅傳飛.H.264并行編碼算法的研究[J].電視技術(shù),2008,32(2):33 - 35.

[2]MEENDERINCK C,AZEVEDO A,ALVAREZ M,et al.Parallel Scalability of H.264[C]//Proceedings of FirstWorkshop on programmability issues for multi-core computers.Goteborg:[s.n.],2008:1 -164.

[3]許昌滿,李國(guó)平,王國(guó)中.AVS編碼器Slice并行編碼算法研究與實(shí)現(xiàn)[J].中國(guó)圖象圖形學(xué)報(bào),2009,14(6):1108 -1113.

[4]BUTENHOF D R.Programming with POSIX threads[M].[S.l.]:Addison -Wesley,1997.

[5]WIEGAND T,SULLIVAN G J,BJONTEGAARD G,et all.Overview of the H.264/AVC video coding standard[J].IEEE Transactions on Circuits and Systems for Video Technology,2003,13(7):560 -576.

[6]SULLIVAN G,TOPIWALA P,LUTHRA A.The H.264/AVC advanced video coding standard:Overview and introduction to the fldelity range extension[C]//Proceedings of SPIE conference on applications of digital image processing XXVII.[S.l.]:SPIE,2004:454 -474.

[7]ZHAO Z,LIANG P.Data partition for wavefront parallelization of H.264 video encoder[J].IEEE International Symposium on Circuits and Systems,2006(5):21 -24.

[8]MEENDERINCK C,AZEVEDO A,JUURLINK B,et al.Parallel scalability of video decoders[J].Journal of Signal Processing Systems,2009,57(2):173-194.

[9]CHEN Y,LI E,ZHOU X,et al.Implementation of H.264 encoder and decoder on personal computers[J].Journal of Visual Communications and Image Representation,2006,17(2):509 -532.

猜你喜歡
實(shí)驗(yàn)
我做了一項(xiàng)小實(shí)驗(yàn)
記住“三個(gè)字”,寫好小實(shí)驗(yàn)
我做了一項(xiàng)小實(shí)驗(yàn)
我做了一項(xiàng)小實(shí)驗(yàn)
記一次有趣的實(shí)驗(yàn)
有趣的實(shí)驗(yàn)
微型實(shí)驗(yàn)里看“燃燒”
做個(gè)怪怪長(zhǎng)實(shí)驗(yàn)
NO與NO2相互轉(zhuǎn)化實(shí)驗(yàn)的改進(jìn)
實(shí)踐十號(hào)上的19項(xiàng)實(shí)驗(yàn)
太空探索(2016年5期)2016-07-12 15:17:55
主站蜘蛛池模板: 欧美性精品不卡在线观看| 秋霞国产在线| 欧美精品高清| 国产丝袜无码一区二区视频| 在线观看免费人成视频色快速| 亚洲区第一页| 亚洲第一在线播放| 亚洲午夜天堂| 欧美午夜视频在线| 亚洲二区视频| 国产精品漂亮美女在线观看| 亚洲成人精品| 久久国产精品国产自线拍| 亚洲乱码在线视频| 91视频99| 黄色在线网| 污视频日本| 亚洲天堂高清| 色偷偷一区二区三区| 在线色国产| 国产精品专区第1页| 蜜桃视频一区二区三区| 国产在线一二三区| 日日噜噜夜夜狠狠视频| 国产精品妖精视频| 久久精品只有这里有| 久久www视频| 国产制服丝袜无码视频| 91视频区| 亚洲三级色| 亚州AV秘 一区二区三区| 欧美无专区| 日韩精品亚洲一区中文字幕| 成色7777精品在线| 欧美日韩免费| 影音先锋亚洲无码| 欧美激情网址| 亚洲成a∧人片在线观看无码| 国产毛片片精品天天看视频| 中文字幕亚洲另类天堂| 国产黄色片在线看| 婷婷综合色| 亚洲中文精品久久久久久不卡| 欧美自慰一级看片免费| 99精品高清在线播放| 日本高清有码人妻| 国产欧美日韩另类| 亚洲AV无码乱码在线观看裸奔| 欧美在线三级| 欧美第二区| 亚洲欧美成人在线视频| 免费a级毛片视频| 香蕉久久国产超碰青草| 国产精品女同一区三区五区| 国产va在线观看| 久久这里只精品热免费99| 日韩毛片免费视频| 白丝美女办公室高潮喷水视频 | 欧美日韩导航| 美女一级免费毛片| 久久性妇女精品免费| 日韩欧美国产中文| 国产91小视频| 欧美午夜性视频| 亚洲二三区| 在线精品视频成人网| 国产女人在线视频| 欧美成人一区午夜福利在线| 九九九精品视频| www.亚洲色图.com| 亚洲欧美另类色图| 日韩高清无码免费| 三级国产在线观看| 国产成人精品男人的天堂| 精品综合久久久久久97超人该| 一本一道波多野结衣一区二区| 尤物亚洲最大AV无码网站| 亚洲高清中文字幕在线看不卡| 国产jizzjizz视频| 青草91视频免费观看| 欧美一级高清视频在线播放| 欧美综合中文字幕久久|