適用于hevc標準的熵編碼上下文概率模型建模模塊設計方法
【技術領域】
[0001] 本發(fā)明屬于數(shù)字高清視頻壓縮編解碼技術領域,針對肥VC視頻編解碼標準,具體 設及一種適用于肥VC標準的滴編碼上下文概率模型建模模塊的設計方法。
【背景技術】
[0002] 作為下一代視頻編解碼標準,肥VC(Hi曲EfficiencyVideoCoding)是于2013 年由國際電信組織(ITU)和運動圖像專家組(MPEG)聯(lián)合成立的組織JCTVC所提出。其目標 是,與上一代標準H. 264/AVC相比,在相同的視覺效果的前提下,比特率減少50%。
[0003] 上一代視頻編解碼標準H. 264/AVC采用了兩種編碼方式:基于上下文的可變長編 碼CAVLC和基于上下文的二進制算術編碼CABAC。而在肥VC標準的軟件模型歷前期版本 中也是采用了該兩種編碼方式,只是在編碼過程,編碼語法元素上做了修改。但是大量測試 發(fā)現(xiàn),在相同的編碼內(nèi)容上,CABAC比CAVLC節(jié)省了 8%~14%碼流,因此在HM6. 0W后肥VC只 保留了CABAC-種編碼方式而不再支持CAVLC編碼。
[0004] 在肥VC中采用的二進制算術編碼模塊是基于傳統(tǒng)的算術編碼改進而來。該編碼 方式有W下特點: (1) 無損編碼方式,適用于圖像壓縮處理; (2) 被編碼信息數(shù)據(jù)的符號序列表示成實數(shù)0和1之間的一個小數(shù),無論信息有多長, 其輸出僅僅是一個數(shù),而且是一個介于0和1之間的二進制小數(shù); (3) 在編碼過程中需要不斷計算被編碼字符的概率。
[0005] 算術編碼過程可總結(jié)如下: (1) 編碼器在開始時將"當前間隔"[U田設置為[0, 1]; (2) 對每一個編碼字符,編碼器在當前間隔進行如下遞歸處理: (a) 將"當前間隔"按照各個編碼字符的概率進行分割; (b) 選中當前待編碼字符編碼器的分割區(qū)間為"當前間隔",并回到(a)繼續(xù)編碼; (3) 最后輸出的"當前間隔"的下邊界就是給定編碼序列的算術編碼。
[0006] 在硬件當中,整數(shù)計算比浮點數(shù)計算簡單方便,而且在計算編碼字符的概率時, 除法也需要消耗較大的資源,因此肥VC中采用的二進制算術編碼對傳統(tǒng)的算術編碼進行 了W下改進: (1) 編碼器在開始時將"當前間隔"[0, 1]改為[0, 510]; (2) 對當前的待編碼字符概率計算由傳統(tǒng)的除法運算改為查表計算,并設置了有64個 狀態(tài)的狀態(tài)表,通過當前待編碼字符在狀態(tài)表中的索引查表計算概率; (3) 肥VC建立399個上下文概率模型,不同的語法元素,同一個語法元素二進制序列的 不同位對應不同的上下文概率模型,通過概率模型查表可得到相應的狀態(tài)表索引。
【發(fā)明內(nèi)容】
[0007] 本發(fā)明的目的在于提出一種工作頻率高、吞吐率高的適用于肥VC標準的滴編碼 上下文概率模型建模模塊的設計方法。
[0008] 本發(fā)明提出滴編碼上下文概率模型建模模塊的設計方法,具體步驟為: (1)肥VC標準的滴編碼建立了 399個上下文概率模型,本發(fā)明使用了其中的280個上下 文概率模型,使用該些上下文概率模型進行編碼能夠正確解碼。在肥VC中有S種類型帖: I帖,P帖,B帖,該S種帖一共使用399個上下文概率模型,而本發(fā)明支持的I帖與P帖,使 用了其中的280個上下文概率模型。
[0009] (2)使用5塊雙端口SRAMW及2個寄存器存儲280個上下文概率模型,每塊SRAM 的深度都為32,寬度為7。280個上下文概率模型在SRAM中的分布見表1所示,其中,橫向 表頭代表5塊SRAM,豎向表頭代表各SRAM的地址,表中斜杠"/"前面的數(shù)字表示I帖中存 儲的索引,斜杠'7"后面的數(shù)字表示P帖中存儲的索引。本發(fā)明支持的I帖與P帖是獨立 的,不支持I帖中帖間預測,也不支持P帖中帖內(nèi)預測,因此對于單獨的I帖或P帖160個 上下文概率模型已經(jīng)足夠,并不需要建立280個上下文概率模型。另外160個上下文概率 模型在SRAM中的存放經(jīng)過獨特的設計W保證每個時鐘周期都能對四組輸入進行上下文建 模。
[0010] (3)為避免SRAM讀寫沖突,為每塊SRAM的讀寫地址設置了仲裁器,仲裁器對每個 輸入中的地址信息進行仲裁,判斷不同的輸入之間是否發(fā)生地址沖突(同一時鐘周期出現(xiàn) 一片SRAM有兩個不同讀地址信號)。如果沒有沖突現(xiàn)象,將直接根據(jù)當前地址去存儲器 中讀取數(shù)據(jù)。
[0011] (4)W流水線方式連續(xù)的從SRAM或者寄存器中讀寫正確的數(shù)據(jù)。W流水線進行上 下文概率模型建模時有該樣一種情況;相鄰的兩個周期內(nèi)需要從同一塊SRAM的同一個地 址讀取數(shù)據(jù),該樣第二個周期從SRAM中讀取數(shù)據(jù)就是錯誤的,應該讀取的是第一個周期讀 取的數(shù)據(jù)更新后的值。為避免該種情況發(fā)生,本發(fā)明對連續(xù)兩個周期內(nèi)的輸入也進行了仲 裁,即從第一個周期中讀取的數(shù)據(jù)更新后的值與第二個周期讀取的數(shù)據(jù)進行選擇。
[0012] (5)每個時鐘周期支持對4組輸入進行上下文概率模型建模。該4組輸入中可能 存在該樣一種情況;2或更多的輸入需要從同一塊SRAM的同一個地址讀取數(shù)據(jù),該樣將導 致該些輸入讀取數(shù)據(jù)都是相同的而發(fā)生錯誤。實際上第二個輸入讀取的數(shù)據(jù)應該是第一個 讀取的數(shù)據(jù)更新后的值,第=個輸入取的數(shù)據(jù)應該是第二個讀取的數(shù)據(jù)更新后的值,第四 個輸入取的數(shù)據(jù)應該是第=個讀取的數(shù)據(jù)更新后的值。為保證讀取數(shù)據(jù)的正確,本發(fā)明對 同一周期從同一塊SRAM的同一個地址讀取數(shù)據(jù)的多個輸入進行仲裁。
【附圖說明】
[0013] 圖1 ;上下文建模過程仲裁存儲結(jié)構。
【具體實施方式】
[0014] 下面結(jié)合附圖和附表,對本發(fā)明做進一步的描述。
[001引附表1中橫向表頭代表5塊SRAM,豎向表頭代表各SRAM的地址,表中斜杠V"前面 的數(shù)字表示I帖中存儲的索引,斜杠'7"后面的數(shù)字表示P帖中存儲的索引。SRAM0~SRAM4 中分別存儲了 32個上下文模型。對于語法元素sig_coff_flag的第33位和第34位存儲 在兩個單獨的寄存器中,其上下文模型索引為152/107與136/121,斜杠"/"前后數(shù)字分別 表示I帖與P帖中存儲的索引。
[0016] 附圖1是上下文建模過程仲裁存儲結(jié)構。每個時鐘有四組輸入,其地址分別為 A(M0,Addl,Add2和Add3。首先是一個多路選擇器,對地址進行仲裁,將從同一塊SRAM讀取 數(shù)據(jù)的輸入分到同一組。然后每組輸入從相應的SRAM中讀取數(shù)據(jù),然后此數(shù)據(jù)與前一個周 期從此SRAM中讀取到的數(shù)據(jù)更新后的值進行仲裁,避免相鄰的兩個周期內(nèi)從同一塊SRAM 的同一個地址讀取數(shù)據(jù)情況下讀取到錯誤的數(shù)據(jù)的現(xiàn)象發(fā)生。之后根據(jù)第一個輸入讀取到 數(shù)據(jù)進行查表,對第一個讀取到數(shù)據(jù)進行更新。然后對第二個輸入進行仲裁,如果第一個輸 入和第二個輸入從同一塊SRAM的同一個地址讀取數(shù)據(jù),那么第二個輸入則選擇第一個輸 入讀取到的數(shù)據(jù)更新后的值進行查表對數(shù)據(jù)進行更新,否則則選擇從SRAM中讀取到數(shù)據(jù) 進行查表對數(shù)據(jù)更新。同理,對第=個輸入進行仲裁,如果第=個輸入和第二個輸入從同一 塊SRAM的同一個地址讀取數(shù)據(jù),那么第=個輸入則選擇第二個輸入讀取到的數(shù)據(jù)更新后 的值進行查表對數(shù)據(jù)進行更新,如果第=個輸入和第一個輸入從同一塊SRAM的同一個地 址讀取數(shù)據(jù),那么第=個輸入則選擇第一個輸入讀取到的數(shù)據(jù)更新后的值進行查表對數(shù)據(jù) 進行更新,否則則選擇從SRAM中讀取到數(shù)據(jù)進行查表對數(shù)據(jù)更新。最后對第四個輸入進行 仲裁,如果第四個輸入和第=個輸入從同一塊SRAM的同一個地址讀取數(shù)據(jù),那么第四個輸 入則選擇第=個輸入讀取到的數(shù)據(jù)更新后的值進行查表對數(shù)據(jù)進行更新,如果第四個輸入 和第二個輸入從同一塊SRAM的同一個地址讀取數(shù)據(jù),那么第四個輸入則選擇第二個輸入 讀取到的數(shù)據(jù)更新后的值進行查表對數(shù)據(jù)進行更新,如果第四個輸入和第一個輸入從同一 塊SRAM的同一個地址讀取數(shù)據(jù),那么第四個輸入則選擇第一個輸入讀取到的數(shù)據(jù)更新后 的值進行查表對數(shù)據(jù)進行更新,否則則選擇從SRAM中讀取到數(shù)據(jù)進行查表對數(shù)據(jù)更新。
[0017] 表1 ;280個上下文概率模型在SRAM中的分布
o
【主權項】
1. 一種適用于HEVC標準的熵編碼上下文概率模型建模模塊的設計方法,其特征在于 具體步驟為: (1) 使用ffiVC標準的熵編碼建立的399個上下文概率模型中的280個上下文概率模 型,能夠正確解碼;這些上下文概率模型支持I幀與P幀; (2) 使用5塊雙端口SRAM以及2個寄存器存儲280個上下文概率模型,每塊SRAM的 深度都為32,寬度為7 ;280個上下文概率模型在SRAM中的分布見表1所示,其中,橫向表 頭代表5塊SRAM,豎向表頭代表各SRAM的地址,表中斜杠"/"前面的數(shù)字表示I幀中存儲 的索引,斜杠"/"后面的數(shù)字表示P幀中存儲的索引;對于單獨的I幀或P幀,160個上下 文概率模型已經(jīng)足夠,另外160個上下文概率模型在SRAM中的存放經(jīng)過獨特的設計以保證 每個時鐘周期都能對四組輸入進行上下文建模; (3) 為每塊SRAM的讀寫地址設置仲裁器,以避免SRAM讀寫沖突,仲裁器對每個輸入中 的地址信息進行仲裁,判斷不同的輸入之間是否發(fā)生地址沖突,如果沒有沖突現(xiàn)象,將直接 根據(jù)當前地址去存儲器中讀取數(shù)據(jù); (4) 以流水線方式連續(xù)的從SRAM或者寄存器中讀寫正確的數(shù)據(jù),其中,對連續(xù)兩個周 期內(nèi)的輸入也設計仲裁器,進行仲裁,即從第一個周期中讀取的數(shù)據(jù)更新后的值與第二個 周期讀取的數(shù)據(jù)進行選擇; (5) 每個時鐘周期支持對4組輸入進行上下文概率模型建模;這4組輸入中可能存在 如下情況:2或更多的輸入需要從同一塊SRAM的同一個地址讀取數(shù)據(jù),這樣將導致這些輸 入讀取數(shù)據(jù)都是相同的而發(fā)生錯誤;實際上第二個輸入讀取的數(shù)據(jù)是第一個讀取的數(shù)據(jù)更 新后的值,第三個輸入取的數(shù)據(jù)是第二個讀取的數(shù)據(jù)更新后的值,第四個輸入取的數(shù)據(jù)是 第三個讀取的數(shù)據(jù)更新后的值;因此,對同一周期從同一塊SRAM的同一個地址讀取數(shù)據(jù)的 多個輸入進行仲裁,以保證讀取數(shù)據(jù)的正確; 表1 :280個上下文概率模型在SRAM中的分布0
【專利摘要】本發(fā)明屬于數(shù)字高清視頻壓縮編解碼技術領域,具體為一種適用于HEVC標準的熵編碼上下文概率模型建模模塊的設計方法。HEVC使用的基于上下文的二進制算術編碼,并獨特的設計了399個上下文概率模型。在實際編碼中,不同的語法元素,相同的語法元素的二進制序列的不同位都可能使用不同的上下文概率模型。本發(fā)明使用HEVC標準的熵編碼建立的399個上下文概率模型中的280個上下文概率模型,能夠正確解碼;這些上下文概率模型支持I幀與P幀;采用5塊SRAM和2個寄存器存儲相關上下文概率模型,并為SRAM設計仲裁結(jié)構,能夠準確判斷概率模型的地址和待寫入的數(shù)據(jù),并順利讀取數(shù)據(jù)。
【IPC分類】H04N19/13, H04N19/70
【公開號】CN104918048
【申請?zhí)枴緾N201510298837
【發(fā)明人】范益波, 程魏, 郭勇, 江親偉, 陸彥珩, 曾曉洋
【申請人】復旦大學
【公開日】2015年9月16日
【申請日】2015年6月3日