技術領域
本發(fā)明涉及視頻譯碼,并且更確切地說,涉及用于對視頻數(shù)據(jù)進行濾波的技術。
背景技術:
數(shù)字視頻能力可并入到廣泛范圍的裝置中,包含數(shù)字電視、數(shù)字直播系統(tǒng)、無線廣播系統(tǒng)、個人數(shù)字助理(PDA)、膝上型或桌上型計算機、數(shù)碼相機、數(shù)字記錄裝置、數(shù)字媒體播放器、視頻游戲裝置、視頻游戲控制臺、蜂窩式或衛(wèi)星無線電電話、視頻電話會議裝置及其類似物。數(shù)字視頻裝置實施視頻壓縮技術,例如通過MPEG-2、MPEG-4、ITU-T H.263、ITU-T H.264/MPEG-4第10部分、高級視頻譯碼(AVC)、目前正在開發(fā)的高效率視頻譯碼(HEVC)標準及此類標準的擴展部分定義的標準中描述的技術,以便更有效地發(fā)射、接收及存儲數(shù)字視頻信息。
視頻壓縮技術包含空間預測和/或時間預測,以減少或移除視頻序列中所固有的冗余。對于基于塊的視頻譯碼,一視頻圖片或切片可以分割成多個塊。每一塊可被進一步分割。使用相對于同一圖片或切片中相鄰塊中的參考樣本的空間預測來對經(jīng)幀內(nèi)譯碼(I)的圖片或切片中的塊進行編碼。經(jīng)幀間譯碼(P或B)圖片或切片中的塊可以使用相對于同一圖片或切片中相鄰塊中的參考樣本的空間預測或相對于其它參考圖片中的參考樣本的時間預測。空間或時間預測產(chǎn)生待譯碼塊的預測性塊(其也可被稱作“預測塊”)。殘余數(shù)據(jù)表示待譯碼原始塊與預測塊之間的像素差。
經(jīng)幀間譯碼塊是根據(jù)指向形成預測塊的參考樣本塊的運動向量和指示經(jīng)譯碼塊與預測塊之間的差的殘余數(shù)據(jù)編碼的。根據(jù)幀內(nèi)譯碼模式和殘差數(shù)據(jù)來對經(jīng)幀內(nèi)譯碼塊進行編碼。為了進一步壓縮,可將殘余數(shù)據(jù)從像素域變換到變換域,從而產(chǎn)生殘余變換系數(shù),可接著量化所述殘余變換系數(shù)。
技術實現(xiàn)要素:
一般來說,本發(fā)明涉及用于確定塊的邊界強度值的技術,所述塊具有以幀內(nèi)塊復制模式譯碼(例如,編碼或解碼)的相鄰塊或所述塊自身以幀內(nèi)塊復制模式譯碼。以此方式,在使用幀內(nèi)塊復制時,以獨立的方式確定邊界強度值,而非利用用于幀間或幀內(nèi)預測的邊界強度值計算。根據(jù)邊界強度值,視頻譯碼器(例如,視頻編碼器或視頻解碼器)可確定應用解塊濾波的方式。
本發(fā)明還描述用于確定是否應存儲圖片內(nèi)一區(qū)域的像素值的實例技術。舉例來說,在幀內(nèi)塊復制模式中,從與塊在同一圖片中的參考塊的未經(jīng)濾波像素值預測所述塊。然而,并非所述圖片內(nèi)的所有塊或區(qū)域都可用于幀內(nèi)塊復制模式。在一些實例中,如果確定了一區(qū)域不包含用作幀內(nèi)塊譯碼的參考塊的塊,那么視頻譯碼器可不存儲所述區(qū)域的未經(jīng)濾波像素值。
在一個實例中,本發(fā)明描述一種處理視頻數(shù)據(jù)的方法,所述方法包括:確定視頻數(shù)據(jù)的圖片中的當前塊的譯碼模式和視頻數(shù)據(jù)的圖片中的相鄰塊的譯碼模式;基于當前塊或相鄰塊中的一者為經(jīng)幀內(nèi)塊復制(IBC)譯碼塊且另一塊為經(jīng)幀間譯碼塊而執(zhí)行邊界強度值確定過程以確定邊界強度值,其中所述邊界強度值確定過程不包含識別經(jīng)幀間譯碼塊的運動向量,且其中所述邊界強度值確定過程不同于在當前塊或相鄰塊中的一者經(jīng)幀內(nèi)譯碼且另一者經(jīng)IBC譯碼時的邊界強度值確定過程;以及基于所確定的邊界強度值沿當前塊與相鄰塊之間的邊緣進行解塊濾波。
在一個實例中,本發(fā)明描述一種用于處理視頻數(shù)據(jù)的裝置,所述裝置包括:存儲器,其經(jīng)配置以存儲視頻數(shù)據(jù)的相鄰塊;以及視頻譯碼器,其經(jīng)配置以進行以下操作:確定視頻數(shù)據(jù)的圖片中的當前塊的譯碼模式和視頻數(shù)據(jù)的圖片中的相鄰塊的譯碼模式;基于當前塊或相鄰塊中的一者為經(jīng)幀內(nèi)塊復制(IBC)譯碼塊且另一塊為經(jīng)幀間譯碼塊而執(zhí)行邊界強度值確定過程以確定邊界強度值,其中所述邊界強度值確定過程不包含識別經(jīng)幀間譯碼塊的運動向量,且其中所述邊界強度值確定過程不同于在當前塊或相鄰塊中的一者經(jīng)幀內(nèi)譯碼且另一者經(jīng)IBC譯碼時的邊界強度值確定過程;以及基于所確定的邊界強度值沿當前塊與相鄰塊之間的邊緣進行解塊濾波。
在一個實例中,本發(fā)明描述一種處理視頻數(shù)據(jù)的裝置,所述裝置包括:用于確定視頻數(shù)據(jù)的圖片中的當前塊的譯碼模式和視頻數(shù)據(jù)的圖片中的相鄰塊的譯碼模式的裝置;用于基于當前塊或相鄰塊中的一者為經(jīng)幀內(nèi)塊復制(IBC)譯碼塊且另一塊為經(jīng)幀間譯碼塊而執(zhí)行邊界強度值確定過程以確定邊界強度值的裝置,其中所述邊界強度值確定過程不包含識別經(jīng)幀間譯碼塊的運動向量,且其中所述邊界強度值確定過程不同于在當前塊或相鄰塊中的一者經(jīng)幀內(nèi)譯碼且另一者經(jīng)IBC譯碼時的邊界強度值確定過程;以及用于基于所確定的邊界強度值沿當前塊與相鄰塊之間的邊緣進行解塊濾波的裝置。
在一個實例中,本發(fā)明描述一種上面存儲有指令的非暫時性計算機可讀儲存媒體,所述指令在經(jīng)執(zhí)行時使得用于處理視頻數(shù)據(jù)的裝置的一或多個處理器進行以下操作:確定視頻數(shù)據(jù)的圖片中的當前塊的譯碼模式和視頻數(shù)據(jù)的圖片中的相鄰塊的譯碼模式;基于當前塊或相鄰塊中的一者為經(jīng)幀內(nèi)塊復制(IBC)譯碼塊且另一塊為經(jīng)幀間譯碼塊而執(zhí)行邊界強度值確定過程以確定邊界強度值,其中所述邊界強度值確定過程不包含識別經(jīng)幀間譯碼塊的運動向量,且其中所述邊界強度值確定過程不同于在當前塊或相鄰塊中的一者經(jīng)幀內(nèi)譯碼且另一者經(jīng)IBC譯碼時的邊界強度值確定過程;以及基于所確定的邊界強度值沿當前塊與相鄰塊之間的邊緣進行解塊濾波。
在附圖和下文描述中陳述本發(fā)明的一或多個實例的細節(jié)。其它特征、目標和優(yōu)點將從所述描述和圖式以及權利要求書而顯而易見。
附圖說明
圖1是說明可以實施本發(fā)明的技術的實例視頻編碼和解碼系統(tǒng)的框圖。
圖2是說明可以實施本發(fā)明的技術的實例視頻編碼器的框圖。
圖3是說明可以實施本發(fā)明的技術的實例視頻解碼器的框圖。
圖4A到4I是說明相鄰塊的不同譯碼模式的不同組合的概念圖。
圖5說明可對其執(zhí)行解塊濾波的相鄰塊。
圖6是說明幀內(nèi)塊復制(幀內(nèi)BC)過程的實例的圖式。
圖7說明用于合并模式和AMVP模式的空間相鄰運動向量候選者。
圖8是說明針對圖片中的譯碼單元(CU)的實例幀內(nèi)塊復制(IBC)預測分配的概念圖。
圖9是說明根據(jù)本發(fā)明的一個實例技術的流程圖。
圖10是說明根據(jù)本發(fā)明的一個實例技術的流程圖。
具體實施方式
本發(fā)明描述用于解塊濾波的邊界強度值確定的實例技術。舉例來說,本發(fā)明描述在啟用幀內(nèi)塊復制(IBC)模式(例如用于屏幕內(nèi)容譯碼)時使得能夠改善解塊濾波效果的方法。關于屏幕內(nèi)容譯碼描述實例技術,但所述實例技術不應被視為限于屏幕內(nèi)容譯碼。
在重建塊之后,可使用解塊濾波過程來檢測塊邊界處的偽影且通過應用所選擇的濾波器使塊偽影變細。舉例來說,一個塊包含四個塊邊界(例如,邊緣):頂部邊緣、底部邊緣、左側邊緣和右側邊緣。因此,一個塊可包含至多四個相鄰塊:頂部相鄰塊、底部相鄰塊、左側相鄰塊和右側相鄰塊。解塊濾波過程可以使沿與對應相鄰塊的邊緣的塊偽影變細,且針對每一邊界單獨地作出濾波決策。
為易于理解,本發(fā)明將所述技術描述為被應用于與相鄰塊形成邊緣的當前塊。視頻譯碼器(例如,視頻編碼器或視頻解碼器)可重建當前塊且檢索相鄰塊的樣本或像素值,并且沿由所述當前塊與相鄰塊形成的邊緣進行解塊濾波。視頻譯碼器可對當前塊中接近于所述邊緣的像素值執(zhí)行解塊濾波,并且將所得經(jīng)解塊濾波塊存儲于經(jīng)解碼圖片緩沖器(DPB)中。
舉例來說,視頻編碼器可執(zhí)行解塊濾波作為重建的一部分,使得經(jīng)解塊濾波塊可用作后一塊的參考塊。視頻解碼器可執(zhí)行解塊濾波作為重建的一部分,使得在顯示包含當前塊的圖片時移除視覺偽影。視頻解碼器還可執(zhí)行解塊濾波,使得在當前塊用作后一塊的參考塊時,視頻解碼器正使用視頻編碼器用于編碼所述后一塊的相同樣本或像素值來重建所述后一塊。
本發(fā)明將所述技術描述為用視頻譯碼器加以實施,因為視頻編碼器和視頻解碼器兩者均執(zhí)行解塊濾波的大體上類似功能。視頻譯碼器一般用于指視頻編碼器和視頻解碼器,且與解塊濾波有關的技術可為用于處理視頻數(shù)據(jù)的技術的一部分。舉例來說,用于處理視頻數(shù)據(jù)的裝置包含被配置成執(zhí)行本發(fā)明中所描述的實例技術的視頻譯碼器。
解塊濾波可并非應用于每一個例。實際上,視頻譯碼器可確定是否沿當前塊與相鄰塊之間的邊緣應用解塊濾波。舉例來說,視頻譯碼器可確定邊界強度值,且基于所確定的邊界強度值沿邊緣進行解塊濾波。
本發(fā)明描述在IBC(幀內(nèi)塊復制)模式用于形成邊緣的塊中的至少一者時使用的實例技術。在IBC模式中,使用與經(jīng)預測的塊在同一圖片中的參考塊來預測所述塊。這個參考塊通過塊向量加以識別,所述塊向量定義圖片內(nèi)的參考塊相對于所述圖片中正譯碼的當前塊的位移。
在本發(fā)明中,視頻譯碼器基于形成邊緣的至少一個塊是否是使用IBC模式加以譯碼來確定用于對視頻數(shù)據(jù)圖片中的所述邊緣進行解塊濾波的邊界強度值。視頻譯碼器接著可基于所確定的邊界強度值來確定對所述邊緣進行解塊濾波的方式。本發(fā)明的濾波技術可用于給定視頻塊的一些或所有邊緣上,例如頂部邊緣、右側邊緣、左側邊緣或底部邊緣。
作為一個實例,如果形成邊緣的當前塊或相鄰塊是以IBC模式譯碼的,那么視頻譯碼器可設定邊界強度值等于一特定值(例如,一)。作為另一實例,如果形成邊緣的當前塊或相鄰塊是以IBC模式譯碼的,那么視頻譯碼器可確定以IBC模式譯碼的這個塊的幀內(nèi)塊復制參考塊(IBC參考塊)。視頻譯碼器接著可確定所述IBC參考塊中任一像素是否是以幀內(nèi)預測模式譯碼的。如果所述IBC參考塊中任一像素是以幀內(nèi)預測模式譯碼的,那么視頻譯碼器可確定邊界強度值等于第一值(例如,二);否則,視頻譯碼器可確定邊界強度等于與第一值不同的第二值(例如,一)。
作為另一實例,如果形成邊緣的當前塊或相鄰塊是以IBC模式譯碼的,那么視頻譯碼器可確定以IBC模式譯碼的這個塊的幀內(nèi)塊復制參考塊(IBC參考塊)。視頻譯碼器接著可確定所述IBC參考塊中任一像素是否是以幀內(nèi)預測模式或IBC模式譯碼的。如果所述IBC參考塊中任一像素是以幀內(nèi)預測模式或IBC模式譯碼的,那么視頻譯碼器可確定邊界強度值等于第一值(例如,二);否則,視頻譯碼器可確定邊界強度等于與第一值不同的第二值(例如,一)。
在一些實例中,可存在對解塊濾波過程施加的約束條件。舉例來說,如果當前塊或相鄰塊是以幀內(nèi)預測模式譯碼的,那么無論是當前塊還是相鄰塊以IBC模式加以譯碼,視頻譯碼器都可設定邊界強度值等于一特定值(例如,二)。如果當前塊和相鄰塊都不是以幀內(nèi)預測模式譯碼的,當前塊或相鄰塊中的一者以IBC模式加以譯碼且另一者以幀間預測模式加以譯碼,那么視頻譯碼器可基于用于當前塊或相鄰塊中的一者以IBC模式加以譯碼時的上述實例技術來設定邊界強度值。
經(jīng)幀內(nèi)預測塊的特性可使得其需要更強力的解塊濾波。因此,如果當前塊或相鄰塊中的一者是經(jīng)幀內(nèi)預測的,那么即使另一塊是以IBC模式譯碼或以幀間預測模式譯碼的,視頻譯碼器也可僅基于塊中以幀內(nèi)預測模式譯碼的一者確定邊界強度值?;诮?jīng)幀間預測塊的邊界強度確定可為復雜的且包含識別經(jīng)幀間預測塊的運動向量。因此,如果當前塊或相鄰塊中的一者是以IBC模式譯碼的,那么即使另一塊是以幀間預測模式譯碼的,視頻譯碼器也可僅基于塊中以IBC模式譯碼的一者確定邊界強度值。
以此方式,本發(fā)明中描述的技術提供應用于經(jīng)幀內(nèi)預測塊與經(jīng)幀間預測塊的邊界強度值判定之間的中間過程以用于經(jīng)IBC預測塊的邊界強度值判定。舉例來說,經(jīng)IBC譯碼塊(即,以IBC模式譯碼的塊)可不具有與經(jīng)幀內(nèi)譯碼塊(即,以幀內(nèi)預測模式譯碼的塊)類似的特性。因此,如果相鄰塊中無一者是經(jīng)幀內(nèi)譯碼的,那么在塊中的一者經(jīng)IBC譯碼時的邊界強度值應小于在塊中的一者經(jīng)幀內(nèi)譯碼時的邊界強度值。然而,依靠基于用于經(jīng)幀間譯碼塊(例如,以幀間預測模式譯碼的塊)的技術的邊界強度值判定可以是極度復雜的。就本發(fā)明中描述的技術來說,保留在塊中的一者是經(jīng)幀內(nèi)譯碼時的邊界強度值確定,而不一定需要用于經(jīng)IBC譯碼塊的邊界強度確定與用于經(jīng)幀間譯碼塊的邊界強度確定一樣復雜。
舉例來說,視頻譯碼器可確定視頻數(shù)據(jù)圖片中的當前塊的譯碼模式和所述視頻數(shù)據(jù)圖片中的相鄰塊的譯碼模式。視頻譯碼器可基于執(zhí)行以下技術中的一者來確定邊界強度值。視頻譯碼器可基于以幀內(nèi)預測模式譯碼且另一塊以幀內(nèi)塊復制(IBC)模式譯碼的當前塊或相鄰塊中的至少一者來執(zhí)行第一邊界強度值確定過程,或基于以IBC模式譯碼且均未以幀內(nèi)預測模式譯碼的當前塊或相鄰塊中的至少一者來執(zhí)行第二、不同的邊界強度值確定過程。第二邊界強度值確定過程不包含識別非經(jīng)IBC譯碼塊(例如,經(jīng)幀間預測塊)的運動向量。視頻譯碼器可基于所確定的邊界強度值沿當前塊與相鄰塊之間的邊緣進行解塊濾波。
除用于確定邊界強度值的上述實例技術外,本發(fā)明還描述用于作為IBC模式的一部分的數(shù)據(jù)存儲的技術。舉例來說,當塊是以IBC模式譯碼時,所述塊的塊向量識別參考塊,如上文所描述。然而,視頻譯碼器基于參考塊的未經(jīng)濾波像素值以IBC方式預測(例如,以IBC方式譯碼)塊,而非使用參考塊的經(jīng)濾波(例如,經(jīng)由解塊濾波過程或某一其它濾波進行濾波的)像素值。
因此,為了實施IBC,視頻譯碼器可需要將圖片的先前經(jīng)解碼區(qū)域的未經(jīng)濾波像素值存儲于存儲器中,且為了實施幀間預測,視頻譯碼器可需要將圖片的先前經(jīng)解碼區(qū)域的經(jīng)濾波像素值存儲于存儲器中。額外存儲和存儲器存取可在視頻譯碼過程中產(chǎn)生瓶頸。
然而,并非圖片的所有區(qū)域都可用于IBC譯碼(例如,IBC預測)。因此,存儲圖片的所有區(qū)域的未經(jīng)濾波像素值可為不必要的。通過限制需要存儲于存儲器中的數(shù)據(jù)的量,所述技術可促進視頻處理效率。
在一些實例中,視頻編碼器可確定圖片中的一區(qū)域?qū)⒉挥糜贗BC譯碼,且可在位流中傳信指示圖片中的所述區(qū)域不用于IBC譯碼的信息。視頻解碼器可從所述位流接收所述信息且確定圖片中的所述區(qū)域不用于IBC。對于經(jīng)確定將不用于IBC譯碼的區(qū)域,視頻編碼器和視頻解碼器可分別不將未經(jīng)濾波像素值存儲于存儲器中,從而減少存取存儲器的次數(shù)和存儲于存儲器中的數(shù)據(jù)的量。此減少促進存儲器帶寬利用。
圖1是說明可利用用于對視頻數(shù)據(jù)進行濾波的技術的實例視頻編碼和解碼系統(tǒng)10的框圖。如圖1中所展示,系統(tǒng)10包含源裝置12,其提供稍后待由目的地裝置14解碼的經(jīng)編碼視頻數(shù)據(jù)。確切地說,源裝置12經(jīng)由計算機可讀媒體16將視頻數(shù)據(jù)提供到目的地裝置14。源裝置12和目的地裝置14可包括廣泛范圍的裝置中的任一者,包含臺式計算機、筆記型(即,膝上型)計算機、平板計算機、機頂盒、例如所謂的“智能”電話的電話手持機、所謂的“智能”板、電視、相機、顯示裝置、數(shù)字媒體播放器、視頻游戲控制臺、視頻流式傳輸裝置或其類似者。在一些情況下,可裝備源裝置12和目的地裝置14以用于無線通信。
目的地裝置14可經(jīng)由計算機可讀媒體16接收待解碼的經(jīng)編碼視頻數(shù)據(jù)。計算機可讀媒體16可包括能夠?qū)⒔?jīng)編碼視頻數(shù)據(jù)從源裝置12移動到目的地裝置14的任一類型的媒體或裝置。在一個實例中,計算機可讀媒體16可包括通信媒體以使源裝置12能夠?qū)崟r地將經(jīng)編碼視頻數(shù)據(jù)直接發(fā)射到目的地裝置14??筛鶕?jù)通信標準(例如,無線通信協(xié)議)調(diào)制經(jīng)編碼視頻數(shù)據(jù),并將其發(fā)射到目的地裝置14。通信媒體可包括任何無線或有線通信媒體,例如射頻(RF)頻譜或一或多個物理傳輸線。通信媒體可形成分組網(wǎng)絡(例如,局域網(wǎng)、廣域網(wǎng)或全球網(wǎng)絡,例如因特網(wǎng))的部分。通信媒體可包含路由器、交換器、基站或任何其它可用于促進從源裝置12到目的地裝置14的通信的設備。
在一些實例中,經(jīng)編碼數(shù)據(jù)可以從輸出接口22輸出到存儲裝置。類似地,經(jīng)編碼數(shù)據(jù)可通過輸入接口從存儲裝置存取。存儲裝置可包含多種分布式或本地存取的數(shù)據(jù)存儲媒體中的任一者,例如硬盤驅(qū)動器、藍光光盤、DVD、CD-ROM、快閃存儲器、易失性或非易失性存儲器或任何其它用于存儲經(jīng)編碼視頻數(shù)據(jù)的合適的數(shù)字存儲媒體。在另一實例中,存儲裝置可對應于文件服務器或另一可存儲源裝置12產(chǎn)生的經(jīng)編碼視頻的中間存儲裝置。
目的地裝置14可經(jīng)由流式傳輸或下載從存儲裝置存取所存儲的視頻數(shù)據(jù)。文件服務器可為能夠存儲經(jīng)編碼視頻數(shù)據(jù)且將所述經(jīng)編碼視頻數(shù)據(jù)發(fā)射到目的地裝置14的任何類型的服務器。實例文件服務器包含萬維網(wǎng)服務器(例如,用于網(wǎng)站)、FTP服務器、網(wǎng)絡連接存儲(NAS)裝置或本地磁盤驅(qū)動器。目的地裝置14可以通過任何標準數(shù)據(jù)連接(包含因特網(wǎng)連接)來存取經(jīng)編碼視頻數(shù)據(jù)。這可包含無線信道(例如,Wi-Fi連接)、有線連接(例如,DSL、電纜調(diào)制解調(diào)器等),或適合于存取存儲在文件服務器上的經(jīng)編碼視頻數(shù)據(jù)的兩者的組合。經(jīng)編碼視頻數(shù)據(jù)從存儲裝置的發(fā)射可能是流式傳輸發(fā)射、下載發(fā)射或其組合。
本發(fā)明的技術未必限于無線應用或設定。所述技術可以應用于支持多種多媒體應用中任一者的視頻譯碼,所述多媒體應用例如空中協(xié)議電視廣播、有線電視發(fā)射、衛(wèi)星電視發(fā)射、因特網(wǎng)串流視頻發(fā)射(例如動態(tài)自適應HTTP串流(DASH))、經(jīng)編碼到數(shù)據(jù)存儲媒體上的數(shù)字視頻、存儲在數(shù)據(jù)存儲媒體上的數(shù)字視頻的解碼,或其它應用。在一些實例中,系統(tǒng)10可經(jīng)配置以支持單向或雙向視頻發(fā)射,以支持例如視頻流式傳輸、視頻回放、視頻廣播和/或視頻電話等應用。
在圖1的實例中,源裝置12包含視頻源18、視頻編碼器20和輸出接口22。目的地裝置14包含輸入接口28、視頻解碼器30和顯示裝置32。根據(jù)本發(fā)明,源裝置12的視頻編碼器20可經(jīng)配置以應用用于在視頻譯碼中執(zhí)行變換的技術。在其它實例中,源裝置和目的地裝置可包含其它組件或布置。舉例來說,源裝置12可從外部視頻源18(例如,外部相機)接收視頻數(shù)據(jù)。同樣,目的地裝置14可與外部顯示裝置介接,而非包含集成式顯示裝置。
圖1的所說明系統(tǒng)10僅為一個實例。用于在視頻譯碼中執(zhí)行濾波的技術可由任何數(shù)字視頻編碼和/或解碼裝置執(zhí)行。盡管大體上本發(fā)明的技術通過視頻編碼裝置執(zhí)行,但是所述技術還可以通過視頻編解碼器執(zhí)行。此外,本發(fā)明的技術還可由視頻預處理器執(zhí)行。源裝置12和目的地裝置14僅為此類譯碼裝置的實例,其中源裝置12產(chǎn)生經(jīng)譯碼視頻數(shù)據(jù)以供發(fā)射到目的地裝置14。在一些實例中,裝置12、14可以基本上對稱的方式操作,使得裝置12、14中的每一者包含視頻編碼和解碼組件。因此,系統(tǒng)10可支持視頻裝置12、14之間的單向或雙向視頻發(fā)射以例如用于視頻流式傳輸、視頻回放、視頻廣播或視頻電話。
源裝置12的視頻源18可以包含視頻捕獲裝置,例如攝像機、含有先前所捕獲視頻的視頻存檔和/或用于從視頻內(nèi)容提供者接收視頻的視頻饋送接口。作為另一替代方案,視頻源18可產(chǎn)生基于計算機圖形的數(shù)據(jù)作為源視頻,或?qū)崨r視頻、存檔視頻與計算機產(chǎn)生的視頻的組合。在一些情況下,如果視頻源18為攝像機,那么源裝置12和目的地裝置14可形成所謂的相機電話或視頻電話。然而,如上文所提及,本發(fā)明中所描述的技術可大體上適用于視頻譯碼,且可應用于無線和/或有線應用。在每一情況下,捕獲、預先捕獲或計算機產(chǎn)生的視頻可由視頻編碼器20編碼。經(jīng)編碼視頻信息可接著由輸出介面22輸出到計算機可讀媒體16上。
計算機可讀媒體16可包含瞬時媒體,例如無線廣播或有線網(wǎng)絡發(fā)射,或存儲媒體(也就是說,非暫時性存儲媒體),例如硬盤、快閃驅(qū)動器、壓縮光盤、數(shù)字視頻光盤、藍光光盤或其它計算機可讀媒體。在一些實例中,網(wǎng)絡服務器(未示出)可從源裝置12接收經(jīng)編碼視頻數(shù)據(jù),且例如經(jīng)由網(wǎng)絡發(fā)射將所述經(jīng)編碼視頻數(shù)據(jù)提供到目的地裝置14。類似地,媒體生產(chǎn)設施(例如,光盤沖壓設施)的計算裝置可從源裝置12接收經(jīng)編碼視頻數(shù)據(jù)且生產(chǎn)含有所述經(jīng)編碼視頻數(shù)據(jù)的光盤。因此,在各種實例中,計算機可讀媒體16可以理解為包含各種形式的一或多個計算機可讀媒體。
目的地裝置14的輸入接口28從計算機可讀媒體16接收信息。計算機可讀媒體16的信息可以包含由視頻編碼器20定義的語法信息,所述語法信息也被視頻解碼器30使用,所述語法信息包含描述塊和其它經(jīng)譯碼單元(例如,GOP)的特性和/或處理的語法元素。顯示裝置32將經(jīng)解碼視頻數(shù)據(jù)顯示給用戶,且可包括多種顯示裝置中的任一者,例如陰極射線管(CRT)、液晶顯示器(LCD)、等離子顯示器、有機發(fā)光二極管(OLED)顯示器或另一類型的顯示裝置。
視頻編碼器20和視頻解碼器30各自可實施為多種合適的編碼器或解碼器電路中的任一者(如果適用),例如一或多個微處理器、數(shù)字信號處理器(DSP)、專用集成電路(ASIC)、現(xiàn)場可編程門陣列(FPGA)、離散邏輯電路、軟件、硬件、固件或其任何組合。當部分地在軟件中實施所述技術時,裝置可將用于軟件的指令存儲在合適的非暫時性計算機可讀媒體中,且使用一或多個處理器在硬件中執(zhí)行所述指令以執(zhí)行本發(fā)明的技術。視頻編碼器20和視頻解碼器30中的每一者可包含在一或多個編碼器或解碼器中,所述編碼器或解碼器中的任一者可集成為組合式視頻編碼器/解碼器(編解碼器)的部分。包含視頻編碼器20和/或視頻解碼器30的裝置可包括集成電路、微處理器和/或無線通信裝置,例如,蜂窩式電話。
盡管圖1中未展示,但在一些方面中,視頻編碼器20和視頻解碼器30可各自與音頻編碼器和解碼器集成,且可包含適當MUX-DEMUX單元或其它硬件和軟件以處置共同數(shù)據(jù)流或單獨數(shù)據(jù)流中的音頻和視頻兩者的編碼。如果適用,那么MUX-DEMUX單元可符合ITU H.223多路復用器協(xié)議,或例如用戶數(shù)據(jù)報協(xié)議(UDP)等其它協(xié)議。
本發(fā)明可大體涉及視頻編碼器20將某些信息“傳信”到例如視頻解碼器30的另一裝置。然而,應理解,視頻編碼器20可通過使某些語法元素與視頻數(shù)據(jù)的各種經(jīng)編碼部分相關聯(lián)來傳信信息。也就是說,視頻編碼器20可以通過將某些語法元素存儲到視頻數(shù)據(jù)的各種經(jīng)編碼部分的標頭來“傳信”數(shù)據(jù)。在一些情況下,這類語法元素可在由視頻解碼器30接收和解碼之前被編碼和存儲(例如,存儲到存儲裝置24)。因而,術語“傳信”可大體上指代用于解碼經(jīng)壓縮視頻數(shù)據(jù)的語法或其它數(shù)據(jù)的通信,不論所述通信是實時或幾乎實時發(fā)生還是在一段時間中發(fā)生,例如可能在編碼時將語法元素存儲到媒體上的時候發(fā)生,接著可以在存儲到這個媒體上之后的任何時間由解碼裝置檢索。
視頻編碼器20和視頻解碼器30可根據(jù)視頻壓縮標準操作,所述標準例如ITU-T H.264標準,或者稱為MPEG-4第10部分高級視頻譯碼(AVC),或此類標準的擴展。ITU-T H.264/MPEG-4(AVC)標準是作為被稱為聯(lián)合視頻小組(JVT)的集體聯(lián)盟的產(chǎn)品而由ITU-T視頻譯碼專家組(VCEG)連同ISO/IEC移動圖片專家組(MPEG)制定。在一些方面中,本發(fā)明中描述的技術可應用于大體符合H.264標準的裝置。H.264標準描述于ITU-T研究組的日期為2005年3月的“ITU-T推薦H.264,用于通用視聽服務的高級視頻譯碼(ITU-T Recommendation H.264,Advanced Video Coding for generic audiovisual services)”中,其在本文中可稱為H.264標準或H.264規(guī)范或H.264/AVC標準或規(guī)范。視頻壓縮標準的其它實例包含MPEG-2和ITU-T H.263。
視頻譯碼標準包含ITU-T H.261、ISO/IEC MPEG-1視覺、ITU-T H.262或ISO/IEC MPEG-2視覺、ITU-T H.263、ISO/IEC MPEG-4視覺和ITU-T H.264(也被稱為ISO/IEC MPEG-4AVC),包含其可縮放視頻譯碼(SVC)和多視圖視頻譯碼(MVC)擴展。近來,新的視頻譯碼標準(即,高效率視頻譯碼(HEVC))的設計已由ITU-T視頻譯碼專家組(VCEG)和ISO/IEC動畫專家組(MPEG)的視頻譯碼聯(lián)合合作小組(JCT-VC)定案。最新的HEVC草案說明書(且下文中稱為HEVC WD)可從http://phenix.int-evry.fr/jct/doc_end_user/documents/15_Geneva/wg11/JCTVC-O1003-v2.zip獲得。對HEVC的范圍擴展(即HEVC RExt)也正由JCT-VC開發(fā)。范圍擴展的最新工作草案(WD)(在下文中被稱作RExt WD7)可從http://phenix.int-evry.fr/jct/doc_end_user/documents/17_Valencia/wg11/JCTVC-Q1005-v4.zip獲得。
在此文件中,JCTVC-Q1003中的HEVC規(guī)范文本常常被稱作HEVC版本1。范圍擴展規(guī)范可變成HEVC的版本2。然而,在很大程度上,對于特定技術(例如,運動向量預測),HEVC版本1和范圍擴展規(guī)范在技術上是類似的。因此,每當本發(fā)明提及基于HEVC版本1的改變時,所述相同改變可適用于范圍擴展規(guī)范,且每當本發(fā)明描述重用HEVC版本1模塊時,本發(fā)明實際上也可是指重用HEVC范圍擴展模塊(具有相同子條款)。
近年來,開始研究用于帶有運動的例如文本和圖形的屏幕內(nèi)容材料的新譯碼工具,并且已經(jīng)提出了改進屏幕內(nèi)容的譯碼效率的技術。因為有證據(jù)表明可通過利用屏幕內(nèi)容的特性用新穎的專用譯碼工具來獲得譯碼效率的顯著改進,所以發(fā)出對提議的需要(CfP),其中HEVC標準的可能開發(fā)的未來擴展的目標包含用于屏幕內(nèi)容譯碼的特定工具。邀請公司和組織來響應于此需要而提交建議。此CfP的使用情況和要求描述于MPEG文件N14174中。在第17次JCT-VC會議期間,建立屏幕內(nèi)容譯碼測試模型(SCM),其在http://phenix.int-evry.fr/jct/doc_end_user/documents/17_Valencia/wg11/JCTVC-Q1014-v1.zip處可用。
雖然本發(fā)明的技術不限于任何特定譯碼標準,但所述技術可以與HEVC標準相關。HEVC標準化努力是基于被稱作HEVC測試模型(HM)的視頻譯碼裝置的模型。HM根據(jù)(例如)ITU-T H.264/AVC假定視頻譯碼裝置相對于現(xiàn)有裝置的若干額外能力。舉例來說,雖然H.264提供了九種幀內(nèi)預測編碼模式,但是HM可提供多達三十五種幀內(nèi)預測編碼模式。
一般來說,HEVC標準描述可將視頻圖片劃分成包含亮度樣本和色度樣本兩者的一系列樹塊或最大譯碼單元(LCU)。位流內(nèi)的語法數(shù)據(jù)可以定義LCU(其是就像素數(shù)目來說的最大譯碼單元)的大小。切片包含多個連續(xù)譯碼樹單元(CTU)。CTU中的每一者可包括亮度樣本的譯碼樹塊、色度樣本的兩個對應譯碼樹塊,以及用于對譯碼樹塊的樣本進行譯碼的語法結構。在單色圖片或具有三個單獨顏色平面的圖片中,CTU可包括單個譯碼樹塊和用于對所述譯碼樹塊的樣本進行譯碼的語法結構。
視頻圖片可被分割成一或多個切片。每一樹塊可以根據(jù)四叉樹分裂成譯碼單元(CU)。一般來說,四叉樹數(shù)據(jù)結構包含每個CU一個節(jié)點,其中一個根節(jié)點對應于所述樹塊。如果一個CU分裂成四個子CU,那么對應于CU的節(jié)點包含四個葉節(jié)點,其中的每一者對應于所述子CU中的一者。CU可包括具有亮度樣本陣列、Cb樣本陣列和Cr樣本陣列的圖片的亮度樣本的譯碼塊和色度樣本的兩個對應譯碼塊,以及用于對譯碼塊的樣本進行譯碼的語法結構。在單色圖片或具有三個單獨顏色平面的圖片中,CU可包括單個譯碼塊及用于對所述譯碼塊的樣本進行譯碼的語法結構。譯碼塊是樣本的N×N塊。
四叉樹數(shù)據(jù)結構的每一節(jié)點可提供用于對應CU的語法數(shù)據(jù)。舉例來說,四叉樹中的節(jié)點可包含分裂旗標,其指示對應于所述節(jié)點的CU是否分裂成子CU。用于CU的語法元素可遞歸地定義,且可取決于CU是否分裂成子CU。如果CU未進一步分裂,那么將其稱作葉CU。在本發(fā)明中,葉CU的四個子CU也將被稱作葉CU,即使不存在原始葉CU的明確分裂時也是如此。舉例來說,如果16×16大小的CU不進一步分裂,那么四個8×8子CU也將被稱作葉CU,盡管16×16CU從未分裂。
CU具有與H.264標準的宏塊類似的目的,除了CU不具有大小區(qū)別。舉例來說,樹塊可分裂成四個子節(jié)點(也稱為子CU),且每一子節(jié)點又可為父節(jié)點且可分裂成另外四個子節(jié)點。最后未分裂的子節(jié)點(被稱作四叉樹的葉節(jié)點)包括譯碼節(jié)點,也被稱作葉CU。與經(jīng)譯碼位流相關聯(lián)的語法數(shù)據(jù)可定義樹塊可分裂的最大次數(shù),被稱作最大CU深度,且還可定義譯碼節(jié)點的最小大小。因此,位流還可定義最小譯碼單元(SCU)。本發(fā)明使用術語“塊”來指HEVC上下文中的CU、PU或TU中的任一者或其它標準上下文中的類似數(shù)據(jù)結構(例如,H.264/AVC中的宏塊和其子塊)。
CU包含譯碼節(jié)點和與所述譯碼節(jié)點相關聯(lián)的預測單元(PU)和變換單元(TU)。CU的大小對應于譯碼節(jié)點的大小并且形狀必須是正方形。CU的大小范圍可從8×8像素到具有64×64像素或更大像素的最大值的樹塊的大小。每一CU可以含有一或多個PU和一或多個TU。
一般來說,PU表示對應于相對應的CU的全部或一部分的空間區(qū)域,并且可包含用于檢索PU的參考樣本的數(shù)據(jù)。此外,PU包含與預測有關的數(shù)據(jù)。舉例來說,當PU經(jīng)幀內(nèi)模式編碼時,用于PU的數(shù)據(jù)可以包含在殘余四叉樹(RQT)中,殘余四叉樹可以包含描述用于對應于PU的TU的幀內(nèi)預測模式的數(shù)據(jù)。作為另一實例,當PU經(jīng)幀間模式編碼時,PU可以包含定義PU的一或多個運動向量的數(shù)據(jù)。預測塊可以是其上應用相同預測的樣本的矩形(即,正方形或非正方形)塊。CU的PU可以包括圖片的亮度樣本的預測塊、色度樣本的兩個對應預測塊,以及用于對預測塊樣本進行預測的語法結構。在單色圖片或具有三個單獨顏色平面的圖片中,PU可以包括單個預測塊和用于對預測塊樣本進行預測的語法結構。
因此,在HEVC中,切片中的最大譯碼單元被稱為譯碼樹塊(CTB)。CTB含有四叉樹,所述四叉樹的節(jié)點為譯碼單元。CTB的大小可介于HEVC主規(guī)范中的16×16到64×64的范圍內(nèi)(盡管技術上可支持8×8CTB大小)。盡管譯碼單元(CU)可以與CTB相同大小,但其可以像8×8一樣小。每一譯碼單元用一種模式譯碼。當CU經(jīng)幀間譯碼(經(jīng)幀間預測譯碼或經(jīng)幀間預測)時,其可進一步分割成兩個預測單元(PU)或在不應用進一步分割時僅變成一個PU。當兩個PU存在于一個CU中時,其可為一半大小的矩形或具有CU的1/4或3/4大小的兩個矩形大小。當CU經(jīng)幀間譯碼時,針對每一PU存在一個運動信息集合。另外,每一PU是以獨特幀間預測模式譯碼以導出所述運動信息集合。在HEVC中,最小PU大小為8×4和4×8。
圖片次序計數(shù)(POC)廣泛用于視頻譯碼標準以識別圖片的顯示次序。盡管存在一個經(jīng)譯碼視頻序列內(nèi)的兩個圖片可具有相同POC值的情況,但其通常不在經(jīng)譯碼視頻序列內(nèi)發(fā)生。當位流中存在多個經(jīng)譯碼視頻序列時,具有相同POC值的圖片可能在解碼次序方面彼此更靠近。圖片的POC值通常用于參考圖片列表建構、參考圖片集的導出,就像HEVC和運動向量按比例調(diào)整中一樣。
在將變換(例如,離散余弦變換(DCT)、整數(shù)變換、小波變換或概念上類似的變換)應用于殘余視頻數(shù)據(jù)之后,TU可包含變換域中的系數(shù)。所述殘余數(shù)據(jù)可對應于未經(jīng)編碼圖片的像素與對應于PU的預測值之間的像素差。視頻編碼器20可以形成包含用于CU的殘余數(shù)據(jù)的TU,并且接著變換TU以產(chǎn)生用于CU的變換系數(shù)。變換塊可為其上應用相同變換的樣本的矩形塊。CU的變換單元(TU)可包括亮度樣本的變換塊、色度樣本的兩個對應變換塊和用于對變換塊樣本進行變換的語法結構。在單色圖片或具有三個單獨顏色平面的圖片中,TU可以包括單個變換塊和用于對變換塊樣本進行變換的語法結構。
在變換之后,視頻編碼器20可以執(zhí)行變換系數(shù)的量化。量化大體上指代對變換系數(shù)進行量化以可能地減少用于表示系數(shù)的數(shù)據(jù)的量從而提供進一步壓縮的過程。量化過程可以減少與系數(shù)中的一些或全部相關聯(lián)的位深度。舉例來說,n位值可在量化期間被下舍入到m位值,其中n大于m。
在視頻編碼器20量化系數(shù)塊之后,視頻編碼器20可以對指示經(jīng)量化變換系數(shù)的語法元素進行熵編碼。舉例來說,視頻編碼器20可對指示經(jīng)量化變換系數(shù)的語法元素執(zhí)行上下文自適應二進制算術譯碼(CABAC)。對于熵譯碼,視頻編碼器20根據(jù)特定掃描次序(例如,垂直掃描、水平掃描或?qū)蔷€掃描)掃描經(jīng)量化變換系數(shù)。視頻編碼器20可在位流中輸出經(jīng)熵編碼語法元素。
因此,位流可包含形成視頻數(shù)據(jù)的經(jīng)譯碼表示的位序列。位流可包含經(jīng)譯碼圖片和相關聯(lián)數(shù)據(jù)。經(jīng)譯碼圖片是圖片的經(jīng)譯碼表示。相關聯(lián)數(shù)據(jù)可包含視頻參數(shù)集(VPS)、序列參數(shù)集(SPS)、圖片參數(shù)集(PPS)和其它語法結構。SPS可含有適用于圖片的零或更多序列的參數(shù)。PPS可含有適用于零或更多圖片的參數(shù)。
變換和量化殘余塊造成信息的損耗(例如,經(jīng)逆量化和逆變換塊不同于原始殘余塊)。因此,殘余塊經(jīng)變換且量化的視頻譯碼的實例被稱為有損譯碼。在一些實例中,視頻編碼器20可跳過殘余塊的變換,但量化殘余塊。視頻譯碼的此些實例被稱為變換跳過譯碼。變換跳過譯碼可為有損譯碼的一種變化,因為量化造成信息的損耗。為避免混淆,此描述中使用有損譯碼來指代包含變換和量化兩者的視頻譯碼方法,且此描述中使用變換跳過譯碼來指代跳過變換但仍執(zhí)行量化的視頻譯碼方法。
視頻編碼器20不需要在所有情況下執(zhí)行變換跳過譯碼或有損譯碼。在一些實例中,視頻編碼器20可執(zhí)行無損譯碼。在無損譯碼(有時稱為跨量繞過)中,視頻編碼器20不變換殘余塊且不量化殘余塊。在此實例中,如由視頻解碼器30重建的殘余塊與由視頻編碼器20產(chǎn)生的殘余塊相同,而對于有損譯碼和變換跳過譯碼,如由視頻解碼器30重建的殘余塊可稍微不同于由視頻編碼器20產(chǎn)生的殘余塊。
換句話說,當應用變換時,變換將殘余塊的殘余值從像素域轉換到變換域。在一些實例中,對于變換跳過或變換繞過,殘余數(shù)據(jù)包含來自預測塊與當前塊之間的差的殘余值而無變換應用于殘余值,所述變換將殘余值從像素域轉換到變換域。
在獲得經(jīng)譯碼視頻數(shù)據(jù)后,視頻解碼器30可即刻執(zhí)行通常與相對于視頻編碼器20描述的編碼遍次互逆的解碼遍次。舉例來說,視頻解碼器30可獲得表示來自視頻編碼器20的經(jīng)編碼視頻切片的視頻塊和相關聯(lián)語法元素的經(jīng)編碼視頻位流。視頻解碼器30可以使用包含于位流中的數(shù)據(jù)重建原始的未經(jīng)編碼的視頻序列(例如,或用于有損譯碼的原始殘余的經(jīng)量化版本)。舉例來說,對于有損譯碼,視頻解碼器30可對位流中的語法元素進行熵解碼以確定經(jīng)量化變換系數(shù)。視頻解碼器30可以利用與視頻編碼器20所利用的相同的掃描次序來構建經(jīng)量化殘余塊。視頻解碼器30可隨后對經(jīng)量化變換系數(shù)進行逆量化以確定變換系數(shù)。視頻解碼器30還可以將逆變換應用到變換系數(shù)以確定殘余塊的系數(shù)。
對于變換跳過譯碼,視頻解碼器30可對位流中的語法元素進行熵解碼以確定經(jīng)量化系數(shù),利用與視頻編碼器20所利用的相同的掃描次序來構建經(jīng)量化殘余塊,且隨后對經(jīng)量化系數(shù)進行逆量化以確定殘余塊的系數(shù)。不需要逆變換,因為在編碼過程中跳過了變換。
對于無損譯碼(例如,變換繞過或僅繞過),視頻解碼器30可對位流中的語法元素進行熵解碼,且可利用與視頻編碼器20所使用相同的掃描次序來直接確定殘余塊的系數(shù)。不需要逆量化或變換,因為在編碼過程中跳過了變換和量化兩者。
在任何情況下,視頻解碼器30確定預測塊。預測塊可以與當前塊位于同一圖片(例如,用于幀內(nèi)預測或用于幀內(nèi)BC預測)或不同圖片(例如,用于幀間預測)中。視頻解碼器30使用預測塊中的經(jīng)重建像素值和殘余塊中的對應殘余值(例如,如從經(jīng)編碼位流中獲得)以重建當前塊的像素值(例如,以解碼當前塊)。
HEVC的范圍擴展、屏幕內(nèi)容譯碼擴展或其它視頻譯碼工具可支持幀內(nèi)塊復制(幀內(nèi)BC或IBC)模式。對于許多應用,例如遠程桌面、遠程游戲、無線顯示器、汽車信息娛樂以及云計算(提供幾個實例),這些應用中的視頻內(nèi)容通常是自然內(nèi)容、文本、人工圖形和類似物的組合。在測試和人工圖形區(qū)域中,通常存在重復模式(例如,字符、圖標和符號(提供幾個實例))。幀內(nèi)BC可以被描述為移除這種冗余的專用過程,由此潛在地改進幀內(nèi)譯碼效率。
解塊濾波可應用于以幀間預測模式(例如,經(jīng)幀間譯碼)、幀內(nèi)預測模式(例如,經(jīng)幀內(nèi)譯碼)或IBC模式(例如,經(jīng)IBC譯碼)預測的塊。在HEVC版本1(例如,JCTVC-Q1003中的HEVC規(guī)范文本)中,在圖片重建之后,解塊濾波過程可檢測經(jīng)譯碼塊邊界處的偽影且通過應用所選擇的濾波器使塊偽影變細。針對位于將圖片劃分成8×8樣本塊的柵格上的四個樣本長度的每一邊界單獨地作出濾波決策。
視頻編碼器20和視頻解碼器30兩者都可經(jīng)配置以執(zhí)行解塊濾波過程。舉例來說,視頻編碼器20可經(jīng)配置以執(zhí)行解塊濾波作為重建經(jīng)編碼塊的一部分,使得經(jīng)解塊濾波的經(jīng)重建塊可用作待編碼的后一塊的參考塊。解塊濾波移除偽影,意味著解塊濾波對于將顯示視頻的視頻解碼器30側是有用的。因為視頻解碼器30將執(zhí)行解塊濾波且這些經(jīng)解塊濾波塊將成為視頻解碼器30側上的參考塊,所以視頻編碼器20也可在重建期間執(zhí)行解塊濾波,使得視頻編碼器20側上的參考塊與視頻解碼器30側上的對應參考塊相同。
視頻編碼器20和視頻解碼器30也有可能實施后濾波技術。在此情況下,可能不一定在存儲像素值之前執(zhí)行解塊濾波。實際上,像素值可在稍后由視頻解碼器30顯示之前被濾波。僅提供后濾波的實例作為一個實例,但可能不包含于所有情況中。
在一些實例中,在執(zhí)行解塊濾波過程時,以下三個準則應為真:(1)塊邊界是預測單元邊界或變換單元邊界,(2)邊界強度大于零,和(3)塊邊界的兩側上的信號變化低于指定閾值。當特定額外條件成立時,在塊邊緣上應用強力濾波器而非正常解塊濾波。
所執(zhí)行的解塊濾波的類型可基于用于解塊濾波的兩個塊之間的(例如,當前塊與相鄰塊之間的)邊緣的邊界強度值。在一些情況下,在執(zhí)行用幀內(nèi)BC譯碼的塊的解塊濾波時,可如同所述塊是用幀內(nèi)預測譯碼一般地處理所述塊。也就是說,用于經(jīng)幀內(nèi)預測塊的解塊濾波過程可直接應用于幀內(nèi)BC塊。然而,經(jīng)幀內(nèi)BC譯碼塊可不具有與經(jīng)幀內(nèi)譯碼塊類似的特性。另外,在對經(jīng)幀間預測塊進行解塊濾波時執(zhí)行的一些計算(例如,確定邊界強度(Bs)值,如下文更詳細所描述)可為相對復雜的。
本發(fā)明的技術可包含用于對使用幀內(nèi)BC譯碼的視頻塊進行解塊濾波的技術。舉例來說,在一些情況下,所述技術可包含用于經(jīng)幀內(nèi)BC譯碼塊的解塊濾波過程的改變,使得經(jīng)幀內(nèi)BC預測塊和經(jīng)幀內(nèi)預測塊不使用相同的解塊濾波計算。在一些情況下,本發(fā)明的各方面可包含使用(例如)相對于經(jīng)幀間預測塊的經(jīng)簡化解塊濾波設計。
作為解塊濾波過程的一部分,視頻編碼器20和視頻解碼器30可分別確定形成將對其執(zhí)行解塊濾波過程的邊緣的兩個塊的邊界強度值。邊界強度值指示視頻編碼器20和視頻解碼器30將進行解塊濾波的方式(例如,兩個相鄰塊中每一者中的像素數(shù)目和用于濾波的濾波器系數(shù))。
下表1說明針對兩個相鄰亮度塊之間的邊界確定邊界強度(Bs)值的方式。在表1中,針對經(jīng)幀內(nèi)譯碼塊和經(jīng)幀間譯碼塊給出邊界強度值(例如,其中兩個相鄰塊中的一者或兩者經(jīng)幀內(nèi)譯碼和/或經(jīng)幀間譯碼)。
表1:兩個相鄰亮度塊之間的邊界的BS值的定義
如可從表1看出,如果兩個相鄰塊中的一者(例如,當前塊或相鄰塊中的一者)經(jīng)幀內(nèi)譯碼,那么視頻譯碼器(例如,視頻編碼器20或視頻解碼器30)可設定邊界強度值等于二。如果兩個相鄰塊都經(jīng)幀間譯碼,那么視頻譯碼器可識別所述經(jīng)幀間譯碼塊的運動向量且執(zhí)行額外過程(如ID 3和ID 4中所陳列)以確定邊界強度值是否為一。否則,邊界強度值為零。
表1未說明所述塊中的一者以IBC模式譯碼的情形。在當前SCM的解塊濾波過程中,如同經(jīng)幀內(nèi)譯碼塊一般處理經(jīng)IBC譯碼塊(例如,如果相鄰塊中任一塊經(jīng)IBC譯碼,那么邊界強度值為二)。然而,一些其它技術(例如,第2014/0376634A1號美國專利公開案中的技術)提出,用于經(jīng)IBC譯碼塊的解塊濾波過程可通過將經(jīng)IBC譯碼塊處理為經(jīng)幀內(nèi)譯碼塊或?qū)⒔?jīng)IBC譯碼塊處理為經(jīng)幀間譯碼塊來實現(xiàn)。在第14/743,722號美國申請案中,在解塊濾波過程之前,用識別RefPicList0或RefPicList1中特定參考索引中的參考塊的運動向量將經(jīng)IBC譯碼塊轉換成(例如,處理成)單向預測性經(jīng)幀間譯碼塊,且解塊濾波過程不存在其它改變。
在C.Rosewarne的標準提交文件“關于用于幀內(nèi)塊復制的解塊(On Deblocking for Intra Block Copy)”(JCTVC-R0126,日本,札幌,6月30日到7月9日)(JCTVC-R0126)中,JCTVC-R0126提出一個修改,其中以不同方式處理經(jīng)IBC譯碼塊,而非利用經(jīng)幀內(nèi)譯碼塊或經(jīng)幀間譯碼塊技術。舉例來說,在JCTVC-R0126中,如果邊界的任一側(例如,如果兩個相鄰塊中任一者)經(jīng)IBC譯碼,那么將邊界強度值設定為一。否則,使用上文關于表1所說明的實例。在此情況下,不同于表1中如果任一塊經(jīng)幀內(nèi)譯碼那么邊界強度值為二的情形,如果當前塊或相鄰塊中的一者經(jīng)IBC譯碼且另一者經(jīng)幀內(nèi)譯碼,那么邊界強度值將為一。
用于關于經(jīng)IBC譯碼塊的邊界強度值確定的這些其它技術中的一些可存在問題。舉例來說,經(jīng)IBC譯碼塊可不具有與經(jīng)幀內(nèi)譯碼塊類似的特性,且因此以相同方式處理其可導致不足補償偽影或過度補償偽影的解塊濾波。當兩個塊中的一者經(jīng)IBC譯碼(且另一者非經(jīng)幀內(nèi)譯碼)時使用較小邊界強度值(類似于經(jīng)幀間譯碼塊的情形)以避免沿塊邊界的塊狀偽影將更自然。
然而,將經(jīng)IBC譯碼塊處理為經(jīng)幀間譯碼塊也可能不足以達成合乎需要的濾波結果。舉例來說,如上文關于表1所描述,對于經(jīng)幀間譯碼塊,邊界強度值確定過程包含運動向量識別和比較以及參考圖片識別,其為比用于經(jīng)幀內(nèi)譯碼塊的過程更復雜的過程。因此,將經(jīng)IBC譯碼塊處理為經(jīng)幀間譯碼塊可使得邊界強度值減小(相比于將所述經(jīng)IBC譯碼塊處理為經(jīng)幀內(nèi)譯碼塊),但邊界強度值確定過程可為過度復雜的。
本發(fā)明描述用于經(jīng)幀內(nèi)塊復制譯碼塊(例如,以IBC模式譯碼的塊)的中間邊界強度確定過程的實例技術,以橋接用于經(jīng)幀內(nèi)譯碼塊的邊界強度確定過程與用于經(jīng)幀間譯碼塊的邊界強度確定過程之間的差異。舉例來說,視頻譯碼器(例如,視頻編碼器20或視頻解碼器30)可基于以幀內(nèi)預測模式譯碼的當前塊或相鄰塊中的至少一者來執(zhí)行第一邊界強度值確定過程,且基于以IBC模式譯碼、另一者以非IBC模式譯碼(例如,經(jīng)幀間譯碼)且均未以幀內(nèi)預測模式譯碼的當前塊或相鄰塊中的至少一者來執(zhí)行第二、不同的邊界強度值確定過程。在這個第二邊界強度值確定中,可不存在識別非經(jīng)IBC譯碼塊的運動向量,如當一者為經(jīng)幀間譯碼塊時將進行的那樣。
視頻譯碼器可基于所確定的邊界強度值沿當前塊與相鄰塊之間的邊緣進行解塊濾波。舉例來說,視頻譯碼器可確定對當前塊和相鄰塊中的像素進行解塊濾波的方式(例如,濾波器類型、邊緣每一側上使用的像素數(shù)目、系數(shù)等)。
除了用于解塊濾波的技術外,本發(fā)明中所描述的實例還涉及在IBC模式用于當前圖片中的預測時減小平均帶寬(例如,對存儲器的存取)。這些技術被描述為適用于屏幕內(nèi)容譯碼,包含支持可能的高位深度(超過8位)、不同的色度取樣格式,例如4:4:4、4:2:2、4:2:0、4:0:0等。
如上文所描述,IBC模式將同一圖片內(nèi)先前經(jīng)解碼的未經(jīng)濾波樣本用于其預測。在當前測試模型中,對于IBC模式,搜索范圍是不受限制的且可使用當前圖片的任何未經(jīng)濾波的經(jīng)解碼樣本(全量搜索IBC)。此引入存儲當前圖片的未經(jīng)濾波的經(jīng)解碼樣本(除時間預測所需要的經(jīng)濾波的經(jīng)解碼樣本外)所需要的附加帶寬。
然而,通常并非當前圖片的所有先前經(jīng)解碼的未經(jīng)濾波樣本都用于IBC模式預測,且用量取決于內(nèi)容的特性(例如,文本的用量峰值和圖形序列)且對于相機所捕獲的內(nèi)容最小。因此,始終存儲當前圖片的先前經(jīng)解碼的未經(jīng)濾波樣本從帶寬角度來說是低效的。在一些實例中,視頻編碼器20可指示先前經(jīng)解碼的譯碼樹塊(CTB)中的哪些用于IBC預測,以便視頻解碼器30可僅存儲那些CTB,從而減小平均帶寬。
舉例來說,視頻譯碼器可確定是否參考圖片中的一區(qū)域以用于所述圖片中至少一個塊的使用IBC模式的預測。視頻譯碼器可基于對參考所述區(qū)域以用于使用IBC模式的預測的確定來存儲所述圖片中所述區(qū)域的未經(jīng)濾波像素值,且基于對未參考所述區(qū)域以用于使用IBC模式的預測的確定來避免存儲所述圖片中所述區(qū)域的未經(jīng)濾波像素值。
在此些實例中,視頻譯碼器仍可存儲使用IBC模式的預測不參考的區(qū)域的經(jīng)濾波(例如,經(jīng)解塊濾波、經(jīng)SAO濾波或其它)像素值。這是因為即使經(jīng)濾波像素值從不用于IBC預測,其也可用以形成用于幀間預測目的的參考塊。
圖2是說明可以使用如本發(fā)明中所描述的用于變換的技術的視頻編碼器20的實例的框圖。出于說明的目的,將在HEVC譯碼的上下文中描述視頻編碼器20,但關于其它譯碼標準并不限制本發(fā)明。
視頻編碼器20可執(zhí)行視頻切片內(nèi)的視頻塊的幀內(nèi)和幀間譯碼。幀內(nèi)譯碼依賴于空間預測來減少或移除給定視頻圖片內(nèi)的視頻中的空間冗余。幀間譯碼依賴于時間預測來減少或移除視頻序列的鄰近圖片內(nèi)的視頻中的時間冗余。幀內(nèi)模式(I模式)可指若干基于空間的壓縮模式中的任一者。例如單向預測(P模式)或雙向預測(B模式)的幀間模式可指若干基于時間的壓縮模式中的任一者。幀內(nèi)塊復制模式可類似幀內(nèi)模式依賴于同一圖片內(nèi)的塊,但類似于幀間模式具有塊向量。
在圖2的實例中,視頻編碼器20包含視頻數(shù)據(jù)存儲器38、模式選擇單元40、參考圖片存儲器64、求和器50、變換處理單元52、量化單元54和熵編碼單元56。模式選擇單元40又包含運動補償單元44、運動估計單元42、幀內(nèi)預測單元46、幀內(nèi)BC單元47和分割單元48。為了視頻塊重建,視頻編碼器20還包含逆量化單元58、逆變換單元60、求和器62和濾波單元66。
視頻數(shù)據(jù)存儲器38可存儲待由視頻編碼器20的組件編碼的視頻數(shù)據(jù)??衫鐝囊曨l源18獲得存儲在視頻數(shù)據(jù)存儲器38中的視頻數(shù)據(jù)。參考圖片存儲器64可被稱為經(jīng)解碼圖片緩沖器,其存儲參考視頻數(shù)據(jù)以供用于通過視頻編碼器20例如以幀內(nèi)、幀間或IBC譯碼模式編碼視頻數(shù)據(jù)。視頻數(shù)據(jù)存儲器38和參考圖片存儲器64可由多種存儲器裝置中的任一者形成,例如動態(tài)隨機存取存儲器(DRAM)(包含同步DRAM(SDRAM))、磁阻式RAM(MRAM)、電阻式RAM(RRAM)或其它類型的存儲器裝置。視頻數(shù)據(jù)存儲器38和參考圖片存儲器64可由同一存儲器裝置或單獨的存儲器裝置提供。在各種實例中,視頻數(shù)據(jù)存儲器38可與視頻編碼器20的其它組件一起在芯片上,或相對于那些組件在芯片外。
在編碼過程期間,視頻編碼器20接收待譯碼的視頻圖片或切片。圖片或切片可以劃分成多個視頻塊。運動估計單元42和運動補償單元44相對于一或多個參考圖片中的一或多個塊執(zhí)行所接收視頻塊的幀間預測性譯碼以提供時間壓縮。幀內(nèi)預測單元46可以替代地相對于作為待譯碼的塊的同一圖片或切片中的一或多個相鄰像素值執(zhí)行所接收視頻塊的幀內(nèi)預測性譯碼以提供空間壓縮。視頻編碼器20可執(zhí)行多個譯碼遍次,例如以為每一視頻數(shù)據(jù)塊選擇一種適當?shù)淖g碼模式。
此外,分割單元48可以基于先前譯碼遍次中的先前分割方案的評估將視頻數(shù)據(jù)塊分割成子塊。舉例來說,分割單元48可初始地將圖片或切片分割成LCU,且基于速率失真分析(例如,速率失真最佳化)將LCU中的每一者分割成子CU。模式選擇單元40可以進一步產(chǎn)生指示將LCU分割成子CU的四叉樹數(shù)據(jù)結構。四叉樹的葉節(jié)點CU可以包含一或多個PU和一或多個TU。
模式選擇單元40可例如基于錯誤結果選擇譯碼模式中的一者(幀內(nèi)或幀間),且將所得的經(jīng)幀內(nèi)或幀間譯碼塊提供到求和器50以產(chǎn)生殘余塊數(shù)據(jù),且提供到求和器62以重建用作參考圖片的經(jīng)編碼塊。模式選擇單元40還將語法元素(例如,運動向量、幀內(nèi)模式指示符、分割信息和其它此類語法信息)提供到熵編碼單元56。
運動估計單元42和運動補償單元44可高度集成,但出于概念的目的分別加以說明。由運動估計單元42執(zhí)行的運動估計是產(chǎn)生運動向量的過程,所述運動向量估計視頻塊的運動。舉例來說,運動向量可指示當前視頻圖片內(nèi)的視頻塊的PU相對于參考圖片(或其它經(jīng)譯碼單元)內(nèi)的預測性塊相對于當前圖片(或其它經(jīng)譯碼單元)內(nèi)正被譯碼的當前塊的位移。
預測性塊是被發(fā)現(xiàn)在像素差方面與待譯碼塊緊密匹配的塊,像素差可通過絕對差總和(SAD)、平方差總和(SSD)或其它差度量來確定。在一些實例中,視頻編碼器20可計算存儲于參考圖片存儲器64中的參考圖片的次整數(shù)像素位置的值。舉例來說,視頻編碼器20可內(nèi)插參考圖片的四分之一像素位置、八分之一像素位置或其它分數(shù)像素位置的值。因此,運動估計單元42可相對于全像素位置和分數(shù)像素位置執(zhí)行運動搜索并且輸出具有分數(shù)像素精確度的運動向量。
運動估計單元42通過比較PU的位置與參考圖片的預測性塊的位置來計算經(jīng)幀間譯碼切片中的視頻塊的PU的運動向量。舉例來說,運動信息集合可含有前向和后向預測方向的運動信息。此處,前向和后向預測方向是雙向預測模式的兩個預測方向,且術語“前向”和“后向”不一定具有幾何含義。替代地,前向和后向?qū)诋斍皥D片的參考圖片列表0(RefPicList0)和參考圖片列表1(RefPicList1)。當僅一個參考圖片列表可用于圖片或切片時,僅RefPicList0可用,并且切片的每一塊的運動信息始終是前向的。
在一些情況下,為簡單起見,可以假定其具有相關聯(lián)參考索引的方式來提起運動向量本身。參考索引可用于識別當前參考圖片列表(RefPicList0或RefPicList1)中的參考圖片,其中的每一者識別存儲在參考圖片存儲器64中的一或多個參考圖片。運動向量具有水平和豎直分量。運動估計單元42將計算出來的運動向量發(fā)送到熵編碼單元56和運動補償單元44。
在一些情況下,可預測運動信息。舉例來說,在HEVC標準中,存在用于PU的被稱作合并模式(其中跳過模式被視為合并的一種特殊情況)和高級運動向量預測(AMVP)模式的兩種幀間預測模式,如下文關于圖6的實例更詳細地所描述。
由運動補償單元44執(zhí)行的運動補償可涉及基于由運動估計單元42確定的運動向量來擷取或產(chǎn)生預測性區(qū)塊。再次,在一些實例中,運動估計單元42與運動補償單元44可在功能上集成。在接收到當前視頻塊的PU的運動向量后,運動補償單元44可在參考圖片列表中的一者中定位所述運動向量指向的預測性塊。求和器50通過從正經(jīng)譯碼的當前視頻塊的像素值減去預測性塊的像素值從而形成像素差值來形成殘余視頻塊,如下文所論述。一般來說,運動估計單元42相對于亮度分量執(zhí)行運動估計,并且運動補償單元44針對色度分量和亮度分量兩者使用基于亮度分量計算的運動向量。模式選擇單元40還可產(chǎn)生與視頻塊及視頻切片相關聯(lián)的語法元素以供視頻解碼器30用于解碼視頻切片的視頻塊。
視頻編碼器20的幀內(nèi)BC單元47可使用幀內(nèi)塊復制模式執(zhí)行視頻塊的視頻壓縮。舉例來說,幀內(nèi)BC單元47可基于當前切片中的另一塊來確定用于當前切片的一視頻塊的預測信息。幀內(nèi)BC單元47可確定識別切片中的所述塊的塊向量(也可被稱作“偏移向量”)。類似于運動向量,塊向量可具有水平分量和豎直分量。幀內(nèi)BC單元47可基于同一切片中的當前塊與預測性塊之間的差值來確定殘余塊。視頻編碼器20可在經(jīng)編碼位流中包含殘余和塊向量的指示。在一些情況下,可以與運動向量類似的方式預測塊向量。
作為如上文所描述由運動估計單元42和運動補償單元44執(zhí)行的幀間預測的替代方案,幀內(nèi)預測單元46可對當前塊進行幀內(nèi)預測。具體來說,幀內(nèi)預測單元46可以確定用于對當前塊進行編碼的幀內(nèi)預測模式。在一些實例中,幀內(nèi)預測單元46可(例如)在單獨的編碼編次期間使用各種幀內(nèi)預測模式來對當前塊進行編碼,并且?guī)瑑?nèi)預測單元46(或在一些實例中為模式選擇單元40)可從受測模式中選擇適當?shù)膸瑑?nèi)預測模式來使用。
舉例來說,幀內(nèi)預測單元46可使用速率失真分析針對各種測試的幀內(nèi)預測模式計算速率失真值,且從所述測試的模式當中選擇具有最好速率失真特性的幀內(nèi)預測模式。速率失真分析一般確定經(jīng)編碼塊與經(jīng)編碼以產(chǎn)生所述經(jīng)編碼塊的原始未經(jīng)編碼塊之間的失真(或誤差)的量,以及用于產(chǎn)生經(jīng)編碼塊的位速率(也就是說,位數(shù)目)。幀內(nèi)預測單元46可以根據(jù)用于各種經(jīng)編碼塊的失真和速率計算比率,以確定哪個幀內(nèi)預測模式對于所述塊展現(xiàn)最佳速率失真值。
視頻編碼器20通過從正譯碼的原始視頻塊減去來自模式選擇單元40的預測數(shù)據(jù)而形成殘余視頻塊。求和器50表示執(zhí)行此減法運算的一或多個組件。
變換處理單元52將例如離散余弦變換(DCT)或概念上類似的變換等變換應用于殘余塊,從而產(chǎn)生包括殘余變換系數(shù)值的視頻塊。變換處理單元52可以執(zhí)行概念上類似于DCT的其它變換。也可使用小波變換、整數(shù)變換、子帶變換或其它類型的變換。在任何狀況下,變換處理單元52將變換應用于殘余塊,從而產(chǎn)生殘余變換系數(shù)的塊。所述變換可將殘余信息從像素值域轉換到變換域(例如,頻域)。
變換處理單元52可將所得變換系數(shù)發(fā)送到量化單元54。量化單元54量化變換系數(shù)以進一步減小位速率。量化過程可以減少與系數(shù)中的一些或全部相關聯(lián)的位深度??赏ㄟ^調(diào)整量化參數(shù)來修改量化的程度。在一些實例中,量化單元54可以接著執(zhí)行對包含經(jīng)量化變換系數(shù)的矩陣的掃描。替代地,熵編碼單元56可執(zhí)行掃描。
在量化后,熵編碼單元56對經(jīng)量化變換系數(shù)進行熵譯碼。舉例來說,熵編碼單元56可執(zhí)行上下文自適應可變長度譯碼(CAVLC)、上下文自適應二進制算術譯碼(CABAC)、基于語法的上下文自適應二進制算術譯碼(SBAC)、概率區(qū)間分割熵(PIPE)譯碼或另一熵譯碼技術。在基于上下文的熵譯碼的情況下,上下文可以基于相鄰塊。在由熵編碼單元56進行熵譯碼之后,可以將經(jīng)編碼位流發(fā)射到另一裝置(例如,視頻解碼器30),或者將所述經(jīng)編碼位流存檔以用于稍后發(fā)射或檢索。
逆量化單元58和逆變換單元60分別應用逆量化和逆變換以重建像素域中的殘余塊,例如以供稍后用作參考塊。
運動補償單元44可通過將殘余塊添加到參考圖片存儲器64的圖片中的一者的預測性塊來計算參考塊。運動補償單元44還可將一或多個內(nèi)插濾波器應用于經(jīng)重建殘余塊以計算子整數(shù)像素值用于運動估計。求和器62將經(jīng)重建殘余塊添加到由運動補償單元44產(chǎn)生的經(jīng)運動補償?shù)念A測塊,以產(chǎn)生經(jīng)重建視頻塊以用于存儲于參考圖片存儲器64中。經(jīng)重建視頻塊可由運動估計單元42和運動補償單元44用作參考塊以對后續(xù)視頻圖片中的塊進行幀間譯碼。
濾波單元66可以執(zhí)行多種濾波過程。舉例來說,濾波單元66可以執(zhí)行解塊濾波。也就是說,濾波單元66可以接收形成經(jīng)重建視頻的切片或幀的多個經(jīng)重建視頻塊且對塊邊界進行濾波,以從切片或幀移除成塊偽影。在一個實例中,濾波單元66評估視頻塊的所謂的“邊界強度”,如下文更詳細所描述?;谝曨l塊的邊界強度,可以相對于鄰近視頻塊的邊緣像素而對視頻塊的邊緣像素進行濾波,使得查看者更難以感知從一個視頻塊到另一個的過渡。
根據(jù)本發(fā)明中描述的技術的各種方面,視頻編碼器20可執(zhí)行下文所描述的解塊濾波和幀內(nèi)塊復制技術。舉例來說,當使用幀內(nèi)BC單元47對塊進行編碼時,濾波單元66可應用本發(fā)明的技術來對所述塊進行解塊濾波和幀內(nèi)塊復制。
舉例來說,在當前塊(例如,正編碼的塊)和相鄰塊(例如,經(jīng)重建且存儲于參考圖片存儲器64中的先前經(jīng)編碼塊)中的至少一者以IBC模式譯碼且都不是以幀內(nèi)預測模式譯碼時,視頻編碼器20可執(zhí)行邊界強度值確定過程。基于正對當前塊的哪一邊緣進行解塊濾波,這個相鄰塊可以是上方塊、下方塊、右側塊或左側塊。
濾波單元66或有可能模式選擇單元40可經(jīng)配置以基于當前塊和相鄰塊的譯碼模式而執(zhí)行不同的邊界強度值確定過程。為便于說明,在濾波單元66的情況下描述確定邊界強度值的實例。然而,在一些實例中,模式選擇單元40可確定邊界強度值且輸出邊界強度值。在這些實例中,濾波單元66可基于所接收的邊界強度值進行解塊濾波。一般來說,因為模式選擇單元40和濾波單元66都是視頻編碼器20的一部分,所以視頻編碼器20可被視為利用實例技術來確定邊界強度值且基于所確定的邊界強度值沿邊緣進行解塊濾波。
模式選擇單元40可確定用于當前塊和相鄰塊的譯碼模式。濾波單元66可基于執(zhí)行以下實例邊界強度確定過程中的一者來確定邊界強度值。濾波單元66可基于當前塊或相鄰塊中的一者為經(jīng)幀內(nèi)塊復制(IBC)譯碼塊(例如,以IBC模式譯碼)且另一塊為經(jīng)幀間譯碼塊(例如,以幀間預測模式譯碼)來執(zhí)行邊界強度值確定過程,以確定邊界強度值。在這個實例中,邊界強度值確定過程不包含識別用于經(jīng)幀間譯碼塊的運動向量,如表1的ID 3和ID 4的情況那般。如表1中針對ID 3和ID 4所指示,基于兩個塊的運動向量分量之間的差值來確定邊界強度值,運動向量參考不同圖片或運動向量的數(shù)目對于兩個塊不同。
此外,運動向量參考通過參考索引識別到參考圖片列表中的參考圖片中的塊。不應混淆運動向量和塊向量。塊向量用于經(jīng)IBC譯碼塊且參考與當前塊在同一圖片中的塊。
另外,所述邊界強度值確定過程不同于在當前塊或相鄰塊中的一者經(jīng)幀內(nèi)譯碼且另一者經(jīng)IBC譯碼時的邊界強度值確定過程。舉例來說,這個邊界強度值確定過程不同于表1的ID 1。
舉例來說,在JCTVC-R0126中,在當前塊或相鄰塊中的一者經(jīng)IBC譯碼且另一者經(jīng)幀間譯碼時,如同當前塊或相鄰塊中的一者經(jīng)IBC譯碼且另一者經(jīng)幀內(nèi)譯碼一般,使用相同的過程來確定邊界強度值。在JCTVC-R0126中,在兩種情況下(例如,一個經(jīng)IBC譯碼且另一者經(jīng)幀間譯碼,和一個經(jīng)IBC譯碼且另一者經(jīng)幀內(nèi)譯碼),JCTVC-R0126技術使用相同過程以用于邊界強度值確定(例如,設定邊界強度值等于一)。在本發(fā)明中描述的技術中,當一個塊經(jīng)IBC譯碼且另一者經(jīng)幀內(nèi)譯碼時,濾波單元66可執(zhí)行與當一個塊經(jīng)IBC譯碼且另一者經(jīng)幀間譯碼時不同的邊界強度值確定過程。
在本發(fā)明中描述的技術中,濾波單元66可基于當前塊或相鄰塊中的至少一者為經(jīng)IBC譯碼塊(例如,以IBC模式譯碼)且另一塊為經(jīng)幀內(nèi)譯碼塊(例如,以幀內(nèi)預測模式譯碼)來執(zhí)行第一邊界強度值確定過程。濾波單元66可基于當前塊或相鄰塊中的一者為經(jīng)IBC譯碼塊且另一塊為非經(jīng)IBC譯碼塊來執(zhí)行第二、不同的邊界強度值確定過程。在這個實例中,第二邊界強度值確定過程不包含識別用于非經(jīng)IBC譯碼塊的運動向量。
濾波單元66(或模式選擇單元40)在一個塊經(jīng)幀間譯碼且另一塊經(jīng)IBC譯碼時執(zhí)行的邊界強度確定過程的一個實例為設定邊界強度值等于一。濾波單元66(或模式選擇單元40)在一個塊經(jīng)幀間譯碼且另一塊經(jīng)IBC譯碼時執(zhí)行的邊界強度確定過程的另一實例包含確定經(jīng)IBC譯碼塊的參考塊,以及確定所述參考塊中的任一像素是否是以幀內(nèi)預測模式或IBC模式譯碼的。在這個實例中,濾波單元66或模式選擇單元40可基于所述參考塊中的任一像素以幀內(nèi)預測模式或IBC模式譯碼而設定邊界強度值等于一,或基于所述參考塊中沒有像素以幀內(nèi)預測模式或IBC模式譯碼而設定邊界強度值等于一。
濾波單元66可基于所確定的邊界強度值沿當前塊與相鄰塊之間的邊緣進行解塊濾波。濾波單元66接著可將所得經(jīng)濾波像素值存儲在參考圖片存儲器64中,使得所述經(jīng)濾波像素值可用作經(jīng)幀間譯碼的后一塊的參考像素。
除了執(zhí)行用于在一個塊經(jīng)IBC譯碼時確定邊界強度值的實例技術外,視頻編碼器20還可經(jīng)配置以執(zhí)行與選擇性存儲IBC譯碼將不需要的圖片中的區(qū)域的未經(jīng)濾波像素值有關的技術。舉例來說,模式選擇單元40可確定是否參考圖片中的一區(qū)域以用于所述圖片中至少一個塊的使用IBC模式的預測(例如,所述區(qū)域是否將用作IBC譯碼的參考)。
模式選擇單元40可基于一區(qū)域的視頻內(nèi)容或某一其它技術來執(zhí)行對一區(qū)域是否將用于IBC模式的確定。然而,在一些實例中,直到在整個圖片經(jīng)編碼之后為止,模式選擇單元40可能不能夠確定一區(qū)域是否將用于IBC模式。在此些實例中,選擇性存儲未經(jīng)濾波像素值在視頻編碼器20側上可能不適用。在圖片在視頻編碼器20輸出圖片的信息之前經(jīng)充分譯碼的實例中,視頻編碼器20仍可確定一區(qū)域是否將用于IBC模式且將這個信息輸出到視頻解碼器30。視頻解碼器30接著可利用這個信息以選擇性地存儲未經(jīng)濾波像素值,使得視頻解碼器30需要評估存儲器的次數(shù)的量減少。
如果模式選擇單元40確定參考所述區(qū)域以用于使用IBC模式的預測(例如,所述區(qū)域?qū)⒂米鱅BC譯碼的參考),那么濾波單元66可在不進行濾波的情況下通過所述區(qū)域的未經(jīng)濾波像素值(或模式選擇單元40可使得濾波單元66被繞過,如通過虛線所說明),且所述未經(jīng)濾波像素值可存儲于參考圖片存儲器64中。在一些實例中,濾波單元66也可對所述區(qū)域的像素值進行濾波(例如,應用解塊濾波和/或某一其它濾波),且將經(jīng)濾波像素值存儲于參考圖片存儲器64中。因此,如果模式選擇單元40確定參考所述區(qū)域以用于使用IBC模式的預測,那么參考圖片存儲器64可存儲所述區(qū)域的未經(jīng)濾波像素值和所述區(qū)域的經(jīng)濾波像素值兩者。
如果模式選擇單元40確定不參考所述區(qū)域以用于使用IBC模式的預測(例如,所述區(qū)域不將用作IBC譯碼的參考),那么濾波單元66(或模式選擇單元40)可避免將未經(jīng)濾波像素值存儲于參考圖片存儲器64中。然而,濾波單元66仍然可對像素值進行濾波且將所得經(jīng)濾波像素值存儲于參考圖片存儲器64中。因此,如果模式選擇單元40確定不參考所述區(qū)域以用于使用IBC模式的預測,那么參考圖片存儲器64可存儲所述區(qū)域的經(jīng)濾波像素值且可不存儲所述區(qū)域的未經(jīng)濾波像素值。
以此方式,這些技術可減小用以指示IBC預測用量信息的平均帶寬,使得視頻解碼器30(且甚至潛在地視頻編碼器20)可選擇性地僅存儲用于使用IBC模式的預測的區(qū)域。舉例來說,如果不需要未經(jīng)濾波像素值,那么對參考圖片存儲器64的存取可受限。參考圖片存儲器64可在視頻編碼器20的芯片上或芯片外,且一般來說,限制對參考圖片存儲器64的存取可促進存儲器帶寬利用,從而釋放時間和空間以用于待存儲的其它數(shù)據(jù)。
指示一區(qū)域是否將用于IBC譯碼中的參考的信息可為旗標(例如,針對每一CTB傳信以指示是否參考一特定CTB以用于至少一個塊的預測單元IBC模式的旗標)。然而,所述區(qū)域可不限于CTB。所述區(qū)域可為圖片、圖塊、切片、PU塊、CU、CTB、一組CTB、N×N(例如,64×64)的固定大小或M×N(例如,16×32或32×16)的矩形分割區(qū)中的一者。視頻編碼器20可針對區(qū)域大小的這些實例中的任一者輸出旗標。
另外,視頻編碼器20可在視頻參數(shù)集(VPS)、序列參數(shù)集(SPS)、圖片參數(shù)集(PPS)、切片標頭、譯碼樹單元標頭、譯碼單元標頭或輔助增強信息(SEI)消息或參數(shù)集擴展中的一或多者中輸出指示所述區(qū)域是否將用作用于IBC模式的參考的信息。在一些實例中,視頻編碼器20可基于是否啟用幀內(nèi)塊復制模式而條件性地傳信。
在一些實例中,視頻編碼器20可確定且輸出另一選通旗標以指示將指示一區(qū)域是否將用作參考的旗標的存在。舉例來說,如果啟用這個選通旗標,那么視頻編碼器20可輸出指示一區(qū)域是否用于IBC模式中的參考的旗標,且如果停用這個選通旗標,那么視頻編碼器20可不輸出指示一區(qū)域是否用于IBC模式中的參考的旗標。
另外,可需要明確地傳信CTU(或通常具有各種粒度水平的塊)的數(shù)目,以識別指示所述CTB是否用作幀內(nèi)塊復制參考的經(jīng)譯碼或經(jīng)解碼旗標的數(shù)目。舉例來說,當在切片標頭中傳信旗標時,這個傳信操作可為有用的,因為包含到切片中的CTU的數(shù)目可能是事先未知的。然而,如果啟用波前平行處理(WPP)或圖塊,那么這類信息(CTU的數(shù)目)可為可獲得的,且因此可不需要額外地加以傳信,因此可僅在使用WPP或圖塊時傳信CTU的數(shù)目。
雖然在本發(fā)明中描述了所述技術的多個不同方面和實例,但是所述技術的各種方面和實例可以一起執(zhí)行或彼此分開執(zhí)行。換句話說,所述技術不應嚴格地限制于上文所述的各種方面和實例,而是可組合使用或一起執(zhí)行和/或分開執(zhí)行。另外,雖然某些技術可歸于視頻編碼器20的某些單元(例如,幀內(nèi)BC單元47和/或濾波單元66),但應理解,視頻編碼器20的一或多個其它單元也可以負責實行此些技術。
圖3是說明可以實施如本發(fā)明中所描述的用于變換的技術的視頻解碼器30的實例的框圖。同樣,出于說明的目的將在HEVC譯碼的上下文中描述視頻編碼器30,但關于其它譯碼標準并不限制本發(fā)明。
在圖3的實例中,視頻解碼器30包含視頻數(shù)據(jù)存儲器68、熵解碼單元70、模式選擇單元71(其包含運動補償單元72、幀內(nèi)預測單元74和幀內(nèi)BC單元75)、逆量化單元76、逆變換單元78、參考圖片存儲器82、求和器80和濾波單元84。
視頻數(shù)據(jù)存儲器68可存儲待由視頻解碼器30的組件解碼的視頻數(shù)據(jù),例如經(jīng)編碼視頻位流。存儲在視頻數(shù)據(jù)存儲器68中的視頻數(shù)據(jù)可例如從計算機可讀媒體16獲得,例如經(jīng)由視頻數(shù)據(jù)的有線或無線網(wǎng)絡通信從本地視頻源(例如相機)或通過存取物理數(shù)據(jù)存儲媒體而獲得。視頻數(shù)據(jù)存儲器68可形成存儲來自經(jīng)編碼視頻位流的經(jīng)編碼視頻數(shù)據(jù)的經(jīng)譯碼圖片緩沖器(CPB)。參考圖片存儲器82可被稱為經(jīng)解碼圖片緩沖器,其存儲參考視頻數(shù)據(jù)供用于通過視頻解碼器30例如以幀內(nèi)、幀間或IBC譯碼模式解碼視頻數(shù)據(jù)。視頻數(shù)據(jù)存儲器68和參考圖片存儲器82可由多種存儲器裝置中的任一者形成,例如動態(tài)隨機存取存儲器(DRAM)(包含同步DRAM(SDRAM))、磁阻式RAM(MRAM)、電阻式RAM(RRAM)或其它類型的存儲器裝置。視頻數(shù)據(jù)存儲器68和參考圖片存儲器82可由同一存儲器裝置或單獨的存儲器裝置提供。在各種實例中,視頻數(shù)據(jù)存儲器68可與視頻解碼器30的其它組件一起在芯片上,或相對于那些組件在芯片外。
在解碼過程期間,視頻解碼器30從視頻編碼器20接收表示經(jīng)編碼視頻切片的視頻塊和相關聯(lián)語法元素的經(jīng)編碼視頻位流。視頻解碼器30的熵解碼單元70對位流進行熵解碼以產(chǎn)生經(jīng)量化系數(shù)、運動向量或幀內(nèi)預測模式指示符和其它語法元素。熵解碼單元70將運動向量和其它語法元素轉遞到運動補償單元72。視頻解碼器30可在視頻切片層級和/或視頻塊層級處接收語法元素。
當視頻切片被譯碼為經(jīng)幀內(nèi)譯碼(I)切片時,幀內(nèi)預測單元74可以基于傳信的幀內(nèi)預測模式和來自當前圖片的先前經(jīng)解碼塊的數(shù)據(jù)而產(chǎn)生用于當前視頻切片的視頻塊的預測數(shù)據(jù)。當視頻圖片被譯碼為經(jīng)幀間譯碼(即,B或P)切片時,運動補償單元72基于從熵解碼單元70接收到的運動向量和其它語法元素而產(chǎn)生用于當前視頻切片的視頻塊的預測性塊。預測性塊可從參考圖片列表中的一者內(nèi)的參考圖片中的一者產(chǎn)生。視頻解碼器30可以基于存儲在參考圖片存儲器82中的參考圖片使用默認建構技術來建構參考圖片列表,即RefPicList0和RefPicList1。
運動補償單元72通過剖析運動向量和其它語法元素確定用于當前視頻切片的視頻塊的預測信息,并且使用所述預測信息產(chǎn)生用于正經(jīng)解碼的當前視頻塊的預測性塊。舉例來說,運動補償單元72使用所接收語法元素中的一些來確定用于對視頻切片的視頻塊進行譯碼的預測模式(例如,幀內(nèi)或幀間預測)、幀間預測切片類型(例如,B切片或P切片)、切片的參考圖片列表中一或多者的建構信息、切片的每一經(jīng)幀間編碼視頻塊的運動向量、切片的每一經(jīng)幀間譯碼視頻塊的幀間預測狀態(tài),以及用于對當前視頻切片中的視頻塊進行解碼的其它信息。
運動補償單元72還可以基于內(nèi)插濾波器執(zhí)行內(nèi)插。運動補償單元72可以使用如視頻編碼器20在視頻塊的編碼期間使用的內(nèi)插濾波器來計算參考塊的子整數(shù)像素的內(nèi)插值。在此情況下,運動補償單元72可根據(jù)接收的語法元素而確定由視頻編碼器20使用的內(nèi)插濾波器且使用所述內(nèi)插濾波器來產(chǎn)生預測性塊。
視頻解碼器30的幀內(nèi)BC單元75可執(zhí)行幀內(nèi)塊復制。舉例來說,幀內(nèi)BC單元75可接收用于當前切片的視頻塊的預測信息,包含(例如)殘余塊和識別當前正解碼的圖片中的另一塊的塊向量。在一些情況下,塊向量可相對于塊向量預測值加以譯碼,如下文所描述。幀內(nèi)BC單元75可通過合并所接收的殘余塊與由偏移向量識別的塊來確定圖片的當前塊。
逆量化單元76對在位流中提供且由熵解碼單元70解碼的經(jīng)量化塊系數(shù)進行逆量化,即解量化。逆量化過程可包含使用由視頻解碼器30針對視頻切片中的每一視頻塊計算以確定應應用的量化程度以及同樣的逆量化程度的量化參數(shù)QPY。
逆變換單元78將逆變換(例如,逆DCT、逆整數(shù)變換或概念上類似的逆變換過程)應用于變換系數(shù)以便產(chǎn)生像素域中的殘余塊。視頻解碼器30通過對來自逆變換單元78的殘余塊與運動補償單元72產(chǎn)生的對應預測性塊進行求和而形成經(jīng)解碼視頻塊。求和器80表示執(zhí)行這個求和運算的一或多個組件。
在一些實例中,濾波單元84可以配置成類似于視頻編碼器20(圖2)的濾波單元66。舉例來說,當從經(jīng)編碼位流解碼并且重建視頻數(shù)據(jù)時,濾波單元84可以經(jīng)配置以執(zhí)行解塊濾波、SAO或其它濾波操作。確切地說,在一些實例中,濾波單元84可執(zhí)行如關于下方圖4的實例所描述的解塊濾波。
根據(jù)本發(fā)明中描述的技術的各種方面,視頻解碼器30可執(zhí)行下文所描述的解塊濾波和幀內(nèi)塊復制技術。舉例來說,當使用幀內(nèi)BC單元75對塊進行解碼時,濾波單元84可應用本發(fā)明的技術來對所述塊進行解塊濾波和幀內(nèi)塊復制。
舉例來說,視頻解碼器30可執(zhí)行類似于上文關于視頻編碼器20所描述的邊界強度值確定過程的邊界強度值確定過程。舉例來說,在當前塊(例如,正解碼的塊)和相鄰塊(例如,存儲于參考圖片存儲器82中的先前經(jīng)解碼塊)中的至少一者以IBC模式譯碼且兩者都不是以幀內(nèi)預測模式譯碼時,視頻解碼器30可確定邊界強度值。如上所述,基于正對當前塊的哪一邊緣進行解塊濾波,這個相鄰塊可以是上方塊、下方塊、右側塊或左側塊。
濾波單元84或有可能模式選擇單元71可經(jīng)配置以基于當前塊和相鄰塊的譯碼模式而執(zhí)行不同的邊界強度值確定過程。為便于說明,在濾波單元84的情況下描述確定邊界強度值的實例。然而,在一些實例中,模式選擇單元71可確定邊界強度值且輸出邊界強度值。在這些實例中,濾波單元84可基于所接收的邊界強度值進行解塊濾波。一般來說,因為模式選擇單元71和濾波單元84都是視頻解碼器30的一部分,所以視頻解碼器30可被視為利用實例技術來確定邊界強度值且基于所確定的邊界強度值沿邊緣進行解塊濾波。
模式選擇單元71可(例如,基于熵解碼單元70提供的信息)確定用于當前塊和相鄰塊的譯碼模式。濾波單元84可基于執(zhí)行以下實例邊界強度確定過程中的一者來確定邊界強度值。濾波單元84可基于當前塊或相鄰塊中的一者為經(jīng)幀內(nèi)塊復制(IBC)譯碼塊(例如,以IBC模式譯碼)且另一塊為經(jīng)幀間譯碼塊(例如,以幀間預測模式譯碼)來執(zhí)行邊界強度值確定過程,以確定邊界強度值。在這個實例中,邊界強度值確定過程不包含識別用于經(jīng)幀間譯碼塊的運動向量,如表1的ID 3和ID 4的情況那般。再次,如表1中針對ID 3和ID 4所指示,基于兩個塊的運動向量分量之間的差值來確定邊界強度值,運動向量參考不同圖片或運動向量的數(shù)目對于兩個塊不同。
為了重申,運動向量參考通過參考索引識別到參考圖片列表中的參考圖片中的塊。不應混淆術語“運動向量”與“塊向量”。塊向量用于經(jīng)IBC譯碼塊且指向與當前塊在同一圖片中的預測性塊。相反,運動向量指向在與關聯(lián)于當前塊的圖片不同的圖片中的預測性塊。
另外,所述邊界強度值確定過程不同于在當前塊或相鄰塊中的一者經(jīng)幀內(nèi)譯碼且另一者經(jīng)IBC譯碼時的邊界強度值確定過程。舉例來說,這個邊界強度值確定過程不同于表1的ID 1。
如上文所描述,在JCTVC-R0126中,在兩種情況下(例如,一個經(jīng)IBC譯碼且另一者經(jīng)幀間譯碼,和一個經(jīng)IBC譯碼且另一者經(jīng)幀內(nèi)譯碼),JCTVC-R0126技術使用相同過程以用于邊界強度值確定(例如,設定邊界強度值等于一)。在本發(fā)明中描述的技術中,當一個塊經(jīng)IBC譯碼且另一者經(jīng)幀內(nèi)譯碼時,濾波單元84可執(zhí)行與當一個塊經(jīng)IBC譯碼且另一者經(jīng)幀間譯碼時不同的邊界強度值確定過程。
在本發(fā)明中描述的技術中,濾波單元84可基于當前塊或相鄰塊中的至少一者為經(jīng)IBC譯碼塊(例如,以IBC模式譯碼)且另一塊為經(jīng)幀內(nèi)譯碼塊(例如,以幀內(nèi)預測模式譯碼)來執(zhí)行第一邊界強度值確定過程。濾波單元84可基于當前塊或相鄰塊中的一者為經(jīng)IBC譯碼塊且另一塊為非經(jīng)IBC譯碼塊來執(zhí)行第二、不同的邊界強度值確定過程。在這個實例中,第二邊界強度值確定過程不包含識別用于非經(jīng)IBC譯碼塊的運動向量。
濾波單元84(或模式選擇單元71)在一個塊經(jīng)幀間譯碼且另一塊經(jīng)IBC譯碼時執(zhí)行的邊界強度確定過程的一個實例為設定邊界強度值等于一。濾波單元84(或模式選擇單元71)在一個塊經(jīng)幀間譯碼且另一塊經(jīng)IBC譯碼時執(zhí)行的邊界強度確定過程的另一實例包含確定經(jīng)IBC譯碼塊的參考塊,以及確定所述參考塊中的任一像素是否是以幀內(nèi)預測模式或IBC模式譯碼的。在這個實例中,濾波單元84或模式選擇單元71可基于所述參考塊中的任一像素以幀內(nèi)預測模式或IBC模式譯碼而設定邊界強度值等于一,或基于所述參考塊中沒有像素以幀內(nèi)預測模式或IBC模式譯碼而設定邊界強度值等于一。
濾波單元84可基于所確定的邊界強度值沿當前塊與相鄰塊之間的邊緣進行解塊濾波。濾波單元84接著可將所得經(jīng)濾波像素值存儲在參考圖片存儲器82中,使得所述經(jīng)濾波像素值可被顯示且可能用作經(jīng)幀間譯碼的后一塊的參考像素。
除了執(zhí)行用于在一個塊經(jīng)IBC譯碼時確定邊界強度值的實例技術外,視頻解碼器30還可經(jīng)配置以執(zhí)行與選擇性存儲IBC譯碼將不需要的圖片中的區(qū)域的未經(jīng)濾波像素值有關的技術。舉例來說,模式選擇單元71可確定是否參考圖片中的一區(qū)域以用于所述圖片中至少一個塊的使用IBC模式的預測(例如,所述區(qū)域是否將用作IBC譯碼的參考)。
模式選擇單元71可基于在經(jīng)編碼視頻位流中接收的信息來執(zhí)行對一區(qū)域是否將用于IBC模式的確定。舉例來說,如上文所描述,視頻編碼器20可輸出指示一區(qū)域是否將為IBC譯碼的參考的信息。在一些實例中,模式選擇單元71可有可能基于視頻內(nèi)容來確定一區(qū)域是否將用于IBC模式。
如果模式選擇單元71確定參考所述區(qū)域以用于使用IBC模式的預測(例如,所述區(qū)域?qū)⒂米鱅BC譯碼的參考),那么濾波單元84可在不進行濾波的情況下通過所述區(qū)域的未經(jīng)濾波像素值(或模式選擇單元71可使得濾波單元84被繞過,如通過虛線所說明),且所述未經(jīng)濾波像素值可存儲于參考圖片存儲器82中。在一些實例中,濾波單元84也可對所述區(qū)域的像素值進行濾波(例如,應用解塊濾波和/或某一其它濾波),且將經(jīng)濾波像素值存儲于參考圖片存儲器82中。因此,如果模式選擇單元71確定參考所述區(qū)域以用于使用IBC模式的預測,那么參考圖片存儲器71可存儲所述區(qū)域的未經(jīng)濾波像素值和所述區(qū)域的經(jīng)濾波像素值兩者。
如果模式選擇單元71確定不參考所述區(qū)域以用于使用IBC模式的預測(例如,所述區(qū)域不將用作IBC譯碼的參考),那么濾波單元84(或模式選擇單元71)可避免將未經(jīng)濾波像素值存儲于參考圖片存儲器82中。然而,濾波單元84仍然可對像素值進行濾波且將所得經(jīng)濾波像素值存儲于參考圖片存儲器82中。因此,如果模式選擇單元71確定不參考所述區(qū)域以用于使用IBC模式的預測,那么參考圖片存儲器82可存儲所述區(qū)域的經(jīng)濾波像素值且可不存儲所述區(qū)域的未經(jīng)濾波像素值。
以此方式,這些技術可減小用以指示IBC預測用量信息的平均帶寬,使得視頻解碼器30可選擇性地僅存儲用于使用IBC模式的預測的區(qū)域。舉例來說,如果不需要未經(jīng)濾波像素值,那么對參考圖片存儲器82的存取可受限。參考圖片存儲器82可在視頻解碼器30的芯片上或芯片外,且一般來說,限制對參考圖片存儲器82的存取可促進存儲器帶寬利用,從而釋放時間和空間以用于待存儲的其它數(shù)據(jù)。
視頻解碼器30可解碼作為指示一區(qū)域是否將用于IBC譯碼中的參考的信息的旗標(例如,針對每一CTB接收以指示是否參考一特定CTB以用于至少一個塊的預測單元IBC模式的旗標)。然而,所述區(qū)域可不限于CTB。所述區(qū)域可為圖片、圖塊、切片、PU塊、CU、CTB、一組CTB、N×N(例如,64×64)的固定大小或M×N(例如,16×32或32×16)的矩形分割區(qū)中的一者。視頻解碼器30可針對區(qū)域大小的這些實例中的任一者接收旗標。
另外,視頻解碼器30可在視頻參數(shù)集(VPS)、序列參數(shù)集(SPS)、圖片參數(shù)集(PPS)、切片標頭或輔助增強信息(SEI)消息或參數(shù)集擴展中的一或多者中接收指示所述區(qū)域是否將用作用于IBC模式的參考的信息。在一些實例中,視頻解碼器30可基于是否啟用幀內(nèi)塊復制模式而條件性地接收所述信息。
在一些實例中,視頻解碼器30可接收另一選通旗標,其指示用于一區(qū)域是否將用作參考的旗標的存在。所述選通旗標可為高層級旗標,其首先指示指示一區(qū)域是否將用作參考的旗標是否存在于位流中。舉例來說,如果這個選通旗標較高,那么視頻解碼器30可接收指示一區(qū)域是否用于IBC模式中的參考的旗標,且如果這個選通旗標較低,那么視頻解碼器30可不接收指示一區(qū)域是否用于IBC模式中的參考的旗標。
另外,可需要明確地傳信CTU(或通常具有各種粒度水平的塊)的數(shù)目,以識別指示所述CTB是否用作幀內(nèi)塊復制參考的經(jīng)譯碼或經(jīng)解碼旗標的數(shù)目。舉例來說,當在切片標頭中傳信旗標時,這個傳信操作可為有用的,因為包含到切片中的CTU的數(shù)目可能是事先未知的。然而,如果啟用波前平行處理(WPP)或圖塊,那么這類信息(CTU的數(shù)目)可為可獲得的,且因此可不需要額外地加以傳信,因此可僅在使用WPP或圖塊時傳信CTU的數(shù)目。
雖然在本發(fā)明中描述了所述技術的多個不同方面和實例,但是所述技術的各種方面和實例可以一起執(zhí)行或彼此分開執(zhí)行。換句話說,所述技術不應嚴格地限制于上文所述的各種方面和實例,而是可組合使用或一起執(zhí)行和/或分開執(zhí)行。另外,雖然某些技術可以歸于視頻解碼器30的某些單元,但是應理解,視頻解碼器30的一或多個其它單元也可以負責實行此類技術。
根據(jù)本發(fā)明的各方面,視頻編碼器20和/或視頻解碼器30可執(zhí)行上文所描述的解塊濾波技術。雖然未嚴格地適用于任一視頻譯碼標準,但所述技術可與HEVC范圍擴展、屏幕內(nèi)容譯碼擴展或可能的其它規(guī)范化或?qū)S靡曨l壓縮過程一起使用。
上述實例描述視頻編碼器20或視頻解碼器30用以確定邊界強度值以用于進行解塊濾波的技術。因為視頻編碼器20和視頻解碼器30兩者執(zhí)行用于處理視頻數(shù)據(jù)的相同技術,所以本發(fā)明使用術語“視頻譯碼器”來一般地指代兩者。舉例來說,下文是針對用于確定邊界強度值的解塊濾波過程的改變的三個實例技術??上鄬τ贖EVC版本1描述技術1到3中提及的“改變”。
作為技術1的一實例,當視頻譯碼器確定使用幀內(nèi)塊復制時,解塊濾波過程可如下改變。類似于表1中,如果視頻譯碼器確定一邊緣的任一側(例如,當前塊或相鄰塊中任一者)是經(jīng)幀內(nèi)譯碼塊,那么視頻譯碼器可設定邊界強度值等于二。否則,如果視頻譯碼器確定一邊緣的任一側是經(jīng)IBC譯碼塊(且兩者都不是經(jīng)幀內(nèi)譯碼的),那么視頻譯碼器可設定邊界強度值等于一。否則(例如,塊都不是經(jīng)幀內(nèi)譯碼的且塊都不是經(jīng)IBC譯碼的),視頻譯碼器可應用上文在表1中描述的幀內(nèi)規(guī)則以選擇邊界強度值等于0或1。
作為技術2的一實例,當視頻譯碼器確定使用幀內(nèi)塊復制時,解塊濾波過程可如下改變。類似于表1中,如果視頻譯碼器確定一邊緣的任一側(例如,當前塊或相鄰塊中任一者)是經(jīng)幀內(nèi)譯碼塊,那么視頻譯碼器可設定邊界強度值等于二。否則,如果視頻譯碼器確定一邊緣的任一側是經(jīng)IBC譯碼塊(且兩者都不是經(jīng)幀內(nèi)譯碼的),那么視頻譯碼器可基于所述經(jīng)IBC譯碼塊的塊向量來識別所述經(jīng)IBC譯碼塊的參考塊。如果這個參考塊中的任一像素以幀內(nèi)預測模式譯碼,那么視頻譯碼器可設定邊界強度值等于二。否則,視頻譯碼器設定邊界強度值等于1。否則(例如,塊都不是經(jīng)幀內(nèi)譯碼的且塊都不是經(jīng)IBC譯碼的),視頻譯碼器可應用上文在表1中描述的幀內(nèi)規(guī)則以選擇邊界強度值等于0或1。
作為技術3的一實例,當視頻譯碼器確定使用幀內(nèi)塊復制時,解塊濾波過程可如下改變。類似于表1中,如果視頻譯碼器確定一邊緣的任一側(例如,當前塊或相鄰塊中任一者)是經(jīng)幀內(nèi)譯碼塊,那么視頻譯碼器可設定邊界強度值等于二。否則,如果視頻譯碼器確定一邊緣的任一側是經(jīng)IBC譯碼塊(且兩者都不是經(jīng)幀內(nèi)譯碼的),那么視頻譯碼器可基于所述經(jīng)IBC譯碼塊的塊向量來識別所述經(jīng)IBC譯碼塊的參考塊。如果這個參考塊中的任一像素以幀內(nèi)預測模式或IBC模式譯碼,那么視頻譯碼器可設定邊界強度值等于二。否則,視頻譯碼器設定邊界強度值等于1。否則(例如,塊都不是經(jīng)幀內(nèi)譯碼的且塊都不是經(jīng)IBC譯碼的),視頻譯碼器可應用上文在表1中描述的幀內(nèi)規(guī)則以選擇邊界強度值等于0或1。
因此,視頻譯碼器(例如視頻編碼器20和/或視頻解碼器30)可處理視頻數(shù)據(jù),包含基于形成一邊緣的至少一個塊是否是使用幀內(nèi)塊復制(幀內(nèi)BC)模式譯碼而確定用于對視頻數(shù)據(jù)圖片中的所述邊緣進行解塊濾波的邊界強度值,以及使用所確定的邊界強度值對所述邊緣進行解塊濾波。邊界強度值可為在例如由濾波單元66和/或濾波單元84實施的解塊濾波過程期間使用的參數(shù)。
圖4A到4I是說明相鄰塊的不同譯碼模式的不同組合的概念圖。在圖4A到4E中所說明的實例中,相鄰塊中的至少一者是經(jīng)幀內(nèi)譯碼的。因此,在這些實例中,視頻譯碼器可執(zhí)行第一邊界強度值確定過程(例如,設定邊界強度值等于二)。這個第一邊界強度值確定過程可與上文表1中的ID 1相同。圖4A到4I將相鄰者展示為呈并排,但相鄰者也可為頂部和底部相鄰者。
所述第一邊界強度值確定過程不同于JCTVC-R0126技術。在JCTVC-R0126中,如果塊中的一者經(jīng)IBC譯碼,那么邊界強度值將為一。舉例來說,在JCTVC-R0126中,圖4B和4C的邊界強度值將為一,因為塊中的一者經(jīng)IBC譯碼。然而,在本發(fā)明中描述的一或多個實例技術中,邊界強度值確定過程是不同的且遵循經(jīng)幀內(nèi)譯碼塊的邊界強度值確定過程。
在圖4F到4H中,塊中的至少一者經(jīng)IBC譯碼且兩者都不是經(jīng)幀內(nèi)譯碼的。對于圖4F到4H中所說明的實例,視頻譯碼器可執(zhí)行第二邊界強度值確定過程。舉例來說,當兩個塊都經(jīng)IBC譯碼時或當一個塊經(jīng)IBC譯碼且另一塊經(jīng)幀間譯碼時,視頻譯碼器可執(zhí)行第二邊界強度值確定過程。
對于第二邊界強度確定過程,作為一個實例,視頻譯碼器可確定邊界強度值等于一。作為另一實例,視頻譯碼器可識別所述經(jīng)IBC譯碼塊所參考的參考塊,且確定所述參考塊中的任何像素是否是以幀內(nèi)預測模式或IBC模式譯碼的。視頻譯碼器可基于所述參考塊中的任一像素以幀內(nèi)預測模式或IBC模式譯碼而設定邊界強度值等于二,或基于所述參考塊中沒有像素以幀內(nèi)預測模式或IBC模式譯碼而設定邊界強度值等于一。
在圖4I中,兩個塊都是經(jīng)幀間譯碼的。在此情況下,視頻譯碼器可執(zhí)行第三邊界強度值確定過程。舉例來說,視頻譯碼器可執(zhí)行上表1的ID 3和ID 4中的過程。
在本發(fā)明中所描述的實例中,視頻譯碼器可基于當前塊或相鄰塊中的一者為經(jīng)幀內(nèi)塊復制(IBC)譯碼塊且另一塊為經(jīng)幀間譯碼塊而執(zhí)行邊界強度值確定過程,以確定邊界強度值。舉例來說,視頻譯碼器可執(zhí)行上文所描述的第二邊界強度值確定過程。在這個實例中,所述邊界強度值確定過程不包含識別用于經(jīng)幀間譯碼塊的運動向量,且所述邊界強度值確定過程不同于在當前塊或相鄰塊中的一者經(jīng)幀內(nèi)譯碼且另一者經(jīng)IBC譯碼時的邊界強度值確定過程。
舉例來說,如上文所描述,當塊經(jīng)幀間譯碼時,接著以整數(shù)像素為單位,將兩個塊的對應空間運動向量分量之間的絕對差與一進行比較以確定邊界強度值,如表1的ID 3。在表1的ID 4中,視頻譯碼器需要確定用于兩個塊的經(jīng)運動補償預測是否參考不同參考圖片或運動向量的數(shù)目對于兩個塊是否不同。
在第二邊界強度值確定過程中,不需要確定用于經(jīng)幀間譯碼塊的這類運動向量。以此方式,第二邊界強度值確定過程(例如,其中一個塊經(jīng)IBC譯碼且另一者經(jīng)幀間譯碼)不同于一些其它技術。
上文所描述的其中一個塊經(jīng)幀間譯碼且另一者經(jīng)IBC譯碼的其它技術中的一些包含將經(jīng)IBC譯碼塊處理為經(jīng)幀間譯碼塊或?qū)⒔?jīng)IBC譯碼塊轉換成單向預測性經(jīng)幀間譯碼塊。在這些實例中,視頻譯碼器必須識別經(jīng)幀間譯碼塊的運動向量且用于表1的ID 3和ID 4中所需要的比較。在第二邊界強度值確定過程中,確定邊界強度值不需要經(jīng)幀間譯碼塊的運動向量。在一些情況下,視頻譯碼器可使用塊向量來識別參考塊,但可能不需要經(jīng)幀間譯碼塊的運動向量。
另外,第二邊界強度值確定過程不同于在當前塊或相鄰塊中的一者經(jīng)幀內(nèi)譯碼且另一者經(jīng)IBC譯碼時的邊界強度值確定過程。在一些技術中,與經(jīng)幀內(nèi)譯碼塊相同地處理經(jīng)IBC譯碼塊,此意味著如果另一塊經(jīng)幀間譯碼,那么邊界強度值確定將不同于本發(fā)明中所描述的實例。另外,在JCTVC-R0126中,如果一個塊經(jīng)IBC譯碼且另一者經(jīng)幀內(nèi)譯碼,那么邊界強度值為一。在本發(fā)明中描述的技術中,如果一個塊經(jīng)IBC譯碼且另一者經(jīng)幀內(nèi)譯碼,那么邊界強度值為二。
應理解,就本發(fā)明中的一或多種技術來說,在一個塊經(jīng)幀內(nèi)譯碼且另一者經(jīng)IBC譯碼時相對于一個塊經(jīng)IBC譯碼且另一者經(jīng)幀間譯碼的情形,邊界強度值確定過程是不同的。雖然在一些情況下,所得邊界強度值最終可能碰巧相同,但確定邊界強度值的過程是不同的。換句話說,邊界強度值不一定必須不同,但經(jīng)執(zhí)行以確定邊界強度值的過程可為不同的,即使邊界強度值不一定不同也是這樣。
圖5說明可對其執(zhí)行解塊濾波的相鄰塊。舉例來說,圖5的實例說明由鄰近塊P和Q形成的四個像素長的豎直塊邊界。在圖5的實例中,塊P和Q形成邊緣88,可使用解塊濾波技術對所述邊緣進行解塊。
在圖5的實例中,視頻譯碼器可利用濾波決策標準來確定是否應用濾波和將應用的濾波的方式。邊界強度決策標準可包含表1。
在一些實例中,當邊界強度(Bs)為正時,用以確定是否啟用解塊濾波的準則可如下:
|p2,0-2p1,0+p0,0|+|p2,3-2p1,3+p0,3|+|q2,0-2q1,0+q0,0|+|q2,3-2q1,3+q0,3|<β
用以確定正常和強力解塊濾波器的準則可為(i=0,3):
|p2,i-2p1,i+p0,i|+|q2,i-2q1,i+q0,i|<β/8
|p3,i-p0,i|+|q3,i-q0,i|<β/8
|p0,i-q0,i|<2.5tC
可以類似方式處理水平塊邊界。關于HEVC解塊濾波過程的額外細節(jié)可在HEVC章節(jié)8.7.2中找到。舉例來說,如上文關于圖2和3所描述,濾波單元66和/或濾波單元84可分別經(jīng)配置以執(zhí)行解塊濾波,包含下文所描述的解塊濾波(例如,HEVC章節(jié)8.7.2的解塊濾波過程)。另外,濾波單元66和/或濾波單元84可經(jīng)配置以執(zhí)行本發(fā)明的濾波技術。
下文針對解塊濾波復制來自HEVC章節(jié)8.7.2的用于亮度塊邊緣的決策過程的解塊濾波。在下方文本中,變量BS是指可使用本發(fā)明中描述的技術確定的邊界強度值。邊界強度值可用于確定將對多少像素進行濾波(例如,圖5的實例中待進行濾波的像素的數(shù)目)和用于進行濾波的系數(shù)。
亮度塊邊緣的決策過程
這個過程的輸入是:
-亮度圖片樣本陣列recPictureL,
-相對于當前圖片的左上方亮度樣本指定當前亮度譯碼塊的左上方樣本的亮度位置(xCb,yCb),
-相對于當前亮度譯碼塊的左上方樣本指定當前亮度塊的左上方樣本的亮度位置(xBl,yBl),
-指定豎直邊緣(EDGE_VER)或水平邊緣(EDGE_HOR)是否經(jīng)濾波的變量edgeType,
-指定邊界濾波強度的變量bS。
這個過程的輸出是:
-含有決策的變量dE、dEp和dEq,
-變量β和tC。
如果edgeType等于EDGE_VER,那么樣本值pi,k和qi,k(其中i=0..3且k=0和3)導出如下:
qi,k=recPictureL[xCb+xBl+i][yCb+yBl+k] (8-284)
pi,k=recPictureL[xCb+xBl-i-1][yCb+yBl+k] (8-285)
否則(edgeType等于EDGE_HOR),樣本值pi,k和qi,k(其中i=0..3且k=0和3)導出如下:
qi,k=recPictureL[xCb+xBl+k][yCb+yBl+i] (8-286)
pi,k=recPictureL[xCb+xBl+k][yCb+yBl-i-1] (8-287)
變量QpQ和QpP分別設定成等于包含含有樣本q0,0和p0,0的譯碼塊的譯碼單元的QpY值。
變量qPL導出如下:
qPL=((QpQ+QpP+1)>>1) (8-288)
如表8-11中所指定,基于如下導出的亮度量化參數(shù)Q來確定變量β′的值:
Q=Clip3(0,51,qPL+(slice_beta_offset_div2<<1)) (8-289)
其中slice_beta_offset_div2是用于含有樣本q0,0的切片的語法元素slice_beta_offset_div2的值。
變量β導出如下:
β=β′*(1<<(BitDepthY-8)) (8-290)
如表8-11中所指定,基于如下導出的亮度量化參數(shù)Q來確定變量tC′的值。
Q=Clip3(0,53,qPL+2*(bS-1)+(slice_tc_offset_div2<<1)) (8-291)
其中slice_tc_offset_div2是用于含有樣本q0,0的切片的語法元素slice_tc_offset_div2的值。
變量tC導出如下:
tC=tC′*(1<<(BitDepthY-8)) (8-292)
取決于edgeType的值,以下適用:
-如果edgeType等于EDGE_VER,那么以下排序步驟適用:
1.變量dpq0、dpq3、dp、dq和d導出如下:
dp0=Abs(p2,0-2*p1,0+p0,0) (8-293)
dp3=Abs(p2,3-2*p1,3+p0,3) (8-294)
dq0=Abs(q2,0-2*q1,0+q0,0) (8-295)
dq3=Abs(q2,3-2*q1,3+q0,3) (8-296)
dpq0=dp0+dq0 (8-297)
dpq3=dp3+dq3 (8-298)
dp=dp0+dp3 (8-299)
dq=dq0+dq3 (8-300)
d=dpq0+dpq3 (8-301)
2.變量dE、dEp和dEq被設定成等于0。
3.當d小于β時,以下排序步驟適用:
a.變量dpq被設定成等于2*dpq0。
b.對于樣本位置(xCb+xBl,yCb+yBl),如子條款8.7.2.5.6中所指定的用于亮度樣本的決策過程被樣本值pi,0、qi,0(其中i=0..3)調(diào)用,變量dpq、β和tC作為輸入,且輸出被指派到?jīng)Q策dSam0。
c.變量dpq被設定成等于2*dpq3。
d.對于樣本位置(xCb+xBl,yCb+yBl+3),如子條款8.7.2.5.6中所指定的用于亮度樣本的決策過程被樣本值pi,3、qi,3(其中i=0..3)調(diào)用,變量dpq、β和tC作為輸入,且輸出被指派到?jīng)Q策dSam3。
e.變量dE被設定成等于1。
f.當dSam0等于1且dSam3等于1時,變量dE被設定成等于2。
g.當dp小于(β+(β>>1))>>3時,變量dEp被設定成等于1。
h.當dq小于(β+(β>>1))>>3時,變量dEq被設定成等于1。
-否則(edgeType等于EDGE_HOR),以下排序步驟適用:
1.變量dpq0、dpq3、dp、dq和d導出如下:
dp0=Abs(p2,0-2*p1,0+p0,0) (8-302)
dp3=Abs(p2,3-2*p1,3+p0,3) (8-303)
dq0=Abs(q2,0-2*q1,0+q0,0) (8-304)
dq3=Abs(q2,3-2*q1,3+q0,3) (8-305)
dpq0=dp0+dq0 (8-306)
dpq3=dp3+dq3 (8-307)
dp=dp0+dp3 (8-308)
dq=dq0+dq3 (8-309)
d=dpq0+dpq3 (8-310)
2.變量dE、dEp和dEq被設定成等于0。
3.當d小于β時,以下排序步驟適用:
a.變量dpq被設定成等于2*dpq0。
b.對于樣本位置(xCb+xBl,yCb+yBl),如子條款8.7.2.5.6中所指定的用于亮度樣本的決策過程被樣本值p0,0、p3,0、q0,0和q3,0調(diào)用,變量dpq、β和tC作為輸入,且輸出被指派到?jīng)Q策dSam0。
c.變量dpq被設定成等于2*dpq3。
d.對于樣本位置(xCb+xBl+3,yCb+yBl),如子條款8.7.2.5.6中所指定的用于亮度樣本的決策過程被樣本值p0,3、p3,3、q0,3和q3,3調(diào)用,變量dpq、β和tC作為輸入,且輸出被指派到?jīng)Q策dSam3。
e.變量dE被設定成等于1。
f.當dSam0等于1且dSam3等于1時,變量dE被設定成等于2。
g.當dp小于(β+(β>>1))>>3時,變量dEp被設定成等于1。
h.當dq小于(β+(β>>1))>>3時,變量dEq被設定成等于1。
表8-11——從輸入Q導出閾值變量β′和tC′
應理解,解釋使用邊界強度值的一種方式的上述文字僅作為一個實例提供且不應被視為具限制性。可存在邊界強度值可用于解塊濾波技術的其它方式。另外,除HEVC的章節(jié)8.7.2外,HEVC中可存在使用邊界強度值的部分。
圖6是說明幀內(nèi)塊復制過程的實例的圖式。幀內(nèi)BC已包含于SCM中。圖6的實例包含當前譯碼單元(CU)90、位于搜索區(qū)域94中的預測塊92和塊向量96。在編碼期間,視頻編碼器20可以基于當前CU 90與預測塊92(其也可被稱作預測信號)之間的差值對當前CU 90的殘余進行編碼。視頻編碼器20可以將預測塊92定位在搜索區(qū)域94中,所述預測塊已經(jīng)在與當前CU 90相同的圖片中經(jīng)重建。視頻編碼器20可以使用塊向量96(其還可被稱作“偏移向量”或“位移向量”)來定位預測塊92。在一些情況下,例如預測塊92的預測信號可經(jīng)重建但不經(jīng)環(huán)路內(nèi)濾波,包含解塊和樣本自適應偏移(SAO)。
視頻編碼器20可編碼塊向量96以及殘余傳信。舉例來說,視頻編碼器20可在經(jīng)編碼視頻位流中包含識別或定義塊向量96的水平位移分量和塊向量96的豎直位移分量的一或多個語法元素。在一些情況下,如下文所提到,視頻編碼器20可預測塊向量96且在經(jīng)編碼視頻位流中包含指示塊向量96與預測值之間的差值的數(shù)據(jù)。視頻編碼器20還可以對殘余進行編碼,例如當前CU 90的像素值與預測塊92的像素值之間的差值。
視頻解碼器30可解碼一或多個語法元素以確定塊向量96(或指示塊向量96與塊向量預測值之間的差值的數(shù)據(jù)),且使用所確定的向量來識別當前CU 90的預測塊92。視頻解碼器30還可以對殘余進行解碼。視頻解碼器30可以通過組合經(jīng)解碼殘余與預測塊92的經(jīng)重建像素值(如通過塊向量96所識別)來重建當前CU 90。
在一些實例中,塊向量96的分辨率可以是整數(shù)像素,例如,被限制為具有整數(shù)像素分辨率。在此類實例中,水平位移分量和豎直位移分量的分辨率是整數(shù)像素。在此類實例中,視頻編碼器20和視頻解碼器30無需內(nèi)插預測塊92的像素值以確定用于當前CU 90的預測值。在其它實例中,水平位移分量和豎直位移分量中的一個或兩個的分辨率可以是亞像素分辨率。舉例來說,豎直分量和水平分量中的一個可具有整數(shù)像素分辨率,而另一個具有亞像素分辨率。
如上文所提及,塊向量96可以整數(shù)級經(jīng)預測且傳信。舉例來說,在一些情況下,可以類似于本文中所描述的運動向量的預測的方式來預測塊向量96。也就是說,視頻編碼器20可編碼(且視頻解碼器30可解碼)塊向量96與塊向量預測值之間的塊向量差的指示,而非在位流中包含塊向量96的指示。塊向量96可以整數(shù)級經(jīng)預測且傳信。在當前SCM中,可在每一CTB的開始處將塊向量預測值設定成(-w,0),其中w是CU的寬度。塊向量預測值可被更新為最近經(jīng)譯碼CU/PU中的一個,所述最近經(jīng)譯碼CU/PU是以幀內(nèi)BC模式譯碼的。如果CU/PU不是以幀內(nèi)BC譯碼的,那么塊向量預測值保持不變。在塊向量預測之后,使用如HEVC中的運動向量差譯碼方法來編碼塊向量差(例如,當前塊向量與塊向量預測值之間的塊向量差)。因此,雖然本文中所描述的某些技術包含在位流中傳信塊向量(例如,塊向量96)的指示,但應理解,在一些情況下,可替代地傳信塊向量差的指示。
在CU和PU兩個層級下啟用當前幀內(nèi)BC模式。對于PU層級幀內(nèi)BC,針對全部CU大小支持2N×N和N×2N PU分割區(qū)。另外,當CU是最小CU時,支持N×N PU分割區(qū)。
圖7說明用于合并模式和AMVP模式的空間相鄰運動向量候選者。舉例來說,HEVC標準包含兩種幀間預測模式,包含合并模式和AMVP模式。在AMVP或合并模式中,針對多個運動向量預測符維持運動向量(MV)候選者列表。當前PU的運動向量(以及合并模式中的參考索引)是通過從MV候選者列表獲取一個候選者而產(chǎn)生。MV候選者列表含有用于合并模式的多達5個候選者和用于AMVP模式的僅兩個候選者。合并候選者可含有運動信息集合,例如對應于參考圖片列表(列表0和列表1)和參考索引兩者的運動向量。如果通過合并索引來識別合并候選者,那么參考圖片用于當前塊的預測且相關聯(lián)的運動向量得以確定。然而,在AMVP模式下,對于從列表0或列表1起的每一潛在預測方向,將參考索引連同對MV候選者列表的MVP索引一起明確地傳信,這是因為AMVP候選者僅含有運動向量。在AMVP模式中,可進一步優(yōu)化經(jīng)預測運動向量。因此,合并候選者對應于運動信息的完整集合,而AMVP候選者僅含有用于特定預測方向和參考索引的一個運動向量。以類似方式從相同空間和時間相鄰塊導出用于兩種模式的候選者。
在合并模式中,圖7中示出五個空間MV候選者的位置。每一候選者位置的可用性可根據(jù)以下次序進行檢查:{a1,b1,b0,a0,b2}。
在AVMP模式中,相鄰塊可用于建構MV候選者列表。相鄰塊可劃分成兩個群組:由塊a0和a1組成的左側群組,以及由塊b0、b1和b2組成的上方群組。對于左側群組,根據(jù)次序:{a0,a1}來檢查可用性。對于上方群組,根據(jù)次序:{b0,b1,b2}來檢查可用性。對于每一群組,如由傳信的參考索引所指示的參考同一參考圖片的相鄰塊中的潛在候選者具有最高待選優(yōu)先級,以形成所述群組的最終候選者。有可能所有相鄰塊均不含有指向同一參考圖片的運動向量。在此類情況下,如果無法找到此類候選者,那么可按比例縮放第一可用候選者以形成最終候選者,因此可補償時間距離差異。
一般來說,可針對當前PU/CU的亮度分量導出運動向量。在使用運動向量進行色度運動補償之前,可基于色度取樣格式按比例縮放運動向量。
在HEVC中,可將LCU劃分成若干并行運動估計區(qū)域(MER),且僅允許將屬于與當前PU不同的MER的那些相鄰PU包含于合并/跳過MVP列表建構過程中??稍趫D片參數(shù)集中將MER的大小傳信為log2_parallel_merge_level_minus2。當MER大小大于N×N(其中2N×2N是最小CU大小)時,MER以以下方式起作用:如果空間相鄰塊在與當前PU相同的MER內(nèi)部,那么其被視為不可用。
圖8是說明針對圖片中的譯碼單元(CU)的實例幀內(nèi)塊復制(IBC)預測分配的概念圖。不同于幀間模式,IBC模式將同一圖片內(nèi)已經(jīng)解碼的未經(jīng)濾波樣本用于其預測。在當前測試模型中,對于IBC模式,搜索范圍是不受限制的(全量搜索IBC)。
如圖8中所展示,可從先前經(jīng)解碼的未經(jīng)濾波樣本中的任一者(格紋塊)預測當前塊(以黑色填充)。由于在當前圖片中的所有塊經(jīng)解碼之前,格紋塊的用量信息是未知的,因此IBC可引入所有經(jīng)解碼塊的未經(jīng)濾波樣本的額外存儲。然而,可以觀察到,一些區(qū)域(以灰色填充)并不用于IBC預測且這個用量取決于內(nèi)容的特性。因此,從帶寬視角來說,始終存儲當前圖片的先前經(jīng)解碼的未經(jīng)濾波樣本(包含以灰色填充的區(qū)域)可為低效的。
在本發(fā)明中描述的技術中,IBC預測用量信息可經(jīng)指示(例如,作為一個非限制性實例通過視頻編碼器20指示),使得解碼器(例如,視頻解碼器30)可選擇性地存儲用于使用IBC模式的預測的區(qū)域(且在一些實例中,僅存儲所述區(qū)域)。這類存儲可減小平均帶寬。
下文描述根據(jù)本發(fā)明中描述的技術的實例。以下實例中的每一個可以分別應用或與其它實例中的一或多個共同應用。在以下實例中,術語“傳信”用于指示信息的包含。舉例來說,在以下實例中視頻編碼器20可傳信(例如,輸出)信息,且在以下實例中視頻解碼器30可接收信息。然而,傳信這類信息的視頻編碼器20和接收這類信息的視頻解碼器30僅出于說明的目的提供。
在一個實例中,可針對每一CTB傳信一旗標以指示是否參考一特定CTB以用于至少一個塊的使用IBC模式的預測。在一個實例中,可針對每一區(qū)域傳信一旗標以指示是否參考一特定區(qū)域以用于至少一個塊的使用IBC模式的預測。區(qū)域可處于不同粒度水平,例如圖片、圖塊、切片、PU塊、CU、CTB、一組CTB或N×N(例如,64×64)的固定大小,或M×N(例如,16×32或32×16等)的矩形分割區(qū)。
可在如VPS、SPS、PPS、切片標頭或其擴展的各種粒度水平下傳信上述信息(每一區(qū)域(包含CTB)參考用量的旗標)。替代地或另外,此(上述信息)可在SEI消息中進行傳信。在一些實例中,此(上述信息)可基于是否啟用幀內(nèi)塊復制模式而條件性地傳信。
在一些實例中,可傳信另一選通旗標以指示上述信息(IBC參考用量)的存在。這個選通旗標可在如VPS、SPS、PPS、切片標頭或其擴展的各種粒度水平下進行傳信。
可需要明確地傳信CTU(或通常具有各種粒度水平的塊)的數(shù)目,以識別指示所述CTB是否用作幀內(nèi)塊復制參考的經(jīng)譯碼或經(jīng)解碼旗標的數(shù)目。舉例來說,當在切片標頭中傳信旗標時,這個傳信操作可為有用的(且在一些實例中為必要的),因為包含到切片中的CTU的數(shù)目可能是事先未知的。然而,如果啟用波前平行處理(WPP)或圖塊,那么這類信息(CTU的數(shù)目)可為可獲得的,且因此可不需要額外地加以傳信,因此可僅在使用WPP或圖塊時傳信(例如,僅傳信)CTU的數(shù)目。
下文描述一個實例實施方案。
常用切片段標頭語法
num_ctb_in_slice指定切片標頭中ibc_ref_usage_info[i]語法元素的數(shù)目。當不存在時,推斷num_ctb_in_slice的值等于0。
等于0的ibc_ref_usage_info[i]指定譯碼塊樹i內(nèi)沒有樣本用于當前圖片中幀內(nèi)塊復制模式的預測。等于0的ibc_ref_usage_info[i]指定譯碼塊樹i內(nèi)的樣本可用于當前圖片中幀內(nèi)塊復制模式的預測。當ibc_ref_usage_info[i]不存在時,推斷其等于1。
常用圖片參數(shù)集RBSP語法
等于1的pps_ibc_ref_usage_present_flag指定幀內(nèi)塊復制參考用量消息存在于切片的所有經(jīng)譯碼樹塊的切片段標頭中。等于0的pps_ibc_ref_usage_present_flag指定幀內(nèi)塊復制參考用量消息不存在于切片段標頭中。當pps_ibc_ref_usage_present_flag不存在時,推斷其等于0。
圖9是說明根據(jù)本發(fā)明的一個實例技術的流程圖。圖9的實例說明視頻編碼器20和視頻解碼器30兩者都可執(zhí)行的處理視頻數(shù)據(jù)的方法,且因此關于視頻譯碼器描述圖9。
視頻譯碼器可確定視頻數(shù)據(jù)圖片中的當前塊的譯碼模式和所述視頻數(shù)據(jù)圖片中的相鄰塊的譯碼模式(100)。視頻譯碼器可基于當前塊或相鄰塊中的一者為經(jīng)幀內(nèi)塊復制(IBC)譯碼塊且另一者為經(jīng)幀間譯碼塊而執(zhí)行邊界強度值確定過程,以確定邊界強度值(102)。所述邊界強度值確定過程不包含識別經(jīng)幀間譯碼塊的運動向量。另外,所述邊界強度值確定過程不同于在當前塊或相鄰塊中的一者經(jīng)幀內(nèi)譯碼且另一者經(jīng)IBC譯碼時的邊界強度值確定過程。所述邊界強度值確定過程可為在當前塊和相鄰塊兩者都為經(jīng)IBC譯碼塊時的相同邊界強度值確定過程。
在一些實例中,為了執(zhí)行邊界強度值確定過程,視頻譯碼器可設定邊界強度值等于一。在一些實例中,為了執(zhí)行邊界強度值,視頻譯碼器可(例如,基于塊向量)確定經(jīng)IBC譯碼塊的參考塊,確定所述參考塊中任一像素是否是以幀內(nèi)預測模式或IBC模式譯碼的。視頻譯碼器可基于所述參考塊中的任一像素以幀內(nèi)預測模式或IBC模式譯碼而設定邊界強度值等于二,或基于所述參考塊中沒有像素以幀內(nèi)預測模式或IBC模式譯碼而設定邊界強度值等于一。
視頻譯碼器可基于所確定的邊界強度值沿當前塊與相鄰塊之間的邊緣進行解塊濾波(104)。視頻譯碼器可將當前塊的所得經(jīng)解塊濾波像素值存儲于參考圖片存儲器(例如,參考圖片存儲器64或參考圖片存儲器82)中。
圖10是說明根據(jù)本發(fā)明的一個實例技術的流程圖。圖10的實例說明視頻編碼器20和視頻解碼器30兩者都可執(zhí)行的處理視頻數(shù)據(jù)的方法,且因此關于視頻譯碼器描述圖9。
視頻譯碼器可確定是否參考所述圖片中的一區(qū)域以用于所述圖片中至少一個塊的使用IBC模式的預測(106)。視頻譯碼器可基于對參考所述區(qū)域以用于使用IBC模式的預測的確定而將圖片中所述區(qū)域的未經(jīng)濾波像素值存儲于參考圖片存儲器中(108)。視頻譯碼器可基于對不參考所述區(qū)域以用于使用IBC模式的預測的確定而避免存儲圖片中所述區(qū)域的未經(jīng)濾波像素值(110)。
舉例來說,當視頻解碼器30執(zhí)行圖10的實例技術時,視頻解碼器30可在VPS、SPS、PPS、切片標頭或SEI消息中的一或多者中接收信息(例如,旗標),且可基于所接收的信息確定是否參考圖片中的所述區(qū)域以用于所述塊的使用IBC模式的預測。當視頻編碼器20執(zhí)行圖10的實例技術時,視頻編碼器20可在VPS、SPS、PPS、切片標頭或SEI消息中的一或多者中輸出信息(例如,旗標),所述信息識別是否參考圖片中的一區(qū)域以用于圖片中至少一個塊的使用IBC模式的預測。
應認識到,取決于實例,本文中所描述的技術中任一者的某些動作或事件可以用不同序列來執(zhí)行,可以添加、合并或全部省略(例如,實踐所述技術未必需要所有的所描述動作或事件)。此外,在某些實例中,可(例如)通過多線程處理、中斷處理或多個處理器同時而非順序地執(zhí)行動作或事件。
出于說明的目的,已經(jīng)相對于開發(fā)HEVC標準而描述本發(fā)明的某些方面。然而,本發(fā)明中描述的技術可有用于其它視頻譯碼過程,包含尚未開發(fā)的其它標準或?qū)S幸曨l譯碼過程。
如本發(fā)明中所描述,視頻譯碼器可以指視頻編碼器或視頻解碼器。類似地,視頻譯碼單元可指視頻編碼器或視頻解碼器。同樣地,在適用時,視頻譯碼可指視頻編碼或視頻解碼。另外,編碼視頻數(shù)據(jù)和/或解碼視頻數(shù)據(jù)通常可被稱作處理視頻數(shù)據(jù)。
在一或多個實例中,所描述的功能可在硬件、軟件、固件或其任何組合中實施。如果用軟件實施,那么所述功能可作為一或多個指令或代碼在計算機可讀媒體上存儲或發(fā)射,且由基于硬件的處理單元執(zhí)行。計算機可讀媒體可包含計算機可讀存儲媒體,其對應于例如數(shù)據(jù)存儲媒體等有形媒體。
數(shù)據(jù)存儲媒體可為可由一或多個計算機或一或多個處理器存取以檢索用于實施本發(fā)明中描述的技術的指令、代碼和/或數(shù)據(jù)結構的任何可用媒體。計算機程序產(chǎn)品可以包含計算機可讀媒體。
借助于實例而非限制,此類計算機可讀存儲媒體可包括RAM、ROM、EEPROM、CD-ROM或其它光盤存儲裝置、磁盤存儲裝置或其它磁性存儲裝置、快閃存儲器或可以用來存儲呈指令或數(shù)據(jù)結構形式的所要程序代碼并且可以由計算機存取的任何其它媒體。并且,任何連接被恰當?shù)胤Q作計算機可讀媒體。舉例來說,如果使用同軸纜線、光纖纜線、雙絞線、數(shù)字訂戶線(DSL)或例如紅外線、無線電和微波等無線技術從網(wǎng)站、服務器或其它遠程源發(fā)射指令,那么同軸纜線、光纖纜線、雙絞線、DSL或例如紅外線、無線電和微波等無線技術包含在媒體的定義中。
然而,應理解,所述計算機可讀存儲媒體和數(shù)據(jù)存儲媒體并不包含連接、載波、信號或其它暫時媒體,而是實際上針對于非暫時性有形存儲媒體。如本文中所使用,磁盤和光盤包含壓縮光盤(CD)、激光光盤、光學光盤、數(shù)字多功能光盤(DVD)、軟盤和藍光光盤,其中磁盤通常以磁性方式再現(xiàn)數(shù)據(jù),而光盤利用激光以光學方式再現(xiàn)數(shù)據(jù)。以上各項的組合也應包含在計算機可讀媒體的范圍內(nèi)。
可由例如一或多個數(shù)字信號處理器(DSP)、通用微處理器、專用集成電路(ASIC)、現(xiàn)場可編程邏輯陣列(FPGA)或其它等效集成或離散邏輯電路的一或多個處理器來執(zhí)行指令。因此,如本文中所使用的術語“處理器”可指前述結構或適合于實施本文中所描述的技術的任一其它結構中的任一者。另外,在一些方面中,本文中所描述的功能性可以在經(jīng)配置用于編碼和解碼的專用硬件和/或軟件模塊內(nèi)提供,或者并入在組合式編解碼器中。而且,所述技術可完全實施于一或多個電路或邏輯元件中。
本發(fā)明的所述技術可在包含無線手持機、集成電路(IC)或一組IC(例如,芯片組)的廣泛多種裝置或設備中實施。本發(fā)明中描述各種組件、模塊或單元是為了強調(diào)經(jīng)配置以執(zhí)行所公開的技術的裝置的功能方面,但未必需要由不同硬件單元實現(xiàn)。實際上,如上文所描述,各種單元可以結合合適的軟件及/或固件組合在編碼解碼器硬件單元中,或者通過互操作硬件單元的集合來提供,所述硬件單元包含如上文所描述的一或多個處理器。
描述了各種實例。所述和其它實例屬于所附權利要求書的范圍內(nèi)。