【相關(guān)申請的交叉引用】
本發(fā)明主張申請于2014年9月1日,序列號為62/044,385的美國臨時專利中請的優(yōu)先權(quán)。將此美國臨時專利申請以參考的方式并入本文中。
【技術(shù)領(lǐng)域】
本發(fā)明涉及使用幀內(nèi)圖片塊復(fù)制(intrapictureblockcopy,intrabc)模式的屏幕內(nèi)容或視頻編碼。特別地,本發(fā)明涉及對應(yīng)于intrabc的預(yù)測子作為用于屏幕內(nèi)容編碼或視頻編碼的合并或跳過候選。
背景技術(shù):
高效視頻編碼(highefficiencyvideocoding,hevc)是近年被開發(fā)出來的一種新的編碼標(biāo)準(zhǔn)。于hevc系統(tǒng)中,h.264/avc中的固定大小的宏區(qū)塊由稱為編碼單元(codingunit,cu)的可變塊(flexibleblock)來替代。cu中的像素共用相同的編碼參數(shù)以提升編碼效率。cu可以從最大cu(largestcu,lcu)開始,于hevc中,其也被稱為編碼樹單元(codedtreeunit,ctu)。除編碼單元的概念以外,hevc中也引入了預(yù)測單元(predictionunit,pu)的概念。當(dāng)cu分層樹的分割被執(zhí)行,根據(jù)預(yù)測類型以及pu分區(qū),每個葉cu(leafcu)可以進(jìn)一步被分割為一個或多個pu。
在用于hevc標(biāo)準(zhǔn)的范圍擴(kuò)展(rangeextensions,rext)或屏幕內(nèi)容編碼的當(dāng)前發(fā)展過程中,一些工具已經(jīng)因其能改善屏幕內(nèi)容的編碼效率而被采用。對于幀內(nèi)編碼塊,根據(jù)現(xiàn)有的方法,幀內(nèi)預(yù)測是使用基于來自相鄰塊的重建像素的預(yù)測來執(zhí)行。幀內(nèi)預(yù)測可從一組幀內(nèi)模式中選擇一個幀內(nèi)預(yù)測模式,其中,一組幀內(nèi)模式包括:垂直模式、水平模式、以及各種角度的預(yù)測模式。對于hevc范圍擴(kuò)展以及屏幕內(nèi)容編碼,已經(jīng)公開了一種被稱為幀內(nèi)圖片塊復(fù)制(intrapictureblockcopy,intrabc)的新的幀內(nèi)編碼模式。intrabc技術(shù)最初由budagavi于ahg8(videocodingusingintramotioncompensation,jointcollaborativeteamonvideocoding(jct-vc)ofitu-tsg16wp3andiso/iecjtc1/sc29/wg11,13thmeeting:incheon,kr,18-26apr.2013,document:jctvc-m0350(在下文中被稱為jctvc-m0350))中提出。根據(jù)jctvc-m0350的示例如圖1所示,其中,當(dāng)前編碼單元(codingunit,cu)110使用幀內(nèi)圖片塊復(fù)制模式來編碼。預(yù)測塊(predictionblock)120是由當(dāng)前cu以及位移向量112來定位。位移向量也被稱為塊向量(blockvector,bv)。在此示例中,搜索區(qū)域被限制在當(dāng)前編碼樹單元(codingtreeunit,ctu)、左側(cè)ctu、以及左側(cè)的左側(cè)ctu(left-leftctu)。預(yù)測塊是從已經(jīng)重建的區(qū)域獲得。接著,對當(dāng)前cu的位移向量以及殘差進(jìn)行編碼。眾所周知,hevc采用ctu以及cu塊結(jié)構(gòu)來作為用于編碼視頻數(shù)據(jù)的基本單元。每個圖片被分割為多個ctu,且每個ctu被簡單地分割為多個cu。在預(yù)測階段,每個cu可被分割為多個被稱為預(yù)測單元(predictionunit,pu)的塊,用于執(zhí)行預(yù)測過程。在用于每個cu的預(yù)測殘差形成后,與每個cu相關(guān)聯(lián)的殘差被分割為多個被稱為變換單元(transformunit,tu)的塊,以應(yīng)用變換(例如,離散余弦變換(discretecosinetransform,dct))。
于jctvc-m0350中,intrabc至少在以下方面是不同于用于幀間預(yù)測的運(yùn)動補(bǔ)償:
·用于intrabc的bv被限制為一維(1d)(即,水平或垂直),而幀間預(yù)測使用二維(2d)運(yùn)動估計。
·用于intrabc的二進(jìn)制化為固定長度,而幀間預(yù)測使用指數(shù)哥倫布(exponential-golomb)。
·intrabc引入了一個新的語法元素來標(biāo)識bv是水平還是垂直。
基于jctvc-m0350,一些修改由pang等作者于non-rce3(intramotioncompensationwith2-dmvs,jointcollaborativeteamonvideocoding(jct-vc)ofitu-tsg16wp3andiso/iecjtc1/sc29/wg11,14thmeeting:vienna,at,25july-2aug.2013,document:jctvc-n0256(在下文中被稱為jctvc-n0256))中揭露。首先,intrabc被擴(kuò)展以支持2d運(yùn)動向量(motionvector,mv),使得垂直以及水平的mv分量可以同時是非零的。這比原始方法為intrabc提供了更多的靈活性,其中,mv被限制為嚴(yán)格水平或垂直。
于jctvc-n0256中,揭露了兩個bv編碼方法:
·方法1:塊向量預(yù)測。選擇左側(cè)或上方bv作為bv預(yù)測子,并對所得到的運(yùn)動向量差(motionvectordifference,bvd)進(jìn)行編碼。使用一旗標(biāo)來指示bvd是否為零。當(dāng)bvd不為零時,使用3階的指數(shù)哥倫布碼來對bvd的剩余絕對電平進(jìn)行編碼。另一旗標(biāo)被用于編碼符號(sign)。
·方法2:非塊向量預(yù)測。bv使用用于hevc中的bvd的指數(shù)哥倫布碼來編碼。
jctvc-n0256中所揭露的另一差別在于2dintrabc進(jìn)一步與管線友好方法(pipelinefriendlyapproach)合并:
1.不使用內(nèi)插濾波器。
2.bv搜索區(qū)域被限制。揭露了兩種情況:
a.搜索區(qū)域?yàn)楫?dāng)前ctu以及左側(cè)ctu,或
b.搜索區(qū)域是當(dāng)前ctu以及左側(cè)ctu的最右邊4列樣本。
于jctvc-n0256所提出的方法中,hevcrext標(biāo)準(zhǔn)草案的新版本中已經(jīng)采用了2dintrabc、內(nèi)插濾波器的移除、以及將搜索區(qū)域限制在當(dāng)前ctu以及左側(cè)ctu。
根據(jù)jctvc-r0309(pang,etal.,non-scce1:combinationofjctvc-r0185andjctvc-r0203,jointcollaborativeteamonvideocoding(jct-vc)ofitu-tsg16wp3andiso/iecjtc1/sc29/wg11,18thmeeting:sapporo,jp,30june-9july2014,document:jctvc-r0309(在下文中被稱為jctvc-r0309)),bv編碼被修改以使用相鄰已編碼的bv來作為bv預(yù)測子(bvpredictor,bvp)。導(dǎo)出bv預(yù)測子的方式類似于hevc中的高級運(yùn)動向量預(yù)測(advancedmotionvectorprediction,amvp)方案。通過根據(jù)如圖2所示的優(yōu)先權(quán)順序首先檢查空間相鄰塊a1以及b1的bv的可用性來構(gòu)建預(yù)測子候選列表。如果這兩個空間鄰居(spatialneighbor)都不包括塊向量,則最后兩個已編碼bv被用來填充塊向量候選列表,以使列表將包含兩個不同的條目。最后兩個已編碼bv被初始化為(-2*cu_width,0)以及(-cu_width,0)。為了避免需要線緩沖器來存儲先前已編碼的bv,當(dāng)前ctu外部的任何空間相鄰塊a1以及b1以及最后的bv被認(rèn)為是不可用的。用于每個ctu的最后兩個已編碼bv被重置為(0、0)以防止數(shù)據(jù)依賴(datadependency)。
而且,于hevc中,合并候選是由用于編碼于幀間已編碼條帶的當(dāng)前塊的空間/時間相鄰塊導(dǎo)出。合并旗標(biāo)(merge_flag)被用于標(biāo)識當(dāng)前塊是否被合并至其候選中的一個。如果merge_flag指示當(dāng)前塊使用合并模式,則使用另一索引來指示哪個候選被用于合并模式。例如,如果圖2中的候選塊a1被標(biāo)識為將要被使用的候選,則當(dāng)前塊將與塊al共享相同的mv以及參考圖片。
如果任何合并候選是不可用的(例如:不存在或不是幀間編碼),則插入一個或多個附加候選(additionalcandidate)。如果插入附加候選后合并候選列表仍然不滿,參考圖片索引(refidx)等于0的零值運(yùn)動向量將被用于填充所有空的候選(emptycandidate)。
可插入兩個類型的附加候選:
1.組合雙向預(yù)測合并候選(combinedbi-predictivemergecandidate)(候選類型1),
2.零向量合并/amvp候選(候選類型2)。
類型2的附加候選被插入到類型1的附加候選后。
對于類型1的候選,組合雙向預(yù)測合并候選是通過組合原始合并候選來創(chuàng)建。特別地,來自原始候選中的兩個候選被用于創(chuàng)建雙向預(yù)測合并候選。原始候選可包含具有refidxl0(列表0中的參考圖片索引)的mvl0(列表0中的運(yùn)動向量)或具有refidxl1(列表1中的參考圖片索引)的mvl1(列表1中的運(yùn)動向量)。圖3a以及圖3b所示為組合雙向預(yù)測合并候選的導(dǎo)出過程的示例,其中,mvl0_a以及mvl1_b為兩個單向預(yù)測合并候選。圖3a所示為原始合并候選列表310以及添加組合候選320后的合并候選列表,其中,添加的合并候選通過虛線背景突出顯示。另外,合并索引0被分配給單向預(yù)測合并候選mvl0_a,合并索引1被分配給單向預(yù)測合并候選mvl1_b,且合并索引2被分配給雙向預(yù)測合并候選(mvl0_a,mvl1_b)。如圖3b所示,候選mvl0_a指向參考列表l0中的參考圖片ref0,且候選mvl1_b指向參考列表l1中的參考圖片ref0。如圖3b所示,兩個單向預(yù)測合并候選被組合為一個雙向預(yù)測合并候選。
于類型2的候選中,零值(zero-valued)合并/amvp候選是通過組合可被參考的零值和參考圖片索引來創(chuàng)建。圖4a所示為將零值合并候選添加到原始合并候選列表410中以形成填充后的合并候選列表420的示例。圖4b所示為將零值amvp候選添加到原始amvp候選列表430中以形成填充后的amvp候選列表440的示例。如果零值候選不重復(fù),則將其添加到合并/amvp候選集合中。
希望能進(jìn)一步改善intrabc模式的性能。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明揭露了一種用于圖片的使用包括幀內(nèi)塊復(fù)制(intra-blockcopy,intrabc)模式的一個或多個編碼模式的屏幕內(nèi)容編碼(screencontentcoding,scc)以及視頻編碼的方法。在一個實(shí)施例中,包括一個或多個intrabc合并候選以及一個或多個幀間合并候選的第一合并候選列表被導(dǎo)出。如果intrabc合并候選是從用于當(dāng)前塊的第一合并候選列表中選擇,則通過將所選擇的intrabc合并候選的候選運(yùn)動信息共享為當(dāng)前塊的當(dāng)前運(yùn)動信息來對當(dāng)前塊的當(dāng)前運(yùn)動信息進(jìn)行編碼或解碼,且當(dāng)前塊使用當(dāng)前圖片中的已編碼塊來編碼或解碼,其中,當(dāng)前圖片中的已編碼塊是根據(jù)作為intrabc預(yù)測子的所選擇的intrabc合并候選的候選運(yùn)動信息來定位。候選運(yùn)動信息或當(dāng)前運(yùn)動信息可包含從包括編碼模式、位移向量、以及參考圖片信息的運(yùn)動信息組中所選擇的一個或多個元素。編碼模式可包括intrabc模式以及幀間模式位移向量可對應(yīng)于塊向量(blockvector,bv)或運(yùn)動向量(motionvector,mv);且參考圖片信息可包含參考圖片索引(refidx)、參考圖片列表(reflist)、或參考圖片索引(refidx)以及參考圖片列表(reflist)。
第一合并候選列表中包括的每個幀間合并候選的候選運(yùn)動信息識別一個參考列表中的一個時間參考圖片中的一個時間參考塊。此外,如果幀間合并候選是從用于當(dāng)前塊的第一合并候選列表中選擇,則通過將所述一個幀間合并候選的候選運(yùn)動信息共享為當(dāng)前塊的當(dāng)前運(yùn)動信息來編碼或解碼當(dāng)前塊的當(dāng)前運(yùn)動信息,且使用一個參考列表中根據(jù)作為幀間預(yù)測子的當(dāng)前運(yùn)動信息來定位的一個時間參考圖片中的已編碼塊來編碼或解碼當(dāng)前塊。
可基于編碼于intrabc模式或幀間模式的一個或多個空間相鄰塊、一個或多個時間塊、或一個或多個空間相鄰塊以及一個或多個時間塊來導(dǎo)出第一合并候選列表。之后,如果第一合并候選列表未滿,則可將一個或多個預(yù)定義的非零塊向量、一個或多個最后編碼的塊向量、或一個或多個預(yù)定義的非零塊向量以及一個或多個最后編碼的塊向量添加到第一合并候選列表。非零塊向量可對應(yīng)于從包括(-w,0)、(-2w,0)、(0,-h)、(0,-2h)以及(-w,-h)的預(yù)定義的bv組中選擇的一個或多個元素,其中,w以及h分別對應(yīng)于當(dāng)前塊的寬度以及高度。部分的或所有的預(yù)定義的非零塊向量、最后編碼的塊向量、或預(yù)定義的非零塊向量以及最后編碼的塊向量可被添加到雙向預(yù)測合并候選之前,或被添加到雙向預(yù)測合并候選之后以及零值合并/amvp候選之前。在以上附加候選被添加之前或之后,第一合并候選列表可被修剪以移除任何冗余合并候選。編碼于intrabc模式的空間相鄰塊可被限制在當(dāng)前塊的當(dāng)前ctu內(nèi),或當(dāng)前ctu以及當(dāng)前塊的上方的上方ctu內(nèi)。在此情況下,通過對大于最小塊尺寸的每個目標(biāo)塊尺寸存儲一個塊向量,可以壓縮形式來存儲與編碼于intrabc模式的空間相鄰塊相關(guān)聯(lián)的塊向量。
與intrabc合并候選相關(guān)聯(lián)的塊向量可通過重新使用用于存儲與幀間編碼塊相關(guān)聯(lián)的運(yùn)動向量的幀間運(yùn)動向量緩沖器來存儲。
于當(dāng)前塊使用intrabc模式來編碼時,可于編碼器側(cè)傳送(signaled)或于解碼器側(cè)解析(parsed)對應(yīng)于合并候選索引的第一語法,以從第一合并候選列表選擇intrabc合并候選。類似地,于當(dāng)前塊使用幀間模式來編碼時,可于編碼器側(cè)傳送或于解碼器例解析對應(yīng)于合并候選索引的第一語法,以從第一合并候選列表選擇幀間合并候選。
當(dāng)純的intrabc合并候選列表被使用時,可將與第一合并候選列表中intrabc合并候選的最大數(shù)量相關(guān)的語法并入條帶標(biāo)頭、圖片參數(shù)集(pictureparameterset,pps)、序列參數(shù)集(sequenceparameterset,sps)、視頻參數(shù)集(videoparameterset,vps)、條帶標(biāo)頭scc擴(kuò)展、ppsscc擴(kuò)展、spsscc擴(kuò)展、或vpsscc擴(kuò)展。
在另一實(shí)施例中,如果當(dāng)前塊被編碼于intrabc模式,用于當(dāng)前塊的當(dāng)前塊向量被傳送于編碼器側(cè),或被解析于解碼器側(cè)。通過重新使用用于存儲已編碼塊的運(yùn)動向量的幀間運(yùn)動向量緩沖器來存儲當(dāng)前塊向量。于當(dāng)前塊向量被存儲于幀間運(yùn)動向量緩沖器時,當(dāng)前塊向量對幀間運(yùn)動向量緩沖器的重新使用可通過將用于當(dāng)前塊的參考圖片索引設(shè)置為-1、不可用的、或等于或大于參考列表中參考圖片的數(shù)量的值,或?qū)g預(yù)測方向interdir設(shè)置為0來指示。
【附圖說明】
圖1所示為根據(jù)幀內(nèi)圖片塊復(fù)制(intrapictureblockcopy,intrabc)模式的幀內(nèi)運(yùn)動補(bǔ)償?shù)氖纠?,其中,水平位移向量被使用?/p>
圖2所示為用于導(dǎo)出用于hevcamvp的運(yùn)動向量預(yù)測子的相鄰塊配置,其中,根據(jù)jctvc-r0309,塊a1以及b1被用于導(dǎo)出用于intrabc模式的mvp候選。
圖3a以及圖3b所示為根據(jù)hevc的組合雙向預(yù)測合并候選的導(dǎo)出過程的示例,其中,圖3a所示為原始合并候選列表以及具有附加的雙向預(yù)測候選的合并候選列表,且圖3b所示為單向預(yù)測運(yùn)動向量以及導(dǎo)出的組合雙向預(yù)測運(yùn)動向量的場景。
圖4a以及圖4b所示為根據(jù)hevc的將預(yù)設(shè)的候選增加到未滿的合并/amvp列表的示例,其中,圖4a所示為合并候選列表的情況,且圖4b所示為amvp候選列表的情況。
圖5所示為結(jié)合本發(fā)明實(shí)施例的示范性編碼系統(tǒng)的流程圖,其中,intrabc合并候選被包括以用于合并模式。
【具體實(shí)施方式】
下文的描述是實(shí)施本發(fā)明的最佳預(yù)期模式。這種描述是為了說明本發(fā)明的一般原理,且不應(yīng)被理解成對本發(fā)明的限制。本發(fā)明的范圍可通過參考所附權(quán)利要求做最好的確定。
在本發(fā)明中,揭露了基于intrabc預(yù)測的合并候選。跳過模式被認(rèn)為是合并模式的特定情況,其中,塊的殘差為零,使得不需要傳送殘差。因此,雖然以下的公開是針對用于合并模式的發(fā)明,需要理解的是,本公開也可擴(kuò)展到跳過模式。于本發(fā)明的一個實(shí)施例中,跳過模式以及合并模式被啟用以支持幀間預(yù)測以及intrabc預(yù)測。例如,以幀間模式或intrabc模式編碼的空間相鄰塊和/或時間相鄰塊(也被稱作:時間塊)可被認(rèn)為是有效的跳過或合并候選。
幀間以及intrabc合并候選的混合使用
當(dāng)對當(dāng)前塊啟用intrabc模式時,相鄰塊可被編碼于幀內(nèi)預(yù)測模式、幀間模式、或intrabc模式。根據(jù)本發(fā)明,除了幀間合并候選以外,還可使用一個或多個intrabc合并候選??筛鶕?jù)intrabc預(yù)測來導(dǎo)出合并候選。于hevc標(biāo)準(zhǔn)中,當(dāng)merge_flag為真(即,選擇合并模式)時,語法元素merge_idx用于標(biāo)識哪一個合并候選被用于合并到當(dāng)前塊。因此,如果merge_idx指向編碼于幀間模式的合并候選,則當(dāng)前塊將共享候選塊的編碼模式、位移向量、以及參考幀信息。類似地,如果merge_idx指向編碼于intrabc模式的合并候選,則當(dāng)前塊將共享候選塊的塊向量。例如,于圖2中,如果候選塊a1使用mv=mv_a1、reflist=reflist_a1以及refidx=refidx_a1來進(jìn)行幀間編碼,且候選塊b1使用bv=bv_b1來進(jìn)行intrabc編碼。當(dāng)merge_flag為真時,如果merge_idx指向塊a1,則當(dāng)前塊使用mv=mv_a1、reflist=reflist_a1、以及refidx=refidx_a1來進(jìn)行幀間編碼。如果merge_idx指向b1,則當(dāng)前塊使用bv=bv_b1來進(jìn)行intrabc編碼。
如果mode_intrabc表示用于intrabc預(yù)測模式的語法,且mode_inter表示用于幀間預(yù)測的語法,根據(jù)所選擇的合并候選,合并編碼塊(mergecodedblock)的預(yù)測模式可被設(shè)置為mode_inter或mode_intrabc。例如,如果所選擇的合并候選為幀間編碼塊(intercodedblock),則當(dāng)前塊的預(yù)測模式被設(shè)置為mode_inter。如果所選擇的合并候選為intrabc編碼塊(intrabccodedblock),則當(dāng)前塊的預(yù)測模式被設(shè)置為mode_intrabc。
如果intra_bc_flag被用于指示當(dāng)前塊是否為intrabc編碼塊,則根據(jù)所選擇的合并候選,此合并編碼塊的intra_bc_flag可被設(shè)置為0或1。例如,如果所選擇的合并候選為幀間編碼塊,則當(dāng)前塊的intra_bc_flag被設(shè)置為0。如果所選擇的合并候選為intrabc編碼塊,則當(dāng)前塊的intra_bc_flag被設(shè)置為1。
在一個示例中,對于混合的幀間/intrabc合并模式的情況,intrabc模式的信令(signaling)可位于pu等級。用于合并模式的語法首先被傳送。如果語法指示塊不是使用合并模式來編碼,則語法intra_bc_flag被用于表示非合并塊(non-mergeblock)是否使用intrabc模式來編碼。如果其不使用intrabc模式來編碼,則用于正常幀間模式的語法將被傳送。表1以及表2所示為結(jié)合本發(fā)明實(shí)施例的分別用于cu等級及pu等級的示范性語法表。
表1
表2
表1所示為根據(jù)一個實(shí)施例的來自現(xiàn)有的語法表的cu等級的改變的一個示例,其中,雙刪除線表示刪除。現(xiàn)有的編碼僅允許用于幀間已編碼cu的跳過模式。由于跳過模式被視為合并模式的特定情況,且合并模式可被用于intrabc編碼塊,因此,如注釋(1-1)所指示的用于檢查非幀內(nèi)cu的語法線被刪除。在此示例中,intrabc模式旗標(biāo)從cu等級移動到pu等級。因此,(1-2)以及(1-3)中指示的語法線也被刪除。
表2所示為根據(jù)一個實(shí)施例的來自現(xiàn)有的語法表的pu等級的改變的一個示例。merge_flag的位置是由注釋(2-1)來指示。當(dāng)由注釋(2-2)指示的非合并模式(即,“else”路徑)被使用時,如注釋(2-3)所示,并入intra_bc_flag。如注釋(2-4)所示,檢查intra_bc_flag的值。由注釋(2-5)所指示,如果pu為非intrabc編碼(即,“else”路徑),則用于幀間模式的語法跟隨(由“...”所示)由注釋(2-6)所指示。
于另一示例中,intrabc模式的信令可位于cu等級,表3以及表4所示為分別用于cu等級以及pu等級的示范性語法表。
表3
表4
表3所示為根據(jù)一個實(shí)施例的來自現(xiàn)有的語法表的cu等級的改變的一個示例,其中,雙刪除線表示刪除。表3類似于表1。如注釋(3-1)所指示的用于檢查非幀內(nèi)cu的語法線被刪除。intrabc模式旗標(biāo)保留于(3-2)以及(3-3)中所指示的cu等級。
表4所示為根據(jù)一個實(shí)施例的來自現(xiàn)有的語法表的cu等級的改變的一個示例。于注釋(4-1)指示的語法線中,檢查cu是否被編碼于跳過模式。如注釋(4-2)所指示,如果cu未被編碼于跳過模式且intrabc模式被啟用,則如注釋(4-3)所指示的merge旗標(biāo)merge_flag[x0][y0]被包括。由注釋(4-4)所指示,如果merge_flag[x0][y0]等于1,則如注釋(4-5)以及(4-6)所指示,與intrabc合并候選相關(guān)的信息被包括。如果merge_flag[x0][y0]等于0(即,由注釋(4-7)所指示的“else”路徑),則如注釋(4-8)以及(4-9)所指示,與bv編碼相關(guān)的信息被包括。來自注釋(4-3)到(4-7)的語法線對應(yīng)于支持本發(fā)明實(shí)施例的附加的語法線的示例。
于表3以及表4所示的實(shí)施例中,如果intra_bc_flag被顯式地標(biāo)識為1,則合并模式可以是純intrabc合并模式,且合并列表不包括幀間候選。這意味著對于合并候選導(dǎo)出,只有intrabc已編碼塊的bv被用作合并候選。幀間編碼塊的mv被視為不可用。如果預(yù)測模式被顯式地標(biāo)識為mode_inter(即,注釋(4-10)所指示的語法線),則合并模式可以是單獨(dú)的幀間合并模式。需要注意的是,跳過模式仍然是混合的幀間/intrabc跳過模式。
于另一示例中,intrabc模式的使用被標(biāo)識于cu等級。表5以及表6所示為分別用于cu等級以及pu等級的示范性語法表,其中,合并模式根據(jù)i條帶中的intra_bc_flag=1被標(biāo)識。于p條帶或b條帶中,合并模式語法與幀間合并模式編碼相同。根據(jù)本發(fā)明的實(shí)施例,如果當(dāng)前塊被編碼于intrabc編碼合并模式,由于intrabc編碼被視為幀間模式,則對應(yīng)語法元素將被解析于mode_inter預(yù)測模式。然而,如果所選擇的合并候選為intrabc編碼塊,預(yù)測模式將被設(shè)置為mode_intrabc或intra_bc_flag將被設(shè)置為1。
表5
表6
表5與表3相同。表6類似于表4。然而,只有當(dāng)如注釋(6-1)所指示的條件“if(slice_type==i_slice)”為真時,如注釋(4-3)所指示的合并旗標(biāo)merge_flag[x0][y0]被包括。
在如上所公開的實(shí)施例中,跳過模式也可被應(yīng)用于幀內(nèi)條帶,其中,跳過以及合并模式中的所有的有效合并候選也被用于幀內(nèi)條帶中的intrabc編碼塊。
合并候選列表創(chuàng)建(mergecandidatelistconstruction)
本發(fā)明的另一方面解決了合并候選列表創(chuàng)建。于本發(fā)明的實(shí)施例中,當(dāng)合并候選列表未滿時,預(yù)設(shè)的值被用作默認(rèn)的intrabc合并候選。
此外,根據(jù)本發(fā)明的實(shí)施例,在合并候選創(chuàng)建過程中,修剪過程可被使用。部分或全部的重復(fù)候選值將被移除。當(dāng)沒有足夠的候選來填充合并候選列表時,現(xiàn)有的方法通常使用(0、0)運(yùn)動向量來填充列表。但是,此零值bv對于intrabc預(yù)測是不可用的。因此,本發(fā)明的實(shí)施例使用非零值bv(也被稱為非零bv)作為附加的合并候選來填充候選列表。當(dāng)merge_idx指向這些附加候選中的一個時,當(dāng)前塊將被編碼于intrabc模式,且共享由merge_idx指向的合并候選的bv。
在一個實(shí)施例中,根據(jù)塊尺寸來確定非零值bv的預(yù)設(shè)值。例如,非零值bv的預(yù)設(shè)值對應(yīng)于有序集合{(-w,0),(-2w,0),(0,-h),(0,-2h),(-w,-h)},其中,w以及h是指當(dāng)前預(yù)測塊或當(dāng)前編碼單元的寬度以及高度。于以上示例中,如果列表未滿,候選(-w,0)將被插入到合并列表中。在第一個成員被添加到合并列表后,如果列表仍然未滿,則將有序集合中的第二元素(即,(-2w,0))添加到列表中。在另一實(shí)施例中,非零值bv的預(yù)設(shè)值對應(yīng)于有序集合{(-2w,0),(-w,0),(0,-2h),(0,-h),(-w,-h)}。
在另一實(shí)施例中,n個最后編碼的bv也可被用于填充候選列表。例如,n可等于1、2、3等。
在又一實(shí)施例中,可以同時使用n個最后編碼的bv以及預(yù)設(shè)值來填充候選列表。例如,可使用對應(yīng)于{第一最后編碼的bv,第二最后編碼的bv,(-w,0),(-2w,0),(0,-h)}或{第一最后編碼的bv,第二最后編碼的bv,(-2w,0),(-w,0),(0,-2h)}的有序集合。于這些兩個示例中,假設(shè)合并候選的最大數(shù)量為5。于又一示例中,最后編碼的bv可被放置在預(yù)設(shè)的bv之后。
如果候選恰好是當(dāng)前塊的相鄰塊的編碼bv,則最后編碼的bv可能已經(jīng)被放入合并候選列表中。修剪過程可被應(yīng)用于最后編碼的bv以移除冗余候選。例如,最后編碼的bv可與已經(jīng)存在于候選列表中的intrabc編碼候選進(jìn)行比較。冗余的最后編碼的bv可被移除。相同的修剪方法可被應(yīng)用于預(yù)設(shè)的bv(例如:(-w,0)、(-2w,0)、(0,-h)、(0,-2h)、以及(-w,-h))。
在添加一個或多個附加的合并候選以填充合并列表的過程中,部分或全部的附加的合并候選可于作為附加候選的類型1的組合雙向預(yù)測合并候選之前或之后被插入。例如,對應(yīng)于(-2w,0)以及(-w,0)的預(yù)設(shè)的bv可于組合雙向預(yù)測合并候選之前被插入。
上述填充的bv候選的部分或全部可于類型1的附加候選之后以及類型2的附加候選之前被插入合并列表中。例如,對應(yīng)于(-2w,0)以及(-w,0)的bv可被插入到類型1的附加候選之后以及類型2的附加候選之前。上述填充的bv候選的部分或全部也可于部分類型2的附加候選之后被插入到合并列表中。例如,對應(yīng)于(-2w,0)以及(-w,0)的bv可被插入到第一個類型2的附加候選之后。
上述填充的bv候選的部分或全部可被插入到類型2的附加候選之后以及參考圖片索引(refidx)等于0的零值運(yùn)動向量之前。例如,對應(yīng)于(-2w,0)以及(-w,0)的bv可被插入到類型2的附加候選之后。填充的bv候選的部分或全部可被用于替換類型2的附加候選。
上述填充的bv候選可以僅被應(yīng)用于i條帶。雖然上述的本公開使用預(yù)設(shè)的非零bv或最后編碼的bv作為附加的合并候選以及i條帶中類型1和/或類型2的附加候選,但類型1和/或類型2的附加候選也可被移除。
于類型1的附加候選導(dǎo)出中,可排除intrabc編碼bv以產(chǎn)生組合合并候選(combinedmergecandidate)。例如,如果合并候選0是intrabc編碼bv,則其不會被用于產(chǎn)生組合合并候選。
在現(xiàn)有的技術(shù)中,對應(yīng)圖片(collocatedpicture)中的時間候選可被用于合并模式以及amvp模式以用于幀間編碼塊。于合并候選以及amvpmv預(yù)測子導(dǎo)出中,intrabc編碼塊被視為不可用的。然而,在本發(fā)明的實(shí)施例中,對應(yīng)圖片中的intrabc編碼塊的bv被用作合并候選或bv預(yù)測子中的一個。例如,如果時間幀間候選(temporalintercandidate)是不可用的,則可用的時間intrabc候選被包括。對應(yīng)圖片中時間intrabc候選的位置可與對應(yīng)圖片中時間幀間候選的位置相同。
由于一些bv可能不是有效的bv,因此,無效的bv可從合并候選導(dǎo)出中被排除。例如,等于(0、0)的bv,或指向當(dāng)前圖片外部、未解碼的區(qū)域、或相同編碼單元內(nèi)已解碼的區(qū)域的bv是無效bv。這樣的bv可從候選合并列表中被移除。
編碼于intrabc模式的空間相鄰合并候選可被視為可用而沒有任何限制。然而,來自當(dāng)前塊上方的編碼于intrabc模式的空間相鄰合并候選可被限制在當(dāng)前ctu內(nèi)。如果候選來自于當(dāng)前塊上方的ctu,則將其視為不可用的。對相同ctu的相鄰候選的這種限制可以減輕對來自當(dāng)前塊上方的ctu行的候選的存儲的需求。在又一實(shí)施例中,來自當(dāng)前塊上方的相鄰候選塊被限制在當(dāng)前塊上方的ctu。當(dāng)施加此限制時,以上方ctu行相關(guān)聯(lián)的已編碼bv是以壓縮形式來存儲。例如,可為較大的塊尺寸(largerblocksize)存儲bv以實(shí)現(xiàn)壓縮。因此,具有單獨(dú)bv值的最小塊將不再是4x4。例如,bv可被存儲于較大的塊尺寸(例如:16x16)。因此,在此示例中,上方ctu行將僅存儲用于每個16x16塊的bv值。
可根據(jù)條帶類型適應(yīng)性地應(yīng)用以上限制。例如,對于幀內(nèi)條帶,如果空間候選是來自當(dāng)前塊上方的ctu,則用于跳過、合并、和/或intrabc模式的空間候選被認(rèn)為是不可用的。另一方面,對于幀間條帶,用于跳過、合并、和/或intrabc模式的空間候選則沒有這樣的限制。于另一示例中,用于幀內(nèi)條帶的用于較大的塊尺寸的已編碼bv可以壓縮格式的形式來存儲。當(dāng)空間候選位于當(dāng)前ctu上方的ctu并且與所存儲的bv的位置相重疊時,所存儲的bv可被用作此候選的bv,且可被用作為合并候選。然而,幀間條帶中的已編碼bv,可以或可以不經(jīng)受這樣的壓縮。
intrabc合并候選數(shù)量標(biāo)識(intrabcmergecandidatenumbersignaling)
本發(fā)明的另一方面解決了intrabc合并候選數(shù)量的標(biāo)識。于hevc中,根據(jù)語法five_minus_max_num_merge_cand,幀間合并的最大候選數(shù)量被標(biāo)識于條帶標(biāo)頭。在一個實(shí)施例中,intrabc合并候選的最大數(shù)量可被標(biāo)識于條帶標(biāo)頭、pps、sps、vps、條帶標(biāo)頭scc擴(kuò)展、ppsscc擴(kuò)展、spsscc擴(kuò)展、或vpsscc擴(kuò)展。例如,語法five_minus_max_num_intra_bc_merge_cand可被標(biāo)識以指示支持的intrabc合并候選的最大數(shù)量減5。
用于塊復(fù)制向量存儲的幀間mv緩沖器的重新使用(reuse)
本發(fā)明的另一方面解決了用于塊復(fù)制向量存儲的幀間mv緩沖器的重新使用。于intrabc模式中,用于指示當(dāng)前幀中預(yù)測塊的bv可能需要被存儲。因此,bv將需要額外的緩沖器來存儲此bv。在一個實(shí)施例中,所存儲的bv可被用作intrabc合并候選以用于后續(xù)的已編碼塊(latercodedblock)。
根據(jù)本發(fā)明的一個實(shí)施例,幀間mv緩沖器(包括mv緩沖器以及refidx緩沖器)被重新使用以存儲bv。例如,如果等于(x,y)的bv被存儲于幀間mv緩沖器中,對應(yīng)的refidx(即,參考圖片索引)可被設(shè)置為-1、不可用的、或大于或等于此列表中參考幀的數(shù)量的值。因此,此refidx將指示此參考圖片索引是用于intrabc已編碼圖片。備選地,interdir(即,幀間預(yù)測方向)可被設(shè)置為0,且存儲等于(x,y)的mv以用于intrabc模式的bv。
在各種系統(tǒng)配置(即,所有幀內(nèi)(allintra,ai)、隨機(jī)存取(randomaccess,ra)、以及低延遲b圖片(lowdelaybpicture,lb))下,根據(jù)本發(fā)明的具有包括一個或多個intrabc合并候選的合并模式的視頻編碼系統(tǒng)的性能與現(xiàn)有系統(tǒng)的性能的比較如表7以及表8所示?,F(xiàn)有的系統(tǒng)對應(yīng)于基于hevc屏幕內(nèi)容編碼測試模型2(screencontentcodingtestmodel2,scm2)的系統(tǒng)。對于表7,結(jié)合本發(fā)明實(shí)施例的系統(tǒng)對應(yīng)于使用包括混合intrabc候選以及幀間候選的合并候選列表的系統(tǒng)。對于表8,結(jié)合本發(fā)明實(shí)施例的系統(tǒng)對應(yīng)于使用包括混合intrabc候選以及幀間候選,且插入預(yù)設(shè)的非零bv以及來自最后編碼的intrabc塊的兩個bv的合并候選列表的系統(tǒng)。bd率的負(fù)值意味著本發(fā)明具有更佳的性能。如表7所示,本發(fā)明可達(dá)到高達(dá)5.5%。如表8所示,本發(fā)明可達(dá)到高達(dá)7.0%。因此,對現(xiàn)有方法的改進(jìn)是巨大的。
表7
表8
圖5所示為結(jié)合本發(fā)明實(shí)施例的示范性編碼系統(tǒng)的流程圖,其中,合并候選列表包括一個或多個intrabc合并候選以及一個或多個幀間合并候選。如步驟510所示,系統(tǒng)接收與當(dāng)前圖片中當(dāng)前塊相關(guān)聯(lián)的輸入數(shù)據(jù)。對于編碼來說,輸入數(shù)據(jù)對應(yīng)于將被編碼的像素數(shù)據(jù)。對于解碼來說,輸入數(shù)據(jù)對應(yīng)于將被解碼的已編碼像素數(shù)據(jù)。輸入數(shù)據(jù)可以從存儲器(例如,計算機(jī)存儲器,緩沖器(ram或dram)或其它媒體)或處理器中得到。于步驟520中,導(dǎo)出包括一個或多個intrabc合并候選以及一個或多個幀間合并候選的合并候選列表。所述一個或多個幀間合并候選中的每個的候選運(yùn)動信息識別一個參考列表中的一個時間參考圖片的一個時間參考塊。如步驟530所示,檢查從用于當(dāng)前塊的合并候選列表選擇的當(dāng)前合并候選是否為intrabc合并候選。如果所選擇的合并候選為intrabc合并候選(即,來自步驟530的“是”路徑),則執(zhí)行步驟540以及550。否則(即,來自步驟530的“否”路徑),則跳過步驟540以及550。于步驟540中,通過將所選擇的intrabc合并候選的候選運(yùn)動信息共享為當(dāng)前塊的當(dāng)前運(yùn)動信息來于編碼器編碼或于解碼器解碼當(dāng)前塊的當(dāng)前運(yùn)動信息。于步驟550中,使用由根據(jù)作為intrabc預(yù)測子的所選擇的intrabc合并候選的候選運(yùn)動信息定位的當(dāng)前圖片中的已編碼塊來于編碼器編碼或于解碼器解碼當(dāng)前塊。
根據(jù)本發(fā)明,以上所示的流程圖旨在說明intrabc編碼的示例。本領(lǐng)域技術(shù)人員可以在不脫離本發(fā)明的精神實(shí)質(zhì)的情況下修改每個步驟,重新排列所述步驟,分割步驟,或合并步驟來實(shí)施本發(fā)明。于本公開中,特定語法以及語義已經(jīng)被用于說明實(shí)現(xiàn)本發(fā)明實(shí)施例的示例。本領(lǐng)域技術(shù)人員可以在不脫離本發(fā)明的精神實(shí)質(zhì)的情況下將語法以及語義替換為等效的語法以及語義以實(shí)施本發(fā)明。
以上描述可使本領(lǐng)域的普通技術(shù)人員如特定應(yīng)用及其要求的上下文提供的來實(shí)踐本發(fā)明。對本領(lǐng)域技術(shù)人員來說,對所描述的實(shí)施例的各種修改是顯而易見的,且本文定義的一般原理可被應(yīng)用于其它實(shí)施例。因此,本發(fā)明并非意在限定于以上所示及所描述的特定實(shí)施例,而是要符合與此公開揭露的原理和新穎特征相一致的最寬范圍。在以上詳細(xì)描述中,各種具體細(xì)節(jié)被示出以便提供本發(fā)明的徹底理解。然而,本領(lǐng)域技術(shù)人員應(yīng)知曉本發(fā)明是可被實(shí)踐的。
如上所述,本發(fā)明的實(shí)施例可以由各種硬件,軟件代碼,或兩者的組合來實(shí)現(xiàn)。例如,本發(fā)明的實(shí)施例可以對應(yīng)于被集成到視頻壓縮芯片的一個或多個電子電路,或被集成于視頻壓縮軟件的程序代碼以執(zhí)行本文所描述的處理過程。本發(fā)明的實(shí)施例還可以是執(zhí)行于數(shù)字信號處理器上的程序代碼,以執(zhí)行本文所描述的處理過程。本發(fā)明還可包含由計算機(jī)處理器,數(shù)字信號處理器,微處理器,或現(xiàn)場可編程門陣列執(zhí)行的多個功能。根據(jù)本發(fā)明,通過執(zhí)行定義本發(fā)明所體現(xiàn)的特定方法的機(jī)器可讀軟件代碼或固件代碼,這些處理器可被配置為執(zhí)行特定任務(wù)。軟件代碼或固件代碼可被開發(fā)為不同的編程語言以及不同的格式或風(fēng)格。軟件代碼還可被編譯以用于不同的目標(biāo)平臺。然而,根據(jù)本發(fā)明的不同的軟件代碼的代碼格式、風(fēng)格及語言,以及用于配置代碼以執(zhí)行任務(wù)的其他方式,均不會背離本發(fā)明的精神以及范圍。
在不脫離其精神或本質(zhì)特征的情況下,本發(fā)明可以其它特定形式來體現(xiàn)。所描述的示例在所考慮的所有的方面都只是說明性的而不是限制性的。因此,本發(fā)明的范圍是由其所附的權(quán)利要求來指示的,而不是由上文的描述來指示的。在權(quán)利要求的等效范圍及含義內(nèi)的所有改變均包含于本發(fā)明范圍之內(nèi)。