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