具有增強cabac解碼的視頻解碼器的制造方法
【專利摘要】一種解碼器接收包含量化系數的比特流并且使用上下文自適應二元算術編碼來解碼比特流,量化系數表示視頻塊,視頻塊表示多個像素。上下文自適應二元算術編碼包括至少兩個解碼模式,第一模式基于以與正被解碼的當前語法元素為基礎的概率估計來解碼比特流,第二模式不基于以與正被解碼的當前語法元素為基礎的概率估計來解碼比特流。如果當前語法元素是幀內編碼的,并且使用所述第一模式選擇是否使用幀內預測模式列表來解碼幀內預測模式,則上下文自適應二元算術編碼使用第一模式來解碼當前語法元素,其中所述幀內預測模式列表基于先前確定的幀內模式來確定。上下文自適應二元算術編碼使用第二模式來解碼指示當前塊的幀內預測模式的數據。
【專利說明】具有增強CABAC解碼的視頻解碼器【技術領域】
[0001]本發明涉及具有增強的用于編碼和/或解碼的CABAC的圖像解碼。
【背景技術】
[0002]現有的視頻編碼標準(例如,H.264/AVC)通常以增加計算復雜度為代價來提供相對高的編碼效率。隨著計算機復雜度的增加,編碼和/或解碼速度趨向減小。同樣,對增加較高保真度的期望隨時間趨向增加,這趨向于需要越來越大的存儲器要求和越來越多的復雜處理。
[0003]參照圖1,許多解碼器(和編碼器)接收(并且編碼器提供)針對圖像塊的編碼數據。典型的,將圖像劃分成塊,并且以某種方式(例如,使用離散余弦變換(DCT))來編碼每個塊,并且提供給解碼器。解碼器接收編碼塊,并且以某種方式(例如使用離散余弦逆變換)來解碼每個塊。
[0004]視頻編碼標準(例如,MPEG-4部分10 (H.264))對視頻數據進行壓縮以通過具有有限頻率帶寬和/或有限存儲能力的信道傳輸。這些視頻編碼標準包括多個編碼級(例如,幀內預測,從空間域變換到頻域,量化、熵編碼、運動估計和運動補償),以便更高效地編碼和解碼幀。許多編碼和解碼級在計算上過度復雜。
[0005]基于上下文自適應二元算術編碼(CABAC)的編碼和/或解碼技術通常是上下文自適應的,這是指(i)基于先前編碼和/或過去解碼的符號的值來自適應地對符號編碼;以及(?)識別在過去用于適 應而編碼和/或解碼的符號集合的上下文。過去的符號可以位于空間和/或時間上鄰近的塊中。在許多情況下,上下文基于鄰域塊的符號值。
[0006]上下文自適應二元算術編碼(CABAC)編碼技術包括使用以下級來編碼符號。在第一級中,CABAC使用“二兀化器”將輸入符號映射到一串二兀符號或“位兀(bin) ”。輸入符號可以是非二元定值的符號,該非二元定值的符號在編碼成比特之前被二元化或以其他方式轉換成一串二元(I或O)符號。可以使用“旁路編碼引擎”或“常規編碼引擎”將位元編碼成比特。
[0007]對于CABAC中的常規編碼引擎,在第二級中,選擇概率模型。概率模型用于對二元化的輸入的一個或多個位元進行算術編碼。根據根據隨著最新編碼的符號而變化的上下文,從可用概率模型列表中選擇該模型。概率模型存儲作為“I”或“O”的位元的概率。在第三級中,算術編碼器根據所選概率模型來編碼每個位元。存在與“O”和“I”相對應的每個位元的兩個子范圍。第四級涉及更新概率模型。基于實際編碼的位元值(例如,如果位元值是“1”,則增加“I”的頻數)更新所選概率模型。CABAC解碼的解碼技術與該過程相反。
[0008]對于CABAC中的旁路編碼引擎,第二級涉及位元到比特的轉換,省略計算成本高的上下文估計和概率更新級。旁路編碼引擎假定針對輸入位元的固定概率分布。CABAC解碼的解碼技術與該過程相反。
[0009]CABAC在概念上使用兩個步驟來編碼符號。在第一步驟中,CABAC執行輸入符號到位元的二元化。在第二步驟中,CABAC使用旁路編碼引擎或常規編碼引擎,執行位元到比特的轉換。在比特流中將生成的編碼比特值提供給解碼器。
[0010]CABAC在概念上使用兩個步驟來解碼符號。在第一步驟中,CABAC使用旁路解碼引擎或常規解碼引擎將輸入比特轉換成位元值。在第二步驟中,CABAC執行解二元化,以恢復傳輸的位元值的符號值。恢復的符號實際上可以是非二元的。在解碼器的其余方面中使用恢復的符號值。
【發明內容】
[0011]技術問題
[0012]如上所述,CABAC的編碼和/或解碼過程包括至少兩個不同的操作模式。在第一模式中,基于實際編碼的位元值來更新概率模型,這通常被稱作“常規編碼模式”。常規編碼模式需要完成若干順序的連續操作,連同關聯的計算復雜度和大量時間。在第二模式中,不基于實際編碼位元值來更新概率模型,這通常被稱作“旁路編碼模式”。在第二模式中,不存在用于解碼位元的概率模型(除非可能存在固定概率),并且相應地不需要更新概率模型,這降低了系統的計算復雜度。
[0013]問題的解決方式
[0014]本發明的一個方面提供了一種解碼視頻的解碼器,其中:
[0015](a)所述解碼器接收表示視頻塊的比特流,視頻塊表示多個像素;
[0016](b)所述解碼器通過上下文自適應二元算術編碼來解碼所述比特流;
[0017](C)所述解碼器使用至少兩個解碼模式來解碼所述比特流,所述第一模式基于以正被解碼的當前語法元素為基礎的概率估計來解碼所述比特流,所述第二模式不基于以正被解碼的所述當前語法元素為基礎的概率估計來解碼所述比特流;
[0018](d)所述解碼器使用所述第一模式來解碼數據,該數據指示是否使用幀內預測模式列表來解碼幀內預測模式,
[0019](e)所述解碼器使用所述第二模式來解碼數據,該數據指示當前塊的幀內預測模式,其中
[0020]所述幀內預測模式列表是基于先前確定的幀內預測模式來確定的。
[0021]本發明的有利效果
[0022]在考慮結合附圖進行的以下本發明詳細描述時,將更容易地理解本發明的上述和其他目標、特征和優點。
【專利附圖】
【附圖說明】
[0023]圖1示出了編碼器和解碼器。
[0024]圖2示出了編碼器。
[0025]圖3示出了解碼器。
[0026]圖4示出了針對CABAC的上下文解碼。
[0027]圖5示出了針對CABAC的旁路解碼。
[0028]圖6示出了具有使用旁路編碼模式編碼的符號子集以及使用常規編碼模式編碼的另一符號子集的比特流。
[0029]圖7示出了利用旁路解碼模式和常規解碼模式的解碼技術。[0030]圖8示出了具有與幀內編碼相對應的語法元素類型的塊的符號的解碼技術。
[0031]圖9示出了基于CABAC的編碼器。
[0032]圖10示出了基于CABAC的解碼器。
【具體實施方式】
[0033]參照圖2,示例編碼器200包括:熵編碼模塊(可以包括CABAC),從編碼器200的若干不同其他方面接收輸入。至熵編碼模塊260的輸入之一是來自米樣自適應偏移(SAO)模塊235的SAO信息。至熵編碼模塊260的另一輸入是來自自適應回路濾波器245的ALF信息。至熵編碼模塊260的另一輸入是來自運動估計/運動補償(ME/MC)模塊230的幀間模式信息。至熵編碼模塊260的另一輸入是來自幀內預測模塊270的幀內模式信息。至熵編碼模塊260的另一輸入是來自量化模塊310的殘差。熵編碼模塊260提供編碼比特流。提供給熵編碼模塊260的上述信息可以編碼在比特流中。SAO模塊235向自適應回路濾波器245提供采樣,自適應回路濾波器245向參考幀緩沖器220提供恢復的采樣225,參考幀緩沖器220向運動估計/運動補償(ME/MC)模塊230提供數據。向SAO模塊235提供來自去塊濾波器250的去塊采樣240。由于利用許多編碼器,編碼器還可以包括幀內預測模塊270,在幀內預測模塊270中,在幀內預測模塊270和ME/MC模塊230之間選擇預測采樣280。減法器290從輸入中減去預測的采樣280。編碼器200還可以包括變換模塊300、逆量化模塊320、逆變換模塊330、和重構模塊340。
[0034]參照圖3,針對圖2的編碼器的關聯解碼器400可以包括:熵解碼模塊450,可以包括CABAC。熵解碼模塊450接收編碼比特流440并且向解碼器400的不同方面提供數據。熵解碼模塊450可以向巾貞內預測模塊460提供巾貞內模式信息455。熵解碼模塊450可以向MC模塊430提供幀間模式信息465。熵解碼模塊450可以向自適應回路濾波器415提供ALF信息495。熵解碼模塊450可以向SAO模塊410提供SAO信息475。熵解碼模塊450可以向逆量化模塊470提供編碼殘差485,逆量化模塊470向幀內預測模塊460和/或去塊濾波器500提供數據。采樣自適應偏移(SAO)模塊410向自適應回路濾波器415提供采樣,自適應回路濾波器415向參考幀緩沖器420提供恢復的采樣445,參考幀緩沖器420向運動補償(MC)模塊430提供數據。去塊濾波器500向SAO模塊410提供去塊采樣510。
[0035]參照圖4,示出了當使用CABAC常規解碼引擎來解碼位元570和使用鄰域上下文時選擇概率模型的圖示。根據解碼符號CtxtA572和解碼符號CtxtB574確定上下文,其中CtxtA存儲在行緩沖器576中。上下文確定用于解碼570的概率模型。相反,參照圖5,示出了當使用CABAC旁路解碼引擎來解碼符號580時選擇概率模式的圖示。所選概率模式不依賴于上下文信息。參照圖6,比特流590包括使用旁路編碼引擎編碼的一組二元化語法元素592,以及使用常規編碼引擎編碼的一組二元化語法元素594,當使用旁路編碼模式時不需要行緩沖器,減少了所需的存儲量,不執行概率模型更新,并且增加了 CABAC的吞吐量。
[0036]CABAC基于復雜的潛在編碼配置集合來解碼視頻。例如,編碼配置可以包括運動補償塊和幀內預測塊。對運動補償視頻塊的編碼和解碼趨于相對復雜,并且通常趨于受益于由CABAC常規編碼引擎提供的附加復雜度。除了解碼技術以外,一部分復雜度也是存儲符號所依賴的信息,并且需要每次編碼和/或解碼符號時更新概率模型機制。對幀內預測視頻塊的編碼和解碼趨于相對不復雜,并且趨于通常較小程度地受益于來自CABAC常規編碼引擎提供的附加復雜度。在這種情況下,旁路編碼模式趨于減少對附加存儲、確定上下文和更新概率模型的需要,而不會顯著影響壓縮效率。具體地,比特流中的一些符號在二元化之后通常同樣可能包含具有O值或I值的位元。此外,同時由于CABAC常規編碼引起的上下文適應性,這樣的符號不會引起有意義的壓縮利益。可以推測這種缺乏有意義的壓縮利益可能由于其概率分布的快速波動。
[0037]參照圖7,在一個實施例中,可以作為解碼器400的熵解碼450的一部分而包括的CABAC接收源自比特流600中的比特。如果對編碼效率的影響沒有證明附加計算復雜度,則對于那些語法元素或屬于進行了幀內編碼的塊610的符號,可以確定特定符號是否適合于使用旁路解碼引擎620。如果語法元素或屬于幀內編碼塊610的符號適合于使用旁路解碼引擎,則使用旁路解碼模式630來解碼二元化的符號。如果語法元素或屬于幀內編碼塊610的符號不適合于使用旁路解碼引擎,則使用常規解碼模式640來解碼二元化符號。
[0038]參照圖8,CABAC可以接收要從比特流解碼的符號570。屬于當前塊左側的塊的符號574先前已解碼,并且針對左側塊的預測模式已確定為Mleft50,其中,預測模式識別使用先前解碼數據來預測塊內的像素值的方法。類似地,屬于當前塊上側的塊的符號572先前已解碼,并且針對上側塊的預測模式已確定為Mabove652。在多數情況下,在比特流中不明確傳輸當前塊的預測模式,但是如上所述,取而代之基于先前確定的預測模式(例如,Mleft和Mabove)來確定當前塊的預測模式。相應地,函數基于Mleft650和Mabove652,使用f(Mleft, Mabove)來產生可能模式列表,可以被稱作Mlist = f (Mleft, Mabove)。結果是可能模式列表Mlist656。
[0039]在一個實施例中,由函數產生的可能模式列表Mlist656使用f (Mleft,Mabove) 654來產生最可能模式列表可以包括兩個預測模式列表(或另外與單個列表組合),第一列表包括“最可能模式”,第二列表包括“非最可能模式”。系統可以從比特流中選擇MPM_FLAG比特655,MPM_FLAG比特655指示使用常規解碼引擎657的適合性,并因此語法元素(例如,MPM_FLAG660)指示當前塊的預測模式在“最可能模式列表”(典型地,用“ I”信號通知)中還是在“非最可能模式列表”(典型地,用“O”信號通知)中。與針對當前塊的MPM_FLAG660的比較可以用于確定適合的預測模式在“最可能模式列表” 662中還是在“非最可能模式列表” 664中。如果針對當前塊的MPM_FLAG660指示預測模式在“最可能模式列表”662中,并且如果“最可能模式列表”中僅存在單個預測模式,則這是針對當前塊的所選預測模式674。提供所選預測模塊674的結果作為所選模式,作為輸出。在針對當前塊的MPM_FLAG660指示預測模式在“最可能模式列表” 662中,并且如果“最可能模式列表”索引中僅存在兩個預測模式,則MPM_INDEX索引670可以用于信號通知所選預測模式674,以在兩個預測模式之間進行選擇,并且提供所選模式675作為輸出。系統可以通過選擇MPM_INDEX比特671從比特流中確定MPM_INDEX索引670,MPM_INDEX比特671指示使用旁路解碼引擎673的適合性,并因此提供MPM_INDEX索引670。這種在“最可能模式列表” 662的條目之中進行選擇的過程可以用向MPM_INDEX索引670分配附加比特來擴展,以在附加的不同模式之間進行區分。
[0040]注意,基于比特流中的過去位元,CABAC可以確定當前位元是“I”還是“O”的概率,在“在最可能列表”與“不在最可能列表內”之間進行選擇是對CABAC的編碼效率具有最顯著影響并相應具有更新概率的有利判定。[0041]如果針對當前塊的MPM_FLAG660指示預測模式在“非最可能模式列表” 664中,并且如果“非最可能模式列表” 664中僅存在單個預測模式,則是針對當前塊的所選預測模式680。如果針對當前塊的MPM_FLAG660指示預測模式在“非最可能模式列表” 664中,并且如果在“非最可能模式列表”索引中僅存在兩個預測模式,則REM_INTRA_PRED_MODE索引690可以用于信號通知所選預測模式675,以在兩個預測模式之間進行選擇,并且提供所選預測模式675作為輸出。系統可以通過選擇REM_INTRA_PRED_MODE比特691從比特流中確定 REM_INTRA_PRED_MODE 索引 690,REM_INTRA_PRED_MODE 比特 691 指示使用旁路解碼引擎693的適合性,并因此提供REM_INTRA_PRED_MODE索引690。如果針對當前塊的MPM_FLAG660指示預測模式在“非最可能模式列表” 664中,并且如果在“非最可能模式列表”索引中僅存在四個預測模式,則2比特REM_INTRA_PRED_MODE索引690可以用于信號通知所選預測模式680,以在四個預測模式之間進行選擇,并且提供所選模式675作為輸出。如果針對當前塊的MPM_FLAG660指示預測模式在“非最可能模式列表”中,并且如果在“非最可能模式列表”索引中僅存在八個預測模式,則3比特REM_INTRA_PRED_MODE索引690可以用于信號通知所選預測模式680,以在八個預定模式之間進行選擇,并且提供所選模式680作為輸出。該從非最可能模式列表中選擇模式的過程可以利用向REM_INTRA_PRED_MODE索引分配附加比特來擴展,以在不同的預測模式之間進行區分。
[0042]注意,基于比特流中的過去位元,CABAC可以確定當前位元是“I”還是“O”的概率。如上所述,在“在最可能列表”與“不在最可能列表內”之間的選擇是對CABAC的編碼效率具有最顯著影響并相應具有更新概率的有利判定。然而,在“非最可能模式列表”664內的可能性之間進行選擇對CABAC的編碼效率的影響有限,并相應地不應更新概率,因此降低了系統的計算復雜度。在多數情況下,分配給不更新的特定二元化符號的概率為50%。
[0043]參照圖9,示例基于CABAC的編碼器接收語法元素值700,語法元素值700通常是非二元的。二元化器710接收語法元素值700,并且基于語法元素類型720產生二元串730。例如,語法元素類型720可以信號通知與針對當前塊的幀內預測模式而導出的索引項相對應的輸入值;或者與針對當前塊的幀內預測模式而導出的標志相對應的輸入值。選擇器740基于一個或多個輸入選擇使用旁路編碼引擎750還是常規編碼引擎760。至選擇器740的輸入之一可以包括語法元素類型。至選擇器740的另一輸入可以包括分片類型770。分片類型770例如可以包括I分片(幀內預測分片)、P分片(前向預測分片)和/或B分片(雙向預測分片)。至選擇器740的另一輸入可以是量化參數780。例如,二元化語法元素值的統計行為可以基于量化參數而改變,量化參數通常與比特流的比特率相關。至選擇器740的另一輸入可以是來自生成的比特流800的所收集統計790。所收集統計790有助于基于比特進行編碼的方式的修改,以進一步提高編碼效率。如果選擇器740基于一個或多個輸入選擇旁路編碼模式810,則使用旁路編碼引擎750來編碼二元串730,以產生比特流800。如果選擇器740基于一個或多個輸入選擇常規編碼模式820,則將二元串730提供給常規編碼引擎760,該引擎是算數編碼器。此外,上下文模型器830基于空間和/或時間鄰近語法元素840和過去編碼的二元符號提供當前概率估計850作為至常規編碼引擎的輸入。常規編碼引擎760產生比特流800。常規編碼引擎760的輸出用于更新上下文模型器830的概率。選擇器740也可以用于指示在比特流800中應當包括哪些編碼比特。
[0044]參照圖10,基于CABAC的解碼器可以接收比特流800。選擇器810基于來自比特流800的一個或多個輸入,選擇使用旁路解碼引擎820還是常規解碼引擎830。至選擇器810的輸入之一可以包括語法元素類型720。至選擇器810的另一輸入可以包括分片類型770。至選擇器810的另一輸入可以是量化參數780。至選擇器810的另一輸入可以是所收集統計790。如果選擇器810基于一個或多個輸入選擇旁路解碼模式840,則使用旁路解碼引擎820來解碼比特流800,以產生二元解碼比特850。如果選擇器810基于一個或多個輸入選擇常規編碼模式860,則向常規解碼引擎830提供比特流800,該引擎是算數解碼器。此外,上下文模型器870基于空間和/或時間鄰近語法元素值880提供當前概率估計875作為至常規解碼引擎的輸入。常規解碼引擎830產生二元解碼比特890。常規解碼引擎830的輸出用于更新上下文模型器870的概率。選擇器810也可以用于指示應當向解二元化器900提供哪些二元解碼比特850、890。解二元化器900接收二元解碼輸入和語法元素類型720,并且提供非二元語法元素值910。
[0045]本發明的一個方面提供了一種解碼視頻的解碼器,包括:
[0046](a)解碼器接收包含量化系數的比特流,量化系數表示視頻塊,視頻塊表示多個像素;
[0047](b)解碼器使用上下文自適應二元算術編碼來解碼比特流;
[0048](C)上下文自適應二元算術編碼包括至少兩個解碼模式,第一模式基于以與正被解碼的當前語法元素在空間和時間上鄰近的語法元素值為基礎的概率估計來解碼所述比特流,所述第二模式不基于以與正被解碼的當前語法元素以外的語法元素為基礎的概率估計來解碼所述比特流;
[0049](d)如果當前語法元素是幀內編碼的,并且在第一可能模式集合與第二可能模式集合之間進行選擇,則上下文自適應二元算術編碼使用第一模式來解碼當前語法元素,其中第一可能模式集合比第二可能模式集合的可能性高;
[0050](e)如果當前語法元素是幀內編碼的并且如果選擇第二可能模式集合之一,則上下文自適應二元算術編碼使用第二模式來解碼當前語法元素。
[0051]根據另一方面,第一模式包括基于解碼來更新概率估計。
[0052]根據另一方面,第一可能模式集合包括至少兩個模式。
[0053]根據另一方面,第一可能模式集合包括單個模式。
[0054]根據另一方面,第二可能模式集合包括至少兩個模式。
[0055]根據另一方面,第二可能模式集合包括單個模式。
[0056]根據另一方面,比特流包括指示在第一可能模式集合與第二可能模式集合之間進行選擇的標志。
[0057]根據另一方面,比特流包括指示在多個第一可能模式集合之中進行選擇的索引。
[0058]根據另一方面,比特流包括指示在多個第二可能模式集合之中進行選擇的索引。
[0059]根據另一方面,在第一可能模式集合與第二可能模式集合之間進行選擇還基于語法元素類型。
[0060]根據另一方面,在第一可能模式集合與第二可能模式集合之間進行選擇還基于分片類型。
[0061]根據另一方面,在第一可能模式集合與第二可能模式集合之間進行選擇還基于量化參數。[0062]根據另一方面,在第一可能模式集合與第二可能模式集合之間進行選擇還基于解碼比特流的所收集統計。
[0063]上述說明書中已使用的術語和表述在這里用作描述目的而非限制,并且在使用這樣的術語和表述時并不意在排除所示意或描述的特征或其一部分的等同物,已經認識到本發明的范圍僅由所附權利要求來限定和限制。
【權利要求】
1.一種解碼視頻的解碼器,其中: (a)所述解碼器接收表示視頻塊的比特流,所述視頻塊表示多個像素; (b)所述解碼器解碼由上下文自適應二元算術編碼的所述比特流; (c)所述解碼器使用至少兩個解碼模式來解碼所述比特流,所述第一模式基于以正被解碼的當前語法元素為基礎的概率估計來解碼所述比特流,所述第二模式不基于以正被解碼的所述當前語法元素為基礎的概率估計來解碼所述比特流; (d)所述解碼器使用所述第一模式來解碼數據,該數據指示是否使用用于解碼幀內預測模式的幀內預測模式列表, (e)所述解碼器使用所述第二模式來解碼數據,該數據指示當前塊的幀內預測模式,其中所述幀內預測模式列表是基于先前確定的幀內預測模式來確定的。
2.根據權利要求1所述的解碼器,其中,在所述解碼器使用所述幀內預測模式列表來解碼所述幀內預測模式的情況下,指示當前塊的幀內預測模式的所述數據是所述幀內預測模式列表的解碼索引。
3.根據權利要求1所述的解碼器,其中,在所述解碼器不使用所述列表來解碼所述幀內預測模式的情況下,對指示當前塊的幀內預測模式的所述數據進行解碼。
4.根據權利要求1所述的解碼器,其中,所述第一模式包括基于所述解碼來更新所述概率估計。
5.根據權利要求1所述的解碼器,其中,所述幀內預測模式列表包括至少兩個模式。
6.根據權利要求1所述的解碼器,其中,所述幀內預測模式列表包括單個模式。
7.根據權利要求1所述的解碼器,其中,所述比特流包括指示是否使用所述幀內預測模式列表的標志。
8.根據權利要求1所述的解碼器,其中,所述比特流包括指示幀內預測模式在所述可能模式列表中的索引。
9.根據權利要求1所述的解碼器,其中,在所述幀內預測模式列表之間進行選擇還基于語法元素類型。
10.根據權利要求1所述的解碼器,其中,在所述幀內預測模式列表之間進行選擇還基于分片類型。
11.根據權利要求1所述的解碼器,其中,在所述幀內預測模式列表之間進行選擇還基于量化參數。
12.根據權利要求1所述的解碼器,其中,在所述幀內預測模式列表之間進行選擇還基于解碼比特流的所收集統計。
【文檔編號】H04N19/159GK103959782SQ201280054447
【公開日】2014年7月30日 申請日期:2012年11月7日 優先權日:2011年11月7日
【發明者】基蘭·米斯拉, 克里斯多夫·A·西格爾 申請人:夏普株式會社