本發(fā)明申請為申請日為2013年1月16日并于2014年7月18日進入中國國家階段的發(fā)明名稱為“視頻解碼器、視頻編碼器、視頻解碼方法以及視頻編碼方法”的第201380005990.1號發(fā)明專利申請的分案申請。
本文所討論的實施方式涉及視頻解碼器、視頻編碼器、視頻解碼方法以及視頻編碼方法。
背景技術(shù):
近來的視頻編碼技術(shù)涉及將圖像劃分成塊、對每個塊中所包含的像素進行預(yù)測以及對預(yù)測差異進行編碼以實現(xiàn)高壓縮率。在該技術(shù)中,用于根據(jù)經(jīng)歷編碼的畫面內(nèi)的像素來形成預(yù)測像素的預(yù)測模式稱為“幀內(nèi)預(yù)測”,用于根據(jù)稱為“運動補償”的在先編碼的參考圖像來形成預(yù)測像素的預(yù)測模式稱為“幀間預(yù)測”。
在視頻編碼器中,幀間預(yù)測用包括二維坐標數(shù)據(jù)(包括水平分量和豎直分量)的運動矢量來表示稱為預(yù)測像素的區(qū)域,并且對運動矢量和像素的預(yù)測差異數(shù)據(jù)進行編碼。為了抑制運動矢量的編碼量,根據(jù)與經(jīng)歷編碼的塊相鄰的塊的運動矢量來產(chǎn)生預(yù)測矢量,并且對運動矢量與預(yù)測矢量之間的差異矢量進行編碼。
在動態(tài)圖像專家組(mpeg)-4avc/h.264(下文中還稱為“h.264”)中,其是典型由高效視頻編碼(hevc)表示的當(dāng)前配置視頻編碼標準,將地址以光柵順序分配給所劃分的塊中的每個,并且塊的處理順序與地址順序相符。
在視頻編碼-解碼過程中,通常每秒處理大量的像素。特別地,運動補償或正交變換會需要較高的計算性能,因此,優(yōu)選的會是視頻編碼或解碼過程執(zhí)行并行處理。在視頻編碼中,在用于以與上述預(yù)測矢量的計算類似的方式根據(jù)經(jīng)歷編碼的塊周邊的塊來計算各種預(yù)測值的塊之間存在依賴關(guān)系。因此,對塊執(zhí)行并行處理會有困難。
在不影響處理順序或塊之間的依賴關(guān)系的情況下對塊實施并行處理的方法可包括:例如通過與塊行相對應(yīng)地移動每個處理塊(processingblock)的水平位置來執(zhí)行并行處理。
在以下描述中,這樣的并行處理稱為“并行塊行處理”。接下來,描述對應(yīng)于兩個塊行來執(zhí)行并行塊行處理的情況。
為了執(zhí)行并行塊行處理,視頻處理設(shè)備包括單元1和單元2,兩者中的每個均配置成獨立地處理相應(yīng)塊行。例如,單元1可配置成對奇數(shù)塊行進行處理,單元2可配置成對偶數(shù)塊行進行處理。
圖1是示出了并行塊行處理的示例的示意圖。如圖1中所示,根據(jù)單元2所處理的第二塊行中的塊的水平地址,將單元1所處理的第一塊行中塊的水平地址移動兩個或更多個塊。
因此,當(dāng)專注于單元2所處理的處理塊x時,在處理塊x左側(cè)的塊a是已對其執(zhí)行了處理的已處理塊。類似地,單元1所處理的塊b、塊c以及塊d是已處理塊。塊b在處理塊x的左上側(cè),塊c在處理塊x的上方,塊d在處理塊x的右上側(cè)。塊x可以利用這些已處理塊的編碼結(jié)果。
例如,對偶數(shù)塊行的處理能夠無需等到對奇數(shù)塊行的處理結(jié)束就開始,因此,處理塊x能夠?qū)嵤┡c處理諸如運動預(yù)測或正交變換相關(guān)聯(lián)的并行處理。在上面的示例中,描述了兩個塊行的并行處理;然而,并行處理的實施并不限于兩個塊行的并行處理。在對n個塊線進行并行處理的情況下,在視頻處理設(shè)備中,可將n個單元分配給n個塊行。
注意,當(dāng)并行塊行處理作為程序來執(zhí)行時,處理單元可以是線程或中央處理器(cpu)。
根據(jù)h.264,可通過以基于標準規(guī)范處理塊的順序來處理一系列輸出位,來執(zhí)行熵編碼。因此,視頻處理設(shè)備臨時存儲前述并行塊行處理的結(jié)果,并且熵編碼器以基于標準規(guī)范處理塊的順序,對所存儲的結(jié)果進行編碼。
通過對比,hevc公開了用于在塊行之間插入一系列輸出位的技術(shù)。圖2是示出了由hevc中的熵處理部所執(zhí)行的并行塊行處理的示例的示意圖。如圖2中所示,可通過塊行之間的并行處理來執(zhí)行熵編碼或解碼。
相關(guān)現(xiàn)有技術(shù)文獻:
非專利文獻1:“iso/iec14496-10(mpeg-4part10)/itu-trec.h.264”;
非專利文獻2:“thomaswiegand、woo-jinhan、benjaminbross、jens-rainerohm、garyj.sullivan、“workingdraft5ofhigh-efficiencyvideocoding”jctvc-g1103,jct-vc7thmeeting,december,2011.”;
非專利文獻3:“hevcreferencesoftwarehm5.0https://hevc.hhi.fraunhofer.de/svn/svn_hevcsoftware/tags/hm-5.0/”;
非專利文獻4:“mpeg-2,testmodel5(tm5),doc.iso/iecjtc1/sc29/wg11/n0400,testmodeleditingcommittee,april1993.”。
在混合編碼系統(tǒng)中,其是通過h.264或hevc所表示的運動補償和正交變換(例如,離散余弦變換(dct))的組合,通過將圖像劃分成塊、產(chǎn)生塊的預(yù)測像素并且對原始像素與預(yù)測像素之間的差異像素執(zhí)行諸如dct的正交變換以量化正交變換的輸出系數(shù),來實現(xiàn)壓縮。
在此混合系統(tǒng)中,準備了調(diào)節(jié)量化的精確性的量化參數(shù)(qp,quantizationparameter),針對每個塊對qp值進行編碼,從而控制信息的量。
然而,在塊中的所有量化變換系數(shù)都是0的情況下,反量化的結(jié)果也都是0。因此,對于解碼處理,可不需要qp值。在這種情況下,qp值是失效,并且不作為結(jié)果來編碼。
在每個塊中產(chǎn)生qp值的預(yù)測值(下文中,稱為“qp預(yù)測值”)。因此,當(dāng)處理塊的qp值失效時,將每個塊的qp值設(shè)置為qp預(yù)測值。作為用于確定每個塊的qp值的方法,在非專利文獻4中所公開的tm5中所利用的算法在本領(lǐng)域中是已知的。
用于根據(jù)h.264或hevc對qp值進行編碼的方法包括對處理塊的qp值與qp預(yù)測值之間的差異值qp_delta進行編碼。例如,qp預(yù)測值可以是qp值qp_prev,其是光柵順序中處理塊的前一塊的qp值。qp_delta可以通過下列公式(1)來計算。
qp_delta=qp–qp_prev……………(1)
視頻解碼器配置成對由視頻編碼器熵編碼的qp_delta進行解碼,以通
過下列公式(2)恢復(fù)qp值。
qp=qp_delta+qp_prev……………(2)
當(dāng)正處理畫面的處理塊(例如第一塊)不存在前一塊時,qp_prev可以是在第一塊的處理之前確定的值。例如,根據(jù)h.264,畫面的第一塊的qp_prep分配有在稱為“片(slice)”的報頭信息中描述的片qp值。
此外,根據(jù)h.264或hevc,可利用每個塊的qp值來確定去塊濾波器的濾波強度而不是正交變換的量化。不將失效的qp報告至視頻解碼器。因此,可將具有失效的qp的塊的qp值處理為qp_prev。
這里,關(guān)注在并行塊行處理中的第(k–1)個塊行和第k個塊行。當(dāng)在開始第k個塊行的處理時處理第k個塊行中的第一塊x時,在第k個塊行中的約兩個塊已在第(k–1)個塊行之前被處理。第k個塊行的第一塊之前的塊對應(yīng)于第(k–1)個塊行的最后一塊。因此,在開始第k個塊行的處理時,塊y的處理還沒有完成。
因此,當(dāng)處理塊x時,未確定qp_prev。由于沒有確定塊x的qp_prev,所以未確定塊x之后的塊的qp_prev。
因此,不是在塊行之間并行計算而是順序計算qp預(yù)測值。圖3a和圖3b均是示出了執(zhí)行相關(guān)技術(shù)并行塊行處理的相關(guān)技術(shù)視頻處理設(shè)備的示意性配置的框圖。
更具體地,圖3a是示出了執(zhí)行并行塊行處理的相關(guān)技術(shù)編碼器的示意性配置的框圖。圖3b是示出了執(zhí)行并行塊行處理的相關(guān)技術(shù)解碼器的示意性配置的框圖。
如圖3a和圖3b中所示,在相關(guān)技術(shù)視頻處理設(shè)備中,被配置為計算qp預(yù)測值的qp預(yù)測部會是瓶頸。
圖4a是示出了在qp預(yù)測處理中的并行塊行處理的示例的示意圖。在圖4a示出的示例中,并行地處理第一塊行和第二塊行。在這種情況下,當(dāng)x表示第二塊行的處理塊時,塊x的qp預(yù)測值的計算需要等待,直到塊y的處理完成。即,除非完成了對第一塊行的處理,否則不開始對第二塊行的處理。
圖4b是示出了在qp預(yù)測處理中的并行塊行處理的另一示例的示意圖。如圖4b中所示,當(dāng)塊y的處理已完成時,第二塊行的處理開始。
圖4c是示出了在qp預(yù)測處理中的并行塊行處理的又一示例的示意圖。在圖4c所示的示例中,已在處理第一塊行的qp預(yù)測部會需要等待,直到對塊v的處理完成,以計算在第三塊行中的塊w的qp值。
也就是說,除非完成了對第二塊行的處理,否則不開始對第三塊行的處理。因此,為了開始第k個塊行,需要完成對第(k–1)個塊行的處理,因此,在相關(guān)現(xiàn)有技術(shù)中可串行地計算qp值。
當(dāng)并行地執(zhí)行編碼處理并且對qp預(yù)測部進行串行處理時,需要考慮下列幾點。例如,由于沒有確定塊x的qp_prev,所以在第k個塊行的第一塊不計算qp_delta,并且直到對塊y的處理完成才開始對塊x的熵處理。
因此,由于延遲了熵處理的開始,所以會增加用于存儲編碼處理部所產(chǎn)生的結(jié)果的緩沖器大小。此外,不會開始對去塊濾波器的處理。
類似地,視頻解碼器中的并行塊行處理可考慮如下。根據(jù)hevc,可在塊行之間并行地執(zhí)行熵處理。類似于第一示例,關(guān)注第(k–1)個塊行和第k個塊行,并且考慮第k個塊行的第一塊x的qp恢復(fù)處理。在這種情況下,在塊x的qp_delta被解碼時,塊y的qp_delta尚待解碼,因此,將不恢復(fù)塊y的qp值。
由于塊x的qp預(yù)測值qp_prev對應(yīng)于塊y的qp值,所以將不計算塊x的qp_prev。結(jié)果,將不恢復(fù)塊x的qp值。因此,會串行地執(zhí)行各塊的qp預(yù)測值,這會在與視頻編碼器類似方式的并行處理中導(dǎo)致瓶頸。
技術(shù)實現(xiàn)要素:
因此,下面所公開的技術(shù)能夠?qū)p預(yù)測值的計算處理實現(xiàn)并行處理,這會改善并行塊行處理的效率。
根據(jù)實施方式的一個方面,提供了一種用于對用視頻編碼系統(tǒng)進行編碼的流進行解碼的視頻解碼器,其中通過對多個劃分塊的圖像進行編碼來獲得編碼流。該視頻編碼器包括:并行熵解碼部,所述并行熵解碼部配置成對塊行中所包含的塊的流進行熵解碼,所述塊行中每個塊行中的塊的流與所述塊行中相應(yīng)的一個塊行中的塊的流被并行地熵解碼,所述塊行中的每個塊行表示塊的陣列;并行qp預(yù)測部,所述并行qp預(yù)測部配置成計算所述塊行中所包含的塊的量化參數(shù)的預(yù)測值,所述塊行中的每個塊行中的塊的預(yù)測值與所述塊行中相應(yīng)的一個塊行中的塊的預(yù)測值并行地計算;以及并行解碼處理部,所述并行解碼處理部配置成對于所述塊行中所包含的塊產(chǎn)生解碼像素,關(guān)于所述塊行中的每個塊行中的塊的解碼像素與關(guān)于所述塊行中相應(yīng)的一個塊行中的塊的解碼像素并行地產(chǎn)生,通過利用由所述并行熵解碼部所解碼的數(shù)據(jù)和所述并行qp預(yù)測部所計算的預(yù)測值,對所述解碼像素中的每一個進行解碼。在該視頻編碼器中,當(dāng)所述并行qp預(yù)測部以n個塊行為單位并行地執(zhí)行預(yù)測值計算處理,并且n的值是2或更大值時,所述并行qp預(yù)測部對第(k–1)塊行中的處理塊執(zhí)行預(yù)測值計算處理,所述第(k–1)塊行中的處理塊比第k塊行中的處理塊在水平位置上在前至少一個塊,從而在并行處理中通過參考與在所述第(k–1)塊行中的處理塊相對應(yīng)的、在所述第k塊行中已處理的塊,計算在所述第(k–1)塊行中的處理塊的預(yù)測值。
根據(jù)實施方式的一個方面,提供了一種用于對圖像的多個劃分塊中的每個執(zhí)行視頻編碼處理的視頻編碼器,該視頻編碼器包括:并行編碼處理部,配置成產(chǎn)生包括塊行中所包含的塊的量化正交變換系數(shù)的編碼數(shù)據(jù),塊行中的每個塊行中的塊的編碼數(shù)據(jù)與塊行中相應(yīng)一個塊行中的塊的編碼數(shù)據(jù)并行地產(chǎn)生,塊行中的每個塊行均表示塊的陣列;并行qp預(yù)測部,配置成計算用于對塊行中包含的塊進行編碼的量化參數(shù)的預(yù)測值,塊行中的每個塊行中的塊的預(yù)測值與塊行中相應(yīng)一個塊行中的塊的預(yù)測值并行地計算;以及并行熵編碼處理部,配置成利用編碼數(shù)據(jù)和量化參數(shù)的預(yù)測值,對塊行中所包含的塊進行熵編碼,塊行中的每個塊行中的塊與塊行中相應(yīng)一個塊行中的塊并行地熵編碼,其中,當(dāng)對n個塊行并行地執(zhí)行預(yù)測值計算處理,并且n的值是2或更大值時,并行qp預(yù)測部執(zhí)行預(yù)測值計算處理,以使得與第k塊行中的處理塊并行地處理的第(k–1)塊行中的處理塊比第k塊行中的處理塊在水平位置上在前至少一個塊;當(dāng)?shù)趉塊行中的處理塊在第k塊行的開始時,并行qp預(yù)測部利用針對第k塊行中的處理塊所屬的片定義的量化參數(shù)來初始化緊鄰在第k塊行中的處理塊之前處理的塊的量化參數(shù),并且基于初始化的量化參數(shù)來計算第k塊行中的處理塊的量化參數(shù)的預(yù)測值;當(dāng)?shù)趉塊行中的處理塊在第k塊行的開始以外的位置時,所述并行qp預(yù)測部基于第k塊行中已經(jīng)被處理的塊的量化參數(shù)來計算第k塊行中的處理塊的量化參數(shù)的預(yù)測值;以及并行編碼處理部基于所計算的量化參數(shù)的預(yù)測值以及指示編碼結(jié)果是否全是0的信息來確定塊的量化參數(shù),該量化參數(shù)用于處理塊。
根據(jù)實施方式的一個方面,提供了一種由視頻編碼器執(zhí)行的視頻編碼方法,視頻編碼器對圖像的多個劃分塊中的每個執(zhí)行視頻編碼處理,視頻編碼方法包括:產(chǎn)生包括塊行中所包含的塊的量化的正交變換系數(shù)的編碼數(shù)據(jù),塊行中的每個塊行中的塊的編碼數(shù)據(jù)與塊行中相應(yīng)一個塊行中的塊的編碼數(shù)據(jù)并行地產(chǎn)生,塊行的每個塊行均表示塊的陣列;計算用于對塊行中包含的塊進行編碼的量化參數(shù)的預(yù)測值,塊行中的每個塊行中的塊的預(yù)測值與塊行中相應(yīng)一個塊行中的塊的預(yù)測值并行地計算;及利用編碼數(shù)據(jù)和量化參數(shù)的預(yù)測值,對塊行中包含的塊進行熵編碼,塊行中的每個塊行中的塊與塊行中相應(yīng)一個塊行中的塊并行地熵編碼,其中,當(dāng)對n個塊行并行地執(zhí)行預(yù)測值計算處理,并且n的值是2或更大值時,執(zhí)行預(yù)測值計算處理,以使得與第k塊行中的處理塊并行地處理的第(k–1)塊行中的處理塊比第k塊行中的處理塊在水平位置上在前至少一個塊;當(dāng)?shù)趉塊行中的處理塊在第k塊行的開始時,利用針對第k塊行中的處理塊所屬的片定義的量化參數(shù)來初始化緊鄰在第k塊行中的處理塊之前處理的塊的量化參數(shù),并且基于初始化的量化參數(shù)來計算第k塊行中的處理塊的量化參數(shù)的預(yù)測值;當(dāng)?shù)趉塊行中的處理塊在第k塊行的開始以外的位置時,基于第k塊行中已經(jīng)被處理的塊的量化參數(shù)來計算第k塊行中的處理塊的量化參數(shù)的預(yù)測值;以及基于所計算的量化參數(shù)的預(yù)測值以及指示編碼結(jié)果是否全是0的信息來確定塊的量化參數(shù),該量化參數(shù)用于處理塊。
根據(jù)實施方式的一個方面,提供了一種存儲由視頻編碼器執(zhí)行的視頻編碼程序的記錄介質(zhì),所述視頻編碼器對圖像的多個劃分塊中的每個執(zhí)行視頻編碼處理,所述視頻編碼程序在由所述視頻編碼器執(zhí)行時,實現(xiàn)包括以下步驟的過程:由處理器產(chǎn)生包括塊行中所包含的塊的量化的正交變換系數(shù)的編碼數(shù)據(jù),所述塊行中的每個塊行中的塊的編碼數(shù)據(jù)與所述塊行中相應(yīng)一個塊行中的塊的編碼數(shù)據(jù)并行地產(chǎn)生,所述塊行的每個塊行均表示塊的陣列;計算用于對所述塊行中包含的塊進行編碼的量化參數(shù)的預(yù)測值,所述塊行中的每個塊行中的塊的預(yù)測值與所述塊行中相應(yīng)一個塊行中的塊的預(yù)測值并行地計算;以及利用所述編碼數(shù)據(jù)和所述量化參數(shù)的預(yù)測值,對所述塊行中包含的塊進行熵編碼,所述塊行中的每個塊行中的塊與所述塊行中相應(yīng)一個塊行中的塊并行地熵編碼,其中,當(dāng)對n個塊行并行地執(zhí)行預(yù)測值計算處理,并且n的值是2或更大值時,執(zhí)行預(yù)測值計算處理,以使得與第k塊行中的處理塊并行地處理的第k–1塊行中的處理塊比所述第k塊行中的處理塊在水平位置上在前至少一個塊;當(dāng)所述第k塊行中的處理塊在所述第k塊行的開始時,利用針對所述第k塊行中的處理塊所屬的片定義的量化參數(shù)來初始化緊鄰在所述第k塊行中的處理塊之前處理的塊的量化參數(shù),并且基于初始化的所述量化參數(shù)來計算所述第k塊行中的處理塊的量化參數(shù)的預(yù)測值;當(dāng)所述第k塊行中的處理塊在所述第k塊行的開始以外的位置時,基于所述第k塊行中已經(jīng)被處理的塊的量化參數(shù)來計算所述第k塊行中的處理塊的量化參數(shù)的預(yù)測值;以及基于所計算的所述量化參數(shù)的預(yù)測值以及指示編碼結(jié)果是否全是0的信息來確定所述塊的量化參數(shù),所述量化參數(shù)用于處理所述塊。
借助于在所附權(quán)利要求中具體指出的要素和組合,將實現(xiàn)并且達到本發(fā)明的目的和優(yōu)點。
應(yīng)理解的是,前面的一般描述和下面的詳細描述是示例性的和解釋性的,并且不是對本發(fā)明的限制。
實施方式的其他目的和優(yōu)點將在下面的描述中部分地給出,其一部分將根據(jù)該描述而變得明顯,或者可通過對本發(fā)明的實踐來認識到。
附圖說明
圖1是示出了并行塊行處理的示例的示意圖;
圖2是示出了根據(jù)hevc的熵處理部的并行塊行處理的示例的示意圖;
圖3a是示出了執(zhí)行并行塊行處理的相關(guān)技術(shù)編碼器的示意性配置的框圖;
圖3b是示出了執(zhí)行并行塊行處理的相關(guān)技術(shù)解碼器的示意性配置的框圖;
圖4a是示出了在qp預(yù)測處理中的塊行并行處理的示例的示意圖;
圖4b是示出了在qp預(yù)測處理中的塊行并行處理的另一示例的示意圖;
圖4c是示出了在qp預(yù)測處理中的塊行并行處理的又一示例的示意圖;
圖5是示出了根據(jù)第一實施方式的視頻解碼器的配置示例的框圖;
圖6是示出了根據(jù)第一實施方式的視頻解碼器的并行解碼部的各部件的配置示例的框圖;
圖7是示出了根據(jù)第一實施方式的視頻解碼器的解碼處理部的配置示例的框圖;
圖8是示出了在n=3的情況下在并行qp預(yù)測處理中的可用塊的示例的框圖;
圖9是示出了根據(jù)第一實施方式的視頻解碼器的qp預(yù)測部的配置示例的框圖;
圖10a是示出了根據(jù)第一實施方式的視頻解碼器中的qp預(yù)測處理的示例的示意圖;
圖10b是示出了根據(jù)第一實施方式的視頻解碼器中的qp預(yù)測處理的另一示例的示意圖;
圖11是示出了根據(jù)第一實施方式的視頻解碼器的塊解碼處理的示例的流程圖;
圖12是示出了根據(jù)第二實施方式的視頻編碼器的配置示例的框圖;
圖13是示出了根據(jù)第二實施方式的視頻編碼器的并行編碼部的各部件的配置示例的框圖;
圖14是示出了根據(jù)第二實施方式的視頻編碼器的編碼處理部的配置示例的框圖;
圖15是示出了根據(jù)第二實施方式的視頻編碼器的qp預(yù)測部的配置示例的框圖;
圖16是示出了根據(jù)第二實施方式的視頻編碼器中的塊編碼處理的示例的流程圖;以及
圖17是示出了根據(jù)第三實施方式的視頻處理設(shè)備的配置示例的框圖。
具體實施方式
下面,將參考附圖來描述優(yōu)選實施方式。注意,視頻中所包含的圖像(畫面)可以是幀和場中的任意一個。幀是視頻數(shù)據(jù)的靜止圖像中的一個,場是通過獲取來自幀的奇數(shù)行或偶數(shù)行中的數(shù)據(jù)而獲得的靜止圖像。
此外,經(jīng)歷處理的視頻可以是彩色視頻或黑白視頻。
第一實施方式
配置
圖5是示出了根據(jù)第一實施方式的視頻解碼器的配置示例的框圖。在圖5所示的示例中,視頻解碼器10包括并行解碼部101和解碼像素存儲部105。并行解碼部101包括并行熵解碼部102、并行qp預(yù)測部103以及并行解碼處理部104。
注意,視頻解碼器10配置成并行地處理n個塊行。還要注意,“塊行”指圖像內(nèi)水平方向上的塊的陣列。
并行解碼部101的各部件配置成對每個塊行的相同塊執(zhí)行處理。此外,在第(k–1)個塊行中的處理塊的水平位置配置成在第k個塊行中的處理塊的水平位置之前兩個或更多個塊處。
這樣做會是因為即使在對塊行進行并行解碼時,關(guān)于處理塊的上部塊和右上塊的解碼信息也可以通過在塊行之間移動兩個或更多個塊來獲得(得到)。當(dāng)僅得到(利用)上部塊的解碼信息時,塊行之間的水平位置的移動量可以是一個塊。在下文中,“上部塊”表示在處理塊上方的一個塊,“右上塊”表示在處理塊上方的塊的右側(cè)緊鄰的塊。
并行解碼部101配置成對編碼流進行解碼,其中通過利用視頻編碼系統(tǒng)對被劃分成多個塊的圖像進行編碼來獲得該編碼流。并行解碼部101可以例如以并行的n個塊行為單位,對編碼流進行解碼。將每個塊行中的每個塊解碼出的每個像素輸出至解碼像素存儲部105。被解碼的像素稱為“已解碼像素”。
并行熵解碼部102配置成將輸入流劃分成塊行,并且對塊行中所包含的流的塊進行并行熵解碼。并行熵解碼部102將經(jīng)熵解碼的數(shù)據(jù)輸出至并行解碼處理部104。
并行qp預(yù)測部103配置成計算相應(yīng)的一個塊行中所包含的塊中的每個塊的量化參數(shù)(qp)的預(yù)測值(qp預(yù)測值)并對塊行中所包含的塊并行地執(zhí)行計算處理。將計算的qp預(yù)測值輸出至并行解碼處理部104。
并行解碼處理部104配置成在并行地產(chǎn)生各塊行的解碼像素時,產(chǎn)生相應(yīng)的一個塊行中所包含的塊中的每個塊所對應(yīng)的解碼像素。通過利用并行熵解碼部102所解碼的數(shù)據(jù)和并行qp預(yù)測部103所計算的qp預(yù)測值,對每個解碼像素進行解碼。將所產(chǎn)生的解碼像素輸出至解碼像素存儲部105。
解碼像素存儲部105配置成存儲從并行解碼部101輸出的塊的解碼像素。每個圖像單元所聚集的解碼像素可形成圖像(畫面)。解碼像素存儲部105將用于一個畫面的解碼處理完成時輸出的解碼圖像進行存儲。
并行解碼部
接下來,描述并行解碼部101。圖6是示出了根據(jù)第一實施方式的視頻解碼器中的并行解碼部101的各部件的配置示例的框圖。在圖6所示的示例中,并行熵解碼部102包括第一熵解碼部221、第二熵解碼部222、以及第n熵解碼部223。
在圖6所示的示例中,并行qp預(yù)測部103包括第一qp預(yù)測部231、第二qp預(yù)測部232、以及第nqp預(yù)測部233。在圖6所示的示例中,并行解碼處理部104包括第一解碼處理部241、第二解碼處理部242、第n解碼處理部243以及塊信息存儲部244。
注意,當(dāng)l=1至n時,第l熵解碼部、第lqp預(yù)測部以及第l解碼部配置成對塊行中的同一塊行執(zhí)行處理。在下面的描述中,將第l熵解碼部、第lqp預(yù)測部以及第l解碼部總稱為“塊行解碼處理部”。例如,塊行解碼處理部201包括第一熵解碼部221、第一qp預(yù)測部231以及第一解碼處理部241。
當(dāng)塊行解碼處理部201已處理了第k個塊行時,塊行解碼處理部201隨后處理第(k+n)個塊行。
并行熵解碼部102配置成將輸入流劃分成塊行。熵解碼部221至223對從該流劃分的塊行以每單位n個塊行并行地進行熵解碼。熵解碼部221至223配置成執(zhí)行與在視頻編碼器中的熵編碼處理相對應(yīng)的熵解碼處理。
解碼處理部241至243配置成并行地執(zhí)行解碼處理。圖7是示出了根據(jù)第一實施方式的視頻解碼器中的解碼處理部的示例的框圖。由于解碼處理部241至243配置成執(zhí)行類似處理,所以在下面的描述中將解碼處理部241用作解碼處理部的示例。
第一解碼處理部241包括qp值恢復(fù)部301、反量化部302、反正交變換部303、運動矢量恢復(fù)部304、預(yù)測像素產(chǎn)生部305以及解碼像素產(chǎn)生部306。
qp值恢復(fù)部301配置成利用從稍后描述的第一qp預(yù)測部231輸入的qp預(yù)測值和從第一熵解碼部221輸入的qp差異值來恢復(fù)qp值(例如,參見前面的公式(2))。將所恢復(fù)的qp值輸出至反量化部302。
反量化部302配置成通過將恢復(fù)的qp值乘以正交變換系數(shù)來執(zhí)行反量化。將反量化的正交變換系數(shù)輸出至反正交變換部303。
反正交變換部303配置成對從反量化部302輸入的正交變換系數(shù)執(zhí)行反正交變換,以產(chǎn)生預(yù)測誤差像素。所產(chǎn)生的預(yù)測誤差像素輸出至解碼像素產(chǎn)生部306。
運動矢量恢復(fù)部304配置成從塊信息存儲部244獲取關(guān)于處理塊周邊的塊的運動矢量信息,以計算預(yù)測矢量。運動矢量恢復(fù)部304配置成將預(yù)測矢量與從第一熵解碼部221輸入的差異矢量相加,以恢復(fù)運動矢量。將恢復(fù)的運動矢量輸出至預(yù)測像素產(chǎn)生部305。
預(yù)測像素產(chǎn)生部305配置成從存儲之前解碼的畫面的解碼像素存儲部105獲取通過由運動矢量指示的參考畫面的像素數(shù)據(jù),以產(chǎn)生預(yù)測像素。所產(chǎn)生的預(yù)測像素輸出至解碼像素產(chǎn)生部306。
解碼像素產(chǎn)生部306配置成將從預(yù)測像素產(chǎn)生部305輸入的預(yù)測像素與從反正交變換部303輸入的預(yù)測誤差像素相加,以產(chǎn)生解碼像素。所產(chǎn)生的解碼像素存儲在解碼像素存儲部105中。
接下來,描述由每個qp預(yù)測部所執(zhí)行的處理。首先,描述每個qp處理部所執(zhí)行的預(yù)測處理中所利用的可用(可得到的)塊。圖8是示出了在n=3的情況下在并行qp預(yù)測處理中所利用的可用塊的示例的框圖。在圖8所示的示例中,當(dāng)n=3指示n個塊行時,對n個塊行并行執(zhí)行qp預(yù)測處理,并且在n個塊行的每個塊行中將處理延遲兩個塊。
在這種情況下,對應(yīng)于處理塊x的可用塊是圖8中所示的陰影塊。當(dāng)處理塊x經(jīng)歷處理時,圖8中的陰影塊指示已處理的塊;也就是說,圖8中的陰影塊指示可用(可得到的)塊。在圖8中,通過粗框指示的塊描繪了經(jīng)歷處理的塊(下文中還稱為“處理塊”)。每個qp預(yù)測部配置成通過參考可用塊(已處理的塊)來計算處理塊的qp預(yù)測值。下面,進一步詳細描述qp預(yù)測值的計算。
圖9是示出了根據(jù)第一實施方式的視頻解碼器中的qp預(yù)測部的配置示例的框圖。由于qp預(yù)測部231至233被配置成執(zhí)行類似處理,所以在下面的描述中將第一qp預(yù)測部231用作qp預(yù)測部的示例。
在圖9中,第一qp預(yù)測部231包括前一qp存儲部401、qp選擇部402以及上部qp獲取部403。
前一qp存儲部401配置成從qp值恢復(fù)部301接收在當(dāng)前處理塊之前剛處理完的塊的qp值,并存儲所接收的qp值。在開始畫面處理時,將前一qp存儲部401所存儲的qp值初始化。
例如,前一qp存儲部401所存儲的qp值用通過片報頭信息編碼的片qp值以與h.264類似的方式來初始化。片是與一個畫面相關(guān)聯(lián)的塊的劃分組的單元。
上部qp獲取部403可以例如從塊信息存儲部244獲取位于處理塊上方的塊的qp值。
qp選擇部402配置成選擇從前一qp存儲部401和上部qp獲取部403輸出的qp值中的一個,以將所選的qp值作為qp預(yù)測值輸出至qp值恢復(fù)部301。
例如,當(dāng)處理塊是塊行中的塊中的第一塊(頭部)時,qp選擇部402選擇從上部qp獲取部403輸出的qp值,而當(dāng)處理塊是塊行中不同于第一塊的任意一個塊時,qp選擇部402選擇從前一qp存儲部401輸出的qp值。qp選擇部402將所選擇的qp值作為qp預(yù)測值輸出至qp值恢復(fù)部301。
接下來,參考相應(yīng)的附圖描述在上面的示例中的qp值的預(yù)測(選擇)。圖10a是示出了根據(jù)第一實施方式的視頻解碼器中的qp預(yù)測處理的示例的示意圖。在圖10a所示的示例中,當(dāng)處理塊x表示經(jīng)歷處理的塊,并且處理塊x是塊行中的塊中的第一塊(頭部)時,qp選擇部402選擇上部塊a的qp值。
圖10b是示出了根據(jù)第一實施方式的視頻解碼器中的qp預(yù)測處理的另一示例的示意圖。如圖10b所示,當(dāng)處理塊x是塊行中不同于第一塊的塊中的一個時,qp選擇部402選擇處理塊x之前剛處理完的塊b的qp值。
注意,在這種情況下,接近處理塊x的塊的qp值用作qp預(yù)測值。因此,相比于以光柵順序選擇(利用)處理塊x之前剛處理完的塊的qp值的情況,qp值的預(yù)測效率不會降低。
在上面的示例中,當(dāng)處理塊不是第一塊時,通過利用處理塊x之前剛處理完的塊的qp值來產(chǎn)生qp預(yù)測值。然而,當(dāng)根據(jù)與處理塊相鄰的塊來預(yù)測qp值時,可通過其他方法來產(chǎn)生qp值。
此外,qp選擇部402的處理可以如下。當(dāng)經(jīng)歷處理的塊行是第二塊行至第n塊行時,由前一qp存儲部401所存儲的qp值是片qp值,該每個片qp值通過片單元來確定。因此,當(dāng)將片qp值用作每個塊的qp預(yù)測值時,預(yù)測效率會相對較低。
因此,當(dāng)處理塊是第二塊行至第n塊行中的塊中的第一個塊時,qp選擇部402可選擇由上部qp獲取部403所獲取的qp值,而當(dāng)處理塊是第二塊行至第n塊行中不同于第一塊的塊中的任意一個時,qp選擇部402可選擇由前一qp存儲部401所保持的qp值。
此外,當(dāng)處理塊是第(n+1)個塊行之后的塊行中的塊中的第一塊時,qp選擇部402可選擇由前一qp存儲部401所保持的qp值。在這種情況下,前一qp存儲部401所保持的qp值對應(yīng)于處理塊上方n個塊所在的塊行中的塊中的最后一個(最后塊)的qp值。
第k個塊行和第(k+n)個塊行由相同的解碼處理部、相同的qp預(yù)測部以及相同的熵解碼部來處理。因此,第k個塊行中的處理塊之前剛處理完的塊對應(yīng)于第(k–n)個塊行的最后塊。
此外,當(dāng)處理塊是塊行中的塊中的第一個時,qp選擇部402可配置成不變地選擇前一qp存儲部401中所存儲的qp值。此外,當(dāng)處理塊是第一塊行至第n塊行中的一個塊行中的塊中的第一塊時,qp選擇部402可配置成將片qp值選擇為qp預(yù)測值。
在這種情況下,可選擇處理塊上方n個塊所在的塊行中的塊中的最后一個(最后塊)的qp值作為第(n+1)個塊行中的第一塊的qp預(yù)測值。
通過上面的配置,對應(yīng)于塊行,對量化參數(shù)的預(yù)測值的計算過程可并行地執(zhí)行。
操作
接下來,描述根據(jù)第一實施方式的視頻解碼器10的操作。圖11是示出了第一實施方式中的塊解碼處理的示例的流程圖。注意,圖11中所示的塊解碼處理對應(yīng)于在一個塊上執(zhí)行的解碼處理。
在步驟s101中,每個熵解碼部對編碼信息(例如每個塊的差異運動矢量、qp差異值以及量化正交變換系數(shù))進行熵解碼。將熵解碼信息輸出至對應(yīng)于熵處理部的解碼處理部。
在步驟s102中,運動矢量恢復(fù)部304從塊信息存儲部244獲取關(guān)于處理塊周邊的塊的運動矢量信息,以計算預(yù)測矢量。
在步驟s103中,運動矢量恢復(fù)部304將差異運動矢量與預(yù)測矢量相加,以恢復(fù)運動矢量。將恢復(fù)的運動矢量信息存儲在塊信息存儲部244中。
在步驟s104中,預(yù)測像素產(chǎn)生部305從存儲之前所解碼的畫面的解碼像素存儲部105獲取由運動矢量所指示的參考畫面的像素數(shù)據(jù),以產(chǎn)生預(yù)測像素。
在步驟s105中,每個qp預(yù)測部均產(chǎn)生一個相應(yīng)塊的qp預(yù)測值,以將所產(chǎn)生的qp預(yù)測值輸入到qp值恢復(fù)部301中。
在步驟s106中,qp值恢復(fù)部301基于相應(yīng)的輸入qp預(yù)測值和差異值來恢復(fù)每個qp值。qp值被存儲在塊信息存儲部244中,并被提供至反量化部302。當(dāng)將處理塊上方的塊的qp值和之前由塊行解碼處理部201所處理的已處理塊的qp值之中的一個應(yīng)用于qp預(yù)測值時,可無需延遲(延緩)qp預(yù)測值的產(chǎn)生。結(jié)果,可改善并行處理的效率。
在步驟s107中,反量化部302將量化的正交變換系數(shù)與qp值相乘。
在步驟s108中,反正交變換部303對量化的正交變換系數(shù)執(zhí)行反正交變換,以產(chǎn)生預(yù)測誤差像素。
在步驟s109中,解碼像素產(chǎn)生部306將預(yù)測誤差像素與預(yù)測像素相加,以產(chǎn)生解碼像素。
在步驟s110中,解碼像素存儲部105存儲解碼像素。前述步驟是對塊(處理塊)的解碼處理的結(jié)束,其開始了對后續(xù)塊的接下來的解碼處理。當(dāng)對一個畫面中所包含的所有塊的解碼處理完成時,可將解碼像素存儲部105中所存儲的解碼圖像例如顯示在諸如顯示器的顯示部上。
如上所述,在根據(jù)第一實施方式的視頻解碼器中,可并行地執(zhí)行對qp預(yù)測值的計算,這可以改善并行塊行處理的效率。
第二實施方式
接下來,描述根據(jù)第二實施方式的視頻編碼器。在根據(jù)第二實施方式的視頻編碼器中,對應(yīng)于根據(jù)第一實施方式的視頻解碼器,可以多個塊行為單位并行執(zhí)行qp預(yù)測處理。
配置
圖12是示出了根據(jù)第二實施方式的視頻編碼器50的配置示例的框圖。在圖12所示的示例中,視頻編碼器50包括并行編碼部501和解碼像素存儲部505。并行解碼部501包括并行編碼處理部502、并行qp預(yù)測部503以及并行熵編碼部504。注意,視頻編碼器50配置成并行地處理n個塊行。
并行編碼部501的各部件配置成對每個塊行的相同塊執(zhí)行處理。此外,第(k–1)個塊行的處理塊的水平位置配置成在第k個塊行的處理塊的水平位置之前兩個或更多個塊處。
這會是因為即使在對塊行進行并行編碼時,關(guān)于處理塊的上部塊和右上塊的編碼信息也可通過在塊行之間移動兩個或更多個塊來獲得(得到)。當(dāng)?shù)玫?利用)上部塊的信息時,塊行之間的水平位置的移動量可以是一個塊。
并行編碼部501配置成將圖像劃分成多個塊,并且利用視頻編碼系統(tǒng)將劃分的塊以例如n個塊行并行地編碼。由并行編碼部501進行本地解碼的解碼像素存儲在解碼像素存儲部505中。
并行編碼處理部502配置成在并行地處理塊行時,為塊行中所包含的每個塊產(chǎn)生量化的正交變換系數(shù)和差異運動矢量信息。所產(chǎn)生的正交變換系數(shù)和差異矢量信息(也稱為“編碼數(shù)據(jù)”)輸出至并行熵編碼部504。用于量化的qp值輸出至并行qp預(yù)測部503。
并行qp預(yù)測部503配置成在對塊行中所包含的塊并行地執(zhí)行計算處理時,計算在相應(yīng)塊行中所包含的每個塊的量化參數(shù)(qp)的預(yù)測值(qp預(yù)測值)。將所計算的qp預(yù)測值輸出至并行熵編碼部504。
并行熵編碼部504在對塊行中所包含的塊并行地執(zhí)行熵編碼處理時,利用量化的正交變換系數(shù)、作為qp值與qp預(yù)測值之間的差的qp差異值、差異移動矢量信息等,對相應(yīng)塊行中所包含的每個塊進行熵編碼。將由并行熵編碼部504所編碼的流輸出至視頻解碼器10等。
解碼像素存儲部505配置成存儲通過對從并行編碼部501輸出的每個塊進行本地解碼而獲得的解碼像素。本地解碼還可稱為“在本地解碼”。
并行編碼部
接下來,描述并行編碼部501。圖13是示出了根據(jù)第二實施方式的視頻編碼器中的并行編碼部501的各部件的配置示例的框圖。在圖13所示的示例中,并行編碼處理部502包括第一編碼處理部621、第二編碼處理部622、第n編碼處理部623以及塊信息存儲部624。
在圖13所示的示例中,并行qp預(yù)測部503包括第一qp預(yù)測部631、第二qp預(yù)測部632以及第nqp預(yù)測部633。在圖13所示的示例中,并行熵編碼部504包括第一熵編碼部641、第二熵編碼部642以及第n熵編碼部643。
注意,當(dāng)l=1至n時,第l編碼部、第lqp預(yù)測部以及第l熵編碼部配置成對塊行中的同一塊行執(zhí)行處理。在下面的描述中,第l編碼部、第lqp預(yù)測部以及第l熵編碼部總稱為“塊行編碼處理部”。
例如,塊行編碼處理部601包括第一編碼部621、第一qp預(yù)測部631以及第一熵編碼處理部641。
當(dāng)塊行編碼處理部601已對第k個塊行執(zhí)行了編碼處理時,塊行編碼處理部601隨后對第(k+n)個塊行執(zhí)行編碼處理。
并行熵編碼部502配置成將輸入圖像劃分成多個塊行。編碼處理部621至623配置成以圖像所劃分的塊行(例如,在這種情況下,n個塊行)為單位并行地執(zhí)行編碼處理。該編碼處理可以是諸如h.264或hevc的編碼處理。
圖14是示出了根據(jù)第二實施方式的視頻編碼器中的編碼處理部(例如,第一編碼處理部621)的配置示例的框圖。由于編碼處理部621至623配置成執(zhí)行類似的處理,所以在下面的描述中,將編碼處理部621用作編碼處理部的示例。
第一編碼處理部621包括預(yù)測差異部701、正交變換部702、量化部703、qp確定部704、反量化部705、反正交變換部706、解碼像素產(chǎn)生部707、運動檢測部708、預(yù)測信號產(chǎn)生部709以及差異矢量產(chǎn)生部710。
運動檢測部708配置成從解碼像素存儲部505獲取參考畫面的像素數(shù)據(jù),以檢測運動矢量。將檢測到的運動矢量信息存儲在塊信息存儲部624中,以用于接下來的編碼。
預(yù)測信號產(chǎn)生部709配置成從解碼像素存儲部505獲取參考像素,以基于輸入?yún)⒖紙D像的區(qū)域位置信息產(chǎn)生預(yù)測像素信號。將所產(chǎn)生的預(yù)測像素信號輸出至差異矢量產(chǎn)生部701。
差異矢量產(chǎn)生部110配置成產(chǎn)生預(yù)測矢量??梢匀缦路绞将@得預(yù)測矢量。從塊信息存儲部624獲取位于處理塊的左側(cè)、上方以及右上側(cè)的塊的運動矢量,并且可將該三個運動矢量的中間值確定為預(yù)測矢量。
如在上面的示例中所描述的,由于在水平方向上從在前的塊行的處理塊將每個塊行的處理塊移動兩個塊,所以已完成了對位于處理塊上方的塊和位于處理塊的右上側(cè)的塊的編碼處理。因此,差異矢量產(chǎn)生部710能夠獲取周邊塊的運動矢量。
差異矢量產(chǎn)生部710配置成從運動檢測部708獲取處理塊的運動矢量,以產(chǎn)生運動矢量與預(yù)測矢量之間的差異矢量。將所產(chǎn)生的差異矢量輸出至第一熵編碼部641。
預(yù)測差異部701配置成計算原始圖像與預(yù)測像素信號之間的差別,以產(chǎn)生預(yù)測誤差信號。將所產(chǎn)生的預(yù)測誤差信號輸出至正交變換部702。
正交變換部702配置成對預(yù)測誤差信號執(zhí)行例如離散余弦變換(dct)的正交變換處理。將所獲得的正交變換系數(shù)輸出至量化部703。
量化部703配置成基于量化參數(shù)(qp)來量化正交變換系數(shù)。量化方法的示例包括:將正交系數(shù)除以由qp所確定的值,并將所獲得的結(jié)果四舍五入為最接近的整數(shù)。將量化的正交變換系數(shù)乘以qp值,以執(zhí)行反量化。四舍五入處理會做出量化不可逆變換。將量化的正交變換系數(shù)輸出至第一熵編碼部641。
量化部703配置成產(chǎn)生關(guān)于量化的正交變換系數(shù)是否全為“0”的標記信息,以將所產(chǎn)生的標記信息與用于量化的qp值一起輸出至qp確定部704。將qp值輸出至反量化部705和第一qp預(yù)測部631。
第一qp預(yù)測部631配置成產(chǎn)生處理塊的qp預(yù)測值。將所產(chǎn)生的qp預(yù)測值輸出至qp確定部704以及第一熵編碼部641。
當(dāng)將處理塊上方的塊的qp值和與第一qp預(yù)測部631相關(guān)聯(lián)的塊行編碼處理部601之前所處理的已處理塊的qp值之中的一個應(yīng)用于qp預(yù)測值時,可無需延遲(延緩)qp預(yù)測值的產(chǎn)生。結(jié)果,可改善并行處理的效率。
qp確定部704配置成基于從量化部703輸入的qp值以及預(yù)測值來確定處理塊的qp。當(dāng)正交變換系數(shù)全是“0”時,將不會對qp差異信息進行熵編碼。因此,量化部703所利用的qp值將不被報告至解碼器側(cè)。結(jié)果,這樣的qp值會失效。
例如,qp確定部獲取關(guān)于量化部703所產(chǎn)生的量化的正交變換系數(shù)是否全是“0”的標記信息。當(dāng)qp確定部704獲取了指示正交變換系數(shù)全是“0”的標記信息時,qp確定部704將qp預(yù)測值設(shè)置為處理塊的qp值。當(dāng)qp確定部704獲取了指示正交變換系數(shù)全都不為“0”的標記信息時,qp確定部704將量化部703所利用的qp值設(shè)置為處理塊的qp值。將qp確定部704所確定的qp值存儲在塊信息存儲部624中。
反量化部705配置成對量化的正交變換系數(shù)執(zhí)行反量化處理。將反量化的正交系數(shù)輸出至反正交變換部706。
反正交變換部706配置成對量化的正交變換系數(shù)執(zhí)行反正交變換。將反正交變換處理的信號輸出至解碼像素產(chǎn)生部707。
解碼像素產(chǎn)生部707配置成將從預(yù)測信號產(chǎn)生部709獲取的預(yù)測像素信號加至反正交變換處理的信號,從而產(chǎn)生本地解碼像素。將所產(chǎn)生的解碼像素存儲在解碼像素存儲部505中。
接下來,描述每個qp預(yù)測部所執(zhí)行的處理。圖15是示出了根據(jù)第二實施方式的視頻編碼器中qp預(yù)測部的配置示例的框圖。由于qp預(yù)測部631至633配置成執(zhí)行類似的處理,所以在下面的描述中,將第一qp預(yù)測部631用作qp預(yù)測部的示例。
在圖15中,第一qp預(yù)測部631包括前一qp存儲部801、qp選擇部802以及上部qp獲取部803。
前一qp存儲部801配置成從qp確定部704接收在當(dāng)前處理塊之前剛處理完的塊的qp值,并且存儲所接收的qp值。在開始畫面處理時,將前一qp存儲部801所存儲的qp值初始化。
例如,利用由片報頭信息所編碼的片qp值,以與h.264類似的方式,對前一qp存儲部401所存儲的qp值進行初始化。片是與一個畫面相關(guān)聯(lián)的塊的劃分組的單元。
上部qp獲取部803可以從塊信息存儲部624獲取位于處理塊上方的塊的qp值。
qp選擇部802配置成從前一qp存儲部801和上部qp獲取部803輸出的qp值中選擇一個,以將所選qp值作為qp預(yù)測值輸出至qp確定部704或輸出至第一熵編碼部641。
例如,當(dāng)處理塊是塊行中的塊中的第一塊(頭部)時,qp選擇部802選擇從上部qp獲取部803輸出的qp值,而當(dāng)處理塊是塊行中不同于第一塊的任意一個塊時,qp選擇部802選擇從前一qp存儲部801輸出的qp值。qp選擇部802將所選擇的qp值作為qp預(yù)測值輸出至qp確定部704或者輸出至第一熵編碼部641。
在圖10a和圖10b中示出了對上面的示例中的qp值的預(yù)測(選擇)。在這種情況下,鄰近處理塊x的塊的qp值用作qp預(yù)測值。因此,相比于按光柵順序利用(選擇)處理塊x前一個塊的qp值的情況,qp值的預(yù)測效率不降低。
在上面的示例中,當(dāng)處理塊不是第一塊時,通過利用在處理塊x之前剛處理完的塊的qp值來產(chǎn)生qp預(yù)測值。然而,當(dāng)根據(jù)與處理塊相鄰的塊來預(yù)測qp值時,可通過其他方法來產(chǎn)生qp值。
注意,以類似于根據(jù)第一實施方式的視頻解碼器10的方式,根據(jù)第二實施方式的視頻編碼器50中的qp選擇部802的處理可以如下。當(dāng)經(jīng)歷處理的塊行是第二塊行至第n塊行時,前一qp存儲部801所存儲的qp值是片qp值,每個片qp值由片單元來確定。因此,當(dāng)將片qp值用作每個塊的qp預(yù)測值時,預(yù)測效率會相對較低。
因此,當(dāng)處理塊是第二塊行至第n塊行中的塊中的第一個塊時,qp選擇部802可選擇上部qp獲取部803所獲取的qp值,而當(dāng)處理塊是第二塊行至第n塊行中不同于第一個塊的任意一個塊時,qp選擇部802可選擇前一qp存儲部801所保持的qp值。
此外,當(dāng)處理塊是第(n+1)個塊行之后的塊行中的塊中的第一塊時,qp選擇部802可選擇前一qp存儲部801所保持的qp值。在這種情況下,前一qp存儲部801所保持的qp值對應(yīng)于處理塊上方n個塊所在的塊行中的塊中的最后一個(最后塊)的qp值。
第k個塊行和第(k+n)個塊行由相同的解碼處理部、相同的qp預(yù)測部以及相同的熵解碼部來處理。因此,第k個塊行中處理塊之前剛處理完的塊對應(yīng)于第(k–n)個塊行的最后塊。
此外,當(dāng)處理塊是塊行中的塊中的第一塊(頭部)時,qp選擇部802可配置成不變地選擇在前一qp存儲部801中所存儲的qp值。此外,當(dāng)處理塊是第一塊行至第n塊行中的一行中的塊中的第一塊時,qp選擇部802可配置成將片qp值選擇為qp預(yù)測值。
在這種情況下,可選擇處理塊上方n個塊所在的塊行中的塊中的最后一個(最后塊)的qp值作為第(n+1)個塊行中的第一塊的qp預(yù)測值。
熵編碼部641至643中的每一個對相應(yīng)的一個塊行中的每個塊的差異運動矢量、qp差異值、量化的正交變換系數(shù)進行熵編碼。
通過上面的配置,可并行地執(zhí)行與塊行相對應(yīng)的量化參數(shù)的預(yù)測值。
操作
接下來,描述根據(jù)第二實施方式的視頻編碼器50的操作。圖16是示出了在第二實施方式中的塊編碼處理的示例的流程圖。注意,圖16中所示的塊編碼處理對應(yīng)于對一個塊執(zhí)行的編碼處理。
在步驟s201中,將經(jīng)歷處理的塊(即,處理塊)輸入至編碼處理部621至623中的每一個中。運動檢測部708配置成從解碼像素存儲部505獲取參考畫面的像素數(shù)據(jù),以檢測運動矢量。
在步驟s202中,差異矢量產(chǎn)生部710產(chǎn)生所檢測的運動矢量與所產(chǎn)生的預(yù)測矢量之間的差異矢量。
在步驟s203中,運動檢測部708將所檢測的運動矢量存儲在塊信息存儲部624中。
在步驟s204中,預(yù)測信號產(chǎn)生部709獲取運動檢測部708所檢測的運動矢量所參考的參考圖像的區(qū)域位置信息,以產(chǎn)生預(yù)測像素信號。
在步驟s205中,差異矢量產(chǎn)生部701獲取由預(yù)測信號產(chǎn)生部709所產(chǎn)生的預(yù)測像素信號與輸入原始像素之間的差別,以產(chǎn)生預(yù)測誤差信號。
在步驟s206中,正交變換部702對預(yù)測誤差信號執(zhí)行正交變換,以產(chǎn)生正交變換系數(shù)。
在步驟s207中,量化部703基于量化參數(shù)(qp)來量化正交變換系數(shù)。
在步驟s208中,qp預(yù)測部631至633中的每一個均產(chǎn)生處理塊的qp預(yù)測值。qp預(yù)測值可以是例如位于處理塊上方的塊的qp值,或者是與相應(yīng)qp預(yù)測部相關(guān)聯(lián)的塊行編碼處理部601在之前所處理的塊的qp值。
在步驟s209中,qp確定部704將處理塊的qp值確定為從量化部703獲取的qp值和從qp預(yù)測部獲取的qp預(yù)測值中的一個。上面已描述了處理塊的qp值的確定方法。
在步驟s210中,每個熵編碼部對量化的正交變換系數(shù)、qp差異值以及差異矢量進行編碼。
在步驟s211中,反量化部705和反正交變換部706對量化的正交變換系數(shù)分別執(zhí)行反量化處理和反正交變換處理,以產(chǎn)生對應(yīng)于預(yù)測誤差信號的信號。
在步驟s212中,解碼像素產(chǎn)生部707將從預(yù)測信號產(chǎn)生部709獲取的預(yù)測像素信號與從反正交變換部706獲取的信號相加,以產(chǎn)生本地解碼的像素。
在步驟s213中,解碼像素存儲部505存儲所產(chǎn)生的解碼像素。前述步驟是對塊(處理塊)的編碼處理的結(jié)束,其開始了對后續(xù)塊的接下來的編碼處理。
如上所述,在根據(jù)第二實施方式的視頻編碼器中,可并行地執(zhí)行qp預(yù)測值的計算,這可以改善并行塊行處理的效率。
第三實施方式
圖17是示出了根據(jù)第三實施方式的視頻處理設(shè)備的配置示例的框圖。根據(jù)第三實施方式的視頻處理設(shè)備90可以是在前述實施方式中描述的視頻編碼器或視頻解碼器中的一個示例。如圖17中所示,視頻處理設(shè)備90包括控制器901、主存儲部902、輔助存儲部903、驅(qū)動設(shè)備904、網(wǎng)絡(luò)if部906、輸入部907以及顯示部908。前述部件經(jīng)由總線相互連接,從而使得數(shù)據(jù)在這些部件之間相互傳輸和接收。
控制器901用作對每個設(shè)備執(zhí)行控制或者對計算機內(nèi)的數(shù)據(jù)執(zhí)行操作或處理的cpu??刂破?01還用作能夠執(zhí)行主存儲部902中所存儲的計算機程序的運算單元,從而使得控制器901從輸入部907或存儲設(shè)備接收數(shù)據(jù)、對所接收的數(shù)據(jù)執(zhí)行操作或處理并將結(jié)果數(shù)據(jù)輸出至顯示部908或存儲設(shè)備。
主存儲部902可以是永久地或暫時地存儲由控制器901執(zhí)行的程序或數(shù)據(jù)(諸如操作系統(tǒng)(os)的基本軟件或應(yīng)用軟件)的存儲設(shè)備,諸如只讀存儲器(rom)或隨機存取存儲器(ram)。
輔助存儲部903可以是諸如硬盤驅(qū)動(hdd)的存儲設(shè)備,其存儲與應(yīng)用軟件相關(guān)聯(lián)的數(shù)據(jù)。
驅(qū)動設(shè)備904配置成從記錄介質(zhì)905(例如軟盤等)取回程序,以將所取回的程序安裝在存儲設(shè)備中。
此外,記錄介質(zhì)905配置成存儲預(yù)定程序。記錄介質(zhì)905中所存儲的程序經(jīng)由驅(qū)動設(shè)備904安裝在視頻處理設(shè)備90中。因此,所安裝的預(yù)定程序可以由視頻處理設(shè)備90容易地執(zhí)行。
網(wǎng)絡(luò)if部906是經(jīng)由包括數(shù)據(jù)傳輸路徑(例如,無線線路和/或有線線路)的網(wǎng)絡(luò)(例如,局域網(wǎng)(lan)和廣域網(wǎng)(wan))連接的視頻處理設(shè)備90與具有通信功能的外圍設(shè)備之間的接口。
輸入部907可包括具有光標鍵、數(shù)字鍵盤以及各種功能鍵的鍵盤以及用于選擇顯示部908的顯示屏幕上所顯示的鍵的鼠標或滑動塊(slidepad)。輸入部907是用戶將操作指令分配給控制器901或?qū)?shù)據(jù)輸入至控制器901的用戶接口。
顯示部908包括液晶顯示器(lcd),該液晶顯示器配置成顯示與從控制器901輸入的顯示數(shù)據(jù)相對應(yīng)的數(shù)據(jù)。注意,顯示部908可設(shè)置在外部,在這種情況下,視頻處理設(shè)備90可包括顯示控制器。
因此,在上面的實施方式中所示的視頻編碼器或視頻解碼器可實現(xiàn)為由計算機執(zhí)行的程序(例如,視頻編碼程序或視頻解碼程序)。這些程序可經(jīng)由服務(wù)器等安裝在計算機內(nèi),從而使計算機執(zhí)行該程序,該程序可實現(xiàn)前述視頻編碼器或視頻解碼器。
此外,這種視頻編碼程序或視頻解碼程序可存儲在記錄介質(zhì)905中,從而使計算機或移動終端取回存儲在記錄介質(zhì)905中的這些程序,以實現(xiàn)前述視頻編碼處理或視頻解碼處理。
注意,記錄介質(zhì)905可以是各種類型的記錄介質(zhì),例如,以光、電或磁的方式將信息記錄在其上的cd-rom、軟盤以及磁光盤;或者以電的方式將信息記錄在其上的半導(dǎo)體存儲器,例如rom或閃存。注意,記錄介質(zhì)905不包括任何載波。
在視頻處理設(shè)備90中執(zhí)行的程序可具有包括前述實施方式中所示的各個部件的模塊配置。在實際硬件中,控制器901從輔助存儲部903取回程序,并執(zhí)行所取回的程序。因此,將一個或多個部件加載在主存儲部902上,從而使得在主存儲部902中可產(chǎn)生所加載的部件。
此外,在上面的實施方式中所示的視頻編碼處理或視頻解碼處理可以實現(xiàn)為一個或多個集成電路。
根據(jù)所公開的技術(shù),可并行地執(zhí)行qp預(yù)測值的計算,這可以改善并行塊行處理的效率。
本技術(shù)還可以如下配置。
(1)一種用于對用視頻編碼系統(tǒng)進行編碼的流進行解碼的視頻解碼器,通過對多個劃分塊的圖像進行編碼來獲得編碼流,所述視頻解碼器包括:
并行熵解碼部,所述并行熵解碼部配置成對塊行中所包含的塊的流進行熵解碼,所述塊行中每個塊行中的塊的流與所述塊行中相應(yīng)的一個塊行中的塊的流被并行地熵解碼,所述塊行中的每個塊行表示塊的陣列;
并行qp預(yù)測部,所述并行qp預(yù)測部配置成計算所述塊行中所包含的塊的量化參數(shù)的預(yù)測值,所述塊行中的每個塊行中的塊的預(yù)測值與所述塊行中相應(yīng)的一個塊行中的塊的預(yù)測值并行地計算;以及
并行解碼處理部,所述并行解碼處理部配置成對于所述塊行中所包含的塊產(chǎn)生解碼像素,關(guān)于所述塊行中的每個塊行中的塊的解碼像素與關(guān)于所述塊行中相應(yīng)的一個塊行中的塊的解碼像素并行地產(chǎn)生,通過利用由所述并行熵解碼部所解碼的數(shù)據(jù)和所述并行qp預(yù)測部所計算的預(yù)測值,對所述解碼像素中的每一個進行解碼,其中,
當(dāng)所述并行qp預(yù)測部以n個塊行為單位并行地執(zhí)行預(yù)測值計算處理,并且n的值是2或更大值時,所述并行qp預(yù)測部對第(k–1)塊行中的處理塊執(zhí)行預(yù)測值計算處理,所述第(k–1)塊行中的處理塊比第k塊行中的處理塊在水平位置上在前至少一個塊,從而在并行處理中通過參考與在所述第(k–1)塊行中的處理塊相對應(yīng)的、在所述第k塊行中已處理的塊,計算在所述第(k–1)塊行中的處理塊的預(yù)測值。
(2)根據(jù)(1)所述的視頻解碼器,其中,
當(dāng)所述并行qp預(yù)測部從所述圖像的頂部塊行開始,對在第二塊行之后的塊行中的塊中的第一個塊執(zhí)行預(yù)測值計算處理時,所述并行qp預(yù)測部參考在塊行中的塊中的第一塊上方一個塊的塊。
(3)根據(jù)(1)所述的視頻解碼器,其中,
當(dāng)所述并行qp預(yù)測部從所述圖像的頂部塊行開始,對第二塊行至第n塊行中的每個塊行中的塊中的第一塊執(zhí)行預(yù)測值計算處理時,所述并行qp預(yù)測部參考在塊行中的塊的第一塊上方一個塊的塊,并且其中,
當(dāng)所述并行qp預(yù)測部對第(n+1)塊行之后的塊行中的塊中的第一塊執(zhí)行預(yù)測值計算處理時,所述并行qp預(yù)測部參考在塊行中的塊中的第一塊上方n個塊的塊行中的塊中的最后一塊。
(4)根據(jù)(1)所述的視頻解碼器,其中:
當(dāng)所述并行qp預(yù)測部從所述圖像的頂部塊行開始,對第一塊行至第n塊行中的每個塊行中的塊中的第一塊執(zhí)行預(yù)測值計算處理時,將每個預(yù)測值確定為在所述圖像的報頭信息中所包含的量化參數(shù),并且其中,
當(dāng)所述并行qp預(yù)測部對第(n+1)塊行之后的塊行中的塊中的第一塊執(zhí)行預(yù)測值計算處理時,將預(yù)測值確定為在塊行中的塊中的第一塊上方n個塊的塊行中的塊中的最后一塊的量化參數(shù)。
(5)一種用于對圖像的多個劃分塊中的每個執(zhí)行視頻編碼處理的視頻編碼器,所述視頻編碼器包括:
并行編碼處理部,所述并行編碼處理部配置成產(chǎn)生包括塊行中所包含的塊的量化正交變換系數(shù)的編碼數(shù)據(jù),所述塊行中的每個塊行中的塊的編碼數(shù)據(jù)與所述塊行中相應(yīng)一個塊行中的塊的編碼數(shù)據(jù)并行地產(chǎn)生,所述塊行中的每個塊行均表示塊的陣列;
并行qp預(yù)測部,所述并行qp預(yù)測部配置成計算所述塊行中所包含的塊的量化參數(shù)的預(yù)測值,所述塊行中的每個塊行中的塊的預(yù)測值與所述塊行中相應(yīng)一個塊行中的塊的預(yù)測值并行地計算;以及
并行熵編碼處理部,所述并行熵編碼處理部配置成利用所述編碼數(shù)據(jù)和所述預(yù)測值,對所述塊行中所包含的塊進行熵編碼,所述塊行中的每個塊行中的塊與所述塊行中相應(yīng)一個塊行中的塊并行地熵編碼,其中,
當(dāng)所述并行qp預(yù)測部以n個塊行為單位并行地執(zhí)行預(yù)測值計算處理,并且n的值是2或更大值時,所述并行qp預(yù)測部對第(k–1)塊行中的處理塊執(zhí)行預(yù)測值計算處理,所述第(k–1)塊行中的處理塊比第k塊行中的處理塊在水平位置上在前至少一個塊,從而在并行處理中通過參考與所述第(k–1)塊行中的處理塊對應(yīng)的所述第k塊行中已處理的塊,計算所述第(k–1)塊行中的所述處理塊的預(yù)測值。
(6)一種由視頻解碼器執(zhí)行的視頻解碼方法,所述視頻解碼器對用視頻編碼系統(tǒng)進行編碼的流進行解碼,通過對多個劃分塊的圖像進行編碼來獲得編碼流,所述視頻解碼方法包括:
對塊行中所包含的塊的流進行熵解碼,所述塊行中的每個塊行中的塊的流與所述塊行中相應(yīng)一個塊行中的塊的流并行地熵解碼,所述塊行中的每個塊行均表示塊的陣列;
計算所述塊行中所包含的塊的量化參數(shù)的預(yù)測值,所述塊行中的每個塊行中的塊的預(yù)測值與所述塊行中相應(yīng)一個塊行中的塊的預(yù)測值并行地計算;以及
產(chǎn)生關(guān)于所述塊行中所包含的塊的解碼像素,關(guān)于所述塊行中的每個塊行中的塊的解碼像素與關(guān)于所述塊行中相應(yīng)一個塊行中的塊的解碼像素并行地產(chǎn)生,通過利用在并行熵解碼處理中解碼的數(shù)據(jù)和所述預(yù)測值,對所述解碼像素中的每一個進行解碼,其中,
當(dāng)以n個塊行為單位并行地執(zhí)行預(yù)測值計算處理,并且n的值是2或更大值時,對第(k–1)塊行中的處理塊執(zhí)行預(yù)測值計算處理,所述第(k–1)塊行中的處理塊比第k塊行中的處理塊在水平位置上在前至少一個塊,從而在并行處理中通過參考與所述第(k–1)塊行中的處理塊相對應(yīng)的所述第k塊行中已處理的塊,計算所述第(k–1)塊行中的處理塊的預(yù)測值。
(7)一種由視頻編碼器執(zhí)行的視頻編碼方法,所述視頻編碼器對圖像的多個劃分塊中的每個執(zhí)行視頻編碼處理,所述視頻編碼方法包括:
產(chǎn)生包括塊行中所包含的塊的量化的正交變換系數(shù)的編碼數(shù)據(jù),所述塊行中的每個塊行中的塊的編碼數(shù)據(jù)與所述塊行中相應(yīng)一個塊行中的塊的編碼數(shù)據(jù)并行地產(chǎn)生,所述塊行的每個塊行均表示塊的陣列;
計算所述塊行中所包含的塊的量化參數(shù)的預(yù)測值,所述塊行中的每個塊行中的塊的預(yù)測值與所述塊行中相應(yīng)一個塊行中的塊的預(yù)測值并行地計算;以及
利用所述編碼數(shù)據(jù)和所述預(yù)測值,對所述塊行中的每個塊行所包含的塊進行熵編碼,所述塊行中的每個塊行中的塊與所述塊行中相應(yīng)一個塊行中的塊并行地熵編碼,其中,
當(dāng)以n個塊行為單位并行地執(zhí)行預(yù)測值計算處理,并且n的值是2或更大值時,對第(k–1)塊行中的處理塊執(zhí)行預(yù)測值計算處理,所述第(k–1)塊行中的處理塊比第k塊行中的處理塊在水平位置上在前至少一個塊,從而在并行處理中通過參考與所述第(k–1)塊行中的處理塊對應(yīng)的所述第k塊行中已處理的塊,計算所述第(k–1)塊行中的所述處理塊的預(yù)測值。
(8)一種存儲由視頻解碼器執(zhí)行的視頻解碼程序的記錄介質(zhì),所述視頻解碼器對用視頻編碼系統(tǒng)進行編碼的流進行解碼,通過對多個劃分塊的圖像進行編碼來獲得編碼流,所述視頻解碼程序在由所述視頻解碼器執(zhí)行時,實現(xiàn)包括以下步驟的過程:
由處理器對塊行中所包含的塊的流進行熵解碼,所述塊行中每個塊行中的塊的流與所述塊行中相應(yīng)的一個塊行中的塊的流被并行地熵解碼,所述塊行中的每個塊行表示塊的陣列;
計算所述塊行中所包含的塊的量化參數(shù)的預(yù)測值,所述塊行中的每個塊行中的塊的預(yù)測值與所述塊行中相應(yīng)的一個塊行中的塊的預(yù)測值并行地計算;以及
對于所述塊行中所包含的塊產(chǎn)生解碼像素,關(guān)于所述塊行中的每個塊行中的塊的解碼像素與關(guān)于所述塊行中相應(yīng)的一個塊行中的塊的解碼像素并行地產(chǎn)生,通過利用在并行熵解碼處理中所解碼的數(shù)據(jù)和所述預(yù)測值,對所述解碼像素中的每一個進行解碼,其中,
當(dāng)以n個塊行為單位并行地執(zhí)行預(yù)測值計算處理,并且n的值是2或更大值時,對第(k–1)塊行中的處理塊執(zhí)行預(yù)測值計算處理,所述第(k–1)塊行中的處理塊比第k塊行中的處理塊在水平位置上在前至少一個塊,從而在并行處理中通過參考與在所述第(k–1)塊行中的處理塊相對應(yīng)的、在所述第k塊行中已處理的塊,計算在所述第(k–1)塊行中的處理塊的預(yù)測值。
(9)一種存儲由視頻編碼器執(zhí)行的視頻編碼程序的記錄介質(zhì),所述視頻編碼器對圖像的多個劃分塊中的每個執(zhí)行視頻編碼處理,所述視頻編碼程序在由所述視頻編碼器執(zhí)行時,實現(xiàn)包括以下步驟的過程:
由處理器產(chǎn)生包括塊行中所包含的塊的量化的正交變換系數(shù)的編碼數(shù)據(jù),所述塊行中的每個塊行中的塊的編碼數(shù)據(jù)與所述塊行中相應(yīng)一個塊行中的塊的編碼數(shù)據(jù)并行地產(chǎn)生,所述塊行的每個塊行均表示塊的陣列;
計算所述塊行中所包含的塊的量化參數(shù)的預(yù)測值,所述塊行中的每個塊行中的塊的預(yù)測值與所述塊行中相應(yīng)一個塊行中的塊的預(yù)測值并行地計算;以及
利用所述編碼數(shù)據(jù)和所述預(yù)測值,對所述塊行中所包含的塊進行熵編碼,所述塊行中的每個塊行中的塊與所述塊行中相應(yīng)一個塊行中的塊并行地熵編碼,其中,
當(dāng)以n個塊行為單位并行地執(zhí)行預(yù)測值計算處理,并且n的值是2或更大值時,對第(k–1)塊行中的處理塊執(zhí)行預(yù)測值計算處理,所述第(k–1)塊行中的處理塊比第k塊行中的處理塊在水平位置上在前至少一個塊,從而在并行處理中通過參考與所述第(k–1)塊行中的處理塊對應(yīng)的所述第k塊行中已處理的塊,計算所述第(k–1)塊行中的所述處理塊的預(yù)測值。
根據(jù)實施方式和變形描述了所公開的技術(shù);然而,所公開的技術(shù)不限于所公開的實施方式。在權(quán)利要求中所描述的本發(fā)明的范圍內(nèi)可進行各種變化和修改。此外,可以應(yīng)用對前述實施方式和變形的全部部件或部分部件的組合。
本文所列舉的所有示例和條件語言意在教學(xué)目的,以幫助讀者理解發(fā)明人為推進現(xiàn)有技術(shù)所貢獻的本發(fā)明和構(gòu)思,應(yīng)理解為不受限于這些具體列舉的示例和條件,也不受限于在涉及示出本發(fā)明的優(yōu)劣的說明書中的這種示例的組織。盡管已詳細地描述了本發(fā)明的實施方式,但應(yīng)理解的是,在不背離本發(fā)明的思想和范圍的情況下,可以做出各種變化、替代和改變。
本專利申請是基于并且要求于2012年1月20提交的日本專利申請第2012-010465號的優(yōu)先權(quán),其全部內(nèi)容通過引用結(jié)合在本文中。