亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

并行解碼方法和并行解碼裝置的制造方法

文檔序號:9828490閱讀:433來源:國知局
并行解碼方法和并行解碼裝置的制造方法
【技術(shù)領(lǐng)域】
[0001 ]本發(fā)明總體地涉及。
【背景技術(shù)】
[0002]傳統(tǒng)的視頻編碼標(biāo)準(zhǔn),從H.261開始,歷經(jīng)MPEG-1,MPEG_2,H.263,MPEG_4,H.264等等,都是編碼器復(fù)雜,解碼器相對簡單;編碼器可以自由定義算法,解碼器算法固定。這樣做的主要原因是解碼器是大眾消費產(chǎn)品,解碼器往往是硬件芯片實現(xiàn),為了便于解碼器能夠接收不同編碼器編出的碼流,因此碼流格式必須標(biāo)準(zhǔn)化、一致化,因此解碼器的解碼流程也就標(biāo)準(zhǔn)化了,幾乎沒有改動或改進(jìn)的余地,這樣也事實上提高了解碼器的量產(chǎn)數(shù)量,降低了解碼器的設(shè)計制造成本。
[0003]但是隨著編解碼標(biāo)準(zhǔn)越來越復(fù)雜,解碼器也變得越來越復(fù)雜,4K分辨率的視頻在2.7GHz的i7處理器上單線程也只能剛好達(dá)到30fps的軟件解碼速度。另一方面,由于硬件解碼研發(fā)周期長,操作系統(tǒng)適配兼容性差,因此在不少實際產(chǎn)品中研發(fā)企業(yè)更偏向于更為靈活的軟件解碼方案,而越來越高的解碼復(fù)雜度對軟件解碼提出了挑戰(zhàn)。
[0004]軟件解碼主要分為三個階段:
[0005]I)熵解碼
[0006]2)反量化+gDCT
[0007]3)預(yù)測或運動補償
[0008]4)SA0、環(huán)路濾波等后處理
[0009]由于解碼器已經(jīng)被視頻標(biāo)準(zhǔn)約束得比較嚴(yán)格,能做的變化和改進(jìn)相對比較少,具體到并行解碼技術(shù)上,傳統(tǒng)的并行方案有如下這幾種:
[0010]I )G0P即幀組級別的并行,比如每16幀一個組,且第I幀為Intra幀,這樣每16幀的解碼做為一個并行單位,用多核或者集群等技術(shù)進(jìn)行并行。這種方案的缺點是I)當(dāng)前最鄰近的幀解碼速度并沒有得到提升,第一個GOP還是很慢;2)如果用戶在點播的時候要拖動、快進(jìn)、快退,新起始點的第一個GOP還是慢,且之前很多GOP的解碼被白白浪費掉了;3)緩存需求很大,在線實時解碼時需要提前下載后面GOP的數(shù)據(jù),網(wǎng)絡(luò)緩存加大,同時還需要更多的緩存保存后面GOP解碼完成的圖像數(shù)據(jù)。
[0011]2)Slice/Tile級別的并行,即把一幀圖像分成若干個小圖像,分別按小圖像編碼和解碼,小圖像之間可以并行。這種方案的缺點是:I)需要編碼器端配合,編碼器首先要將圖像分割成小圖像,否則解碼端無法并行;2)由于分成了小圖像,小圖像之間不能互相參考,嚴(yán)重影響編碼效率,即壓縮率將變低。
[0012]3)WPP級別的并行,即根據(jù)幀內(nèi)編碼瀑布式下推的特性,通過多個熵編碼起始點,使得多行編碼塊的解碼過程之間可以并行。這種方案的缺點是:I)需要編碼端的配合,如果編碼端不按并行的方式編碼,解碼端就無法并行;2)由于有多個熵編碼起始點,編碼效率下降雖然不多,但仍然會有一點下降。
[0013]4)幀解碼內(nèi)部的并行,即在每個編碼塊的內(nèi)部進(jìn)行并行,比如DCT計算過程并行,預(yù)測過程并行等。這種方案的確定是:由于每個塊的執(zhí)行時間粒度已經(jīng)很小(毫秒級別),而操作系統(tǒng)調(diào)度的時間片大小一般在20毫秒左右,所以這種并行設(shè)計起來非常困難,硬件兼容性差。

【發(fā)明內(nèi)容】

[0014]針對上述各種并行解碼方案存在的問題,本專利提出一種可以克服上述問題較為通用的解碼器并行方案,可以在宏塊級別并行,無需編碼端針對并行做任何專門的處理,編碼效率沒有損失,并行化的軟件實現(xiàn)不是很困難,對緩存要求不高的軟件并行解碼方案。
[0015]根據(jù)本發(fā)明的一個方面,提供了一種計算機(jī)執(zhí)行的、針對采用了CABAC熵編碼技術(shù)編碼的碼流進(jìn)行的、宏塊級別的并行解碼方法,對于一個宏塊的解碼操作包括熵解碼操作和除了熵解碼操作外的在后解碼操作,其中包括:接收來自編碼器側(cè)的碼流,該碼流是采用了 CABAC熵編碼技術(shù)熵編碼的;利用單獨的CABAC熵解碼線程對所接收的碼流中的宏塊進(jìn)行CABAC熵解碼;至少部分基于CABAC熵解碼的結(jié)果、幀內(nèi)宏塊和幀間宏塊之間的依賴關(guān)系、當(dāng)前能夠利用的存儲資源和計算資源,界定能夠彼此并行進(jìn)行在后解碼操作的宏塊;以及利用并行的塊解碼線程,彼此并行地對所界定的宏塊進(jìn)行在后解碼操作。
[0016]根據(jù)本發(fā)明實施例的并行解碼方法,還可以包括:利用環(huán)狀緩沖區(qū)來存儲宏塊進(jìn)行在后解碼操作所需要的上下文內(nèi)容數(shù)據(jù)集,緩沖區(qū)的存儲單位為每個宏塊進(jìn)行在后解碼操作所需要的上下文內(nèi)容數(shù)據(jù)集,緩沖區(qū)的長度大于圖像水平方向所包含的編碼塊的數(shù)目,緩沖區(qū)中的每個數(shù)據(jù)集具有可填充標(biāo)記和可解碼標(biāo)記,可填充標(biāo)記標(biāo)識該數(shù)據(jù)集是否可以被覆蓋,可解碼標(biāo)記標(biāo)識該元素是否有足夠的數(shù)據(jù)進(jìn)行對應(yīng)區(qū)域的解碼工作,具體圖像塊可解碼指的是能夠?qū)υ摼唧w圖像塊進(jìn)行在后解碼操作。
[0017]根據(jù)本發(fā)明實施例的并行解碼方法,所界定的能夠彼此并行進(jìn)行在后解碼操作的宏塊可以包括在不同幀中的宏塊。
[0018]根據(jù)本發(fā)明實施例的并行解碼方法,所述界定能夠彼此并行進(jìn)行在后解碼操作的宏塊可以在以下兩種情況下被觸發(fā)執(zhí)行:在CABAC熵解碼線程中具體圖像塊的CABAC熵解碼完成后,確定該具體圖像塊是否可以進(jìn)行在后解碼操作,如果確定可以,則將該具體圖像塊加入能夠彼此并行進(jìn)行在后解碼操作的宏塊的集合中;在具體圖像塊的在后解碼操作完成后,確定與該具體圖像塊相關(guān)的圖像塊中是否有新的可進(jìn)行在后解碼操作的圖像塊出現(xiàn),如果有,則將出現(xiàn)的新的可進(jìn)行在后解碼操作的圖像塊加入能夠彼此并行進(jìn)行在后解碼操作的宏塊的集合中。
[0019]根據(jù)本發(fā)明實施例的并行解碼方法,還可以包括:利用并行化調(diào)度模塊,基于環(huán)狀緩沖區(qū)中可進(jìn)行在后解碼操作的圖像塊的數(shù)量A、圖像塊熵解碼完成領(lǐng)先數(shù)量B、當(dāng)前計算資源的使用率C、當(dāng)前的并行的塊解碼線程的數(shù)量D,對熵解碼線程和并行的塊解碼線程進(jìn)行調(diào)度。
[0020]根據(jù)本發(fā)明實施例的并行解碼方法,所述對熵解碼線程和并行的塊解碼線程進(jìn)行調(diào)度可以包括下述項目中的至少一個:暫停熵解碼線程、重啟熵解碼線程、增加并行的塊解碼線程、減少并行的塊解碼線程。
[0021]根據(jù)本發(fā)明實施例的并行解碼方法,并行化調(diào)度模塊可以在每次塊解碼線程準(zhǔn)備開始尋找一個可解碼圖像塊進(jìn)行解碼時進(jìn)行調(diào)度。
[0022]根據(jù)本發(fā)明實施例的并行解碼方法,所述并行化調(diào)度模塊可以根據(jù)下述規(guī)則中的至少一個進(jìn)行調(diào)度:熵解碼線程處于運行狀態(tài)時,當(dāng)圖像塊熵解碼完成領(lǐng)先數(shù)量等于預(yù)定的最大值時,熵解碼線程暫停;熵解碼線程處于暫停狀態(tài)時,并且圖像塊熵解碼完成領(lǐng)先數(shù)量小于預(yù)定最大值的預(yù)定百分比時,熵解碼線程重啟;如果環(huán)狀緩沖區(qū)中可進(jìn)行在后解碼操作的圖像塊的數(shù)量A大于等于2,且當(dāng)前計算資源的使用率C不大于第一預(yù)定閾值,則增加一個塊解碼線程;如果當(dāng)前的并行的塊解碼線程的數(shù)量D大于1、當(dāng)前計算資源的使用率C大于第二預(yù)定閾值、圖像塊熵解碼完成領(lǐng)先數(shù)量B小于預(yù)定的最大值,則減少一個塊解碼線程。
[0023]根據(jù)本發(fā)明的另一方面,提供了一種針對采用了CABAC熵編碼技術(shù)編碼的碼流進(jìn)行的、宏塊級別的并行解碼裝置,對于一個宏塊的解碼操作包括熵解碼操作和除了熵解碼操作外的在后解碼操作,并行解碼裝置可以包括:碼流接收單元,接收來自編碼器側(cè)的碼流,該碼流是采用了CABAC熵編碼技術(shù)熵編碼的;CABAC熵解碼單元,利用單獨的CABAC熵解碼線程對所接收的碼流中的宏塊進(jìn)行CABAC熵解碼;可解碼宏塊界定單元,至少部分基于CABAC熵解碼的結(jié)果、幀內(nèi)宏塊和幀間宏塊之間的依賴關(guān)系、當(dāng)前能夠利用的存儲資源和計算資源,界定能夠彼此并行進(jìn)行在后解碼操作的宏塊;以及在后解碼操作執(zhí)行單元,利用并行的塊解碼線程,彼此并行地對所界定的宏塊進(jìn)行在后解碼操作。
[0024]根據(jù)本發(fā)明的再一方面,提供了一種針對采用了CABAC熵編碼技術(shù)編碼的碼流進(jìn)行宏塊級別的并行解碼的計算裝置,對于一個宏塊的解碼操作包括熵解碼操作和除了熵解碼操作外的在后解碼操作,所述計算裝置包括存儲器和處理器,存儲器中存儲有計算機(jī)可執(zhí)行指令集合,當(dāng)處理器執(zhí)行所述計算機(jī)可執(zhí)行指令集合時,執(zhí)行下述操作:接收來自編碼器側(cè)的碼流,該碼流是采用了 CABAC熵編碼技術(shù)熵編碼的;利用單獨的CABAC熵解碼線程對所接收的碼流中的宏塊進(jìn)行CABAC熵解碼;至少部分基于CABAC熵解碼的結(jié)果、幀內(nèi)宏塊和幀間宏塊之間的依賴關(guān)系、當(dāng)前能夠利用的存儲資源和計算資源,界定能夠彼此并行進(jìn)行在后解碼操作的宏塊;以及利用并行的塊解碼線程,彼此并行地對所界定的宏塊進(jìn)行在后解碼操作。
【附圖說明】
[0025]從下面結(jié)合附圖對本發(fā)明實施例的詳細(xì)描述中,本發(fā)明的這些和/或其它方面和優(yōu)點將變得更加清楚并更容易理解,其中:
[0026]圖1示出了根據(jù)本發(fā)明一個實施例的并行解碼方法100的流程圖。
[0027]圖2示例性地示出了幀內(nèi)圖像塊解碼的依賴關(guān)系的示意圖。
[0028]圖3示例性地示出了幀間圖像塊解碼的依賴關(guān)系的示意圖。
[0029]圖4示出了根據(jù)本發(fā)明一個實施例的并行編碼框架的示意圖。
[0030]圖5A到5Y示例性說明對幀內(nèi)圖像和幀間圖像的圖像塊進(jìn)行解碼的解碼過程的一系列示意圖。
【具體實施方式】
[0031]為了使本領(lǐng)域技術(shù)人員更好地理解本發(fā)明,下面結(jié)合附圖和【具體實施方式】對本發(fā)明作進(jìn)一步詳細(xì)說明。
[0032]本文中,在沒有特別說明的情況下,“可解碼”指的是可進(jìn)行除了“熵解碼”操作之外的在后解碼操作。單獨出現(xiàn)的“解碼”也是指的是進(jìn)行除了“熵解碼”操作的在后解碼操作。
[0033]后面的描述將以H.265標(biāo)準(zhǔn)的解碼技術(shù)為例加以說明,其中采用CABAC熵編碼方式。而H.264標(biāo)準(zhǔn)的編碼技術(shù)H.264中是有兩種熵編碼方式,CAVLC和CABAC,CAVLC由于復(fù)雜度低是事實上大部分碼流所采用的編碼方式,CAVLC的解碼過程比較快,相鄰的元素解碼不存在依賴關(guān)系,因此如果H.264采用CAVLC方式編碼的話,解碼可以不用特別考慮熵解碼部分帶來的復(fù)雜性。H.265中出于編碼效率的考慮,統(tǒng)一只采用CABAC的熵編碼方式,CAVLC不再被包含在H.265標(biāo)準(zhǔn)中。而如果采用CABAC,即算術(shù)編碼,則CABAC的編碼和解碼過程都比CAVLC復(fù)雜很多,速度也慢,前后元素的編解碼過程互相關(guān)聯(lián),如果前面的元素不解碼完成,后面的元素是無法解碼的,只有到了幀(更準(zhǔn)確的說是Slice)的邊界,熵解碼才會有結(jié)束標(biāo)志,并重新初始化進(jìn)行編解碼,也就是說只有到了幀的邊界,熵解碼才有并行的可能,在幀的內(nèi)部,熵解碼必須串行順序執(zhí)行。
[0034]下面描述一下本發(fā)明的發(fā)明思想,以便于透徹理解本發(fā)明。
[0035]針對H.265只有CABAC這一種熵編碼方式,并考慮到CABAC的解碼在Intra幀中占據(jù)了近50%的解碼時間,在Inter幀中占據(jù)了約30%的解碼時間這一統(tǒng)計事實,著重考慮了有CABAC條件下如何并行解碼的問題。
[0036]首先,本發(fā)明實施例給CABAC熵解碼單獨建立了一個線程,解碼器的其他線程跟隨在CABAC線程后面執(zhí)行,CABAC與其他線程之間存在并行關(guān)系,CABAC之外的塊解碼線程之間也存在并行關(guān)系。
[0037]此外,本發(fā)明實施例的并行解碼方法同時面向幀內(nèi)圖像解碼和幀間圖像解碼,特別的是對幀間圖像而言,圖像塊是否可以解碼很多情況下并不依賴其左側(cè)和上方的圖像塊是否已經(jīng)解碼完成,而是依賴前一幀圖像中的參考位置是否存在,因此圖像塊之間的并行沒有很強(qiáng)的依賴關(guān)系,可以“亂”序并行解碼。在一個示例中,為了將幀間圖像的“亂”序并行和幀內(nèi)圖像的“順”序并行融合在一起,采用了一種由環(huán)狀緩沖區(qū)管理可解碼圖像塊列表,統(tǒng)一圖像塊可并行解碼的信號觸發(fā)方式,使得“順”和“亂”兩種方式都能得到統(tǒng)一的并行化支持。
[0038]根據(jù)本發(fā)明的一個實施例,為了保障最大并行效率,基于一些參數(shù)對熵解碼線
當(dāng)前第1頁1 2 3 4 5 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1