一種適用于hevc標(biāo)準(zhǔn)的基于指針的兩級(jí)dct系數(shù)存儲(chǔ)方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明屬于高清數(shù)字視頻壓縮編解碼技術(shù)領(lǐng)域,具體為一種適用于HEVC標(biāo)準(zhǔn)的 兩級(jí)DCT系數(shù)存儲(chǔ)方法。
【背景技術(shù)】
[0002] HEVC (High Efficiency Video Coding)是由國(guó)際電信組織(ITU)和運(yùn)動(dòng)圖像專 家組(MPEG)聯(lián)合成立的組織JCTVC提出的下一代視頻編解碼標(biāo)準(zhǔn)。目標(biāo)是在相同的視覺(jué) 效果的前提下,相比于上一代標(biāo)準(zhǔn),即H. 264/AVC標(biāo)準(zhǔn),壓縮率提高一倍。
[0003] 基于HEVC的視頻編碼器,主要由以下模塊組成:幀內(nèi)預(yù)測(cè)、幀間預(yù)測(cè)、變換、量化、 反量化、反變換、重建、去方塊濾波器、自適應(yīng)樣點(diǎn)補(bǔ)償?shù)取F渲?,離散余弦變換(DCT)是編 碼器必不可少的一部分,負(fù)責(zé)集中殘差數(shù)據(jù)的能量,以供隨后的量化和熵編碼。由于HEVC 標(biāo)準(zhǔn)下圖像處理塊的大小已經(jīng)到達(dá)了 64X64,離散余弦變換(DCT)處理塊的大小也到達(dá)了 32X32。這使得常用的行列變換架構(gòu)中所需要的轉(zhuǎn)置存儲(chǔ)器變得異常龐大,如圖1所示。對(duì) 于如此龐大的存儲(chǔ)需求,傳統(tǒng)的基于寄存器的和基于靜態(tài)隨機(jī)存儲(chǔ)器的存儲(chǔ)方式已經(jīng)變得 不再適用。
【發(fā)明內(nèi)容】
[0004] 本發(fā)明的目的在于提出一種可以克服現(xiàn)有技術(shù)不足的、能有效適用于HEVC標(biāo)準(zhǔn) 的兩級(jí)離散余弦變換(DCT)系數(shù)存儲(chǔ)方法。
[0005] 本發(fā)明提出的適用于HEVC標(biāo)準(zhǔn)的兩級(jí)DCT系數(shù)存儲(chǔ)方法,是基于指針的,具體步 驟為: 首先,將離散余弦變換(DCT)系數(shù)(以下簡(jiǎn)稱系數(shù)),分成三個(gè)部分:符號(hào)位,高位數(shù)據(jù)和 低位數(shù)據(jù)。在補(bǔ)碼表示的方式下,HEVC標(biāo)準(zhǔn)中的系數(shù)可以用16比特表示。其中,最高位是 符號(hào)位,剩余比特是數(shù)據(jù)位。而更進(jìn)一步地本發(fā)明將數(shù)據(jù)位的較高部分劃歸為高位數(shù)據(jù),剩 余比特劃歸為低位數(shù)據(jù)。具體的劃分方法可以選擇不同的比重,如圖2所示的將高11位劃 為高位數(shù)據(jù),低4位劃為低位數(shù)據(jù)。
[0006] 接著,采用靜態(tài)隨機(jī)訪問(wèn)存儲(chǔ)器(SRAM)作為存儲(chǔ)層次中的第一級(jí),這一級(jí)用來(lái)存 儲(chǔ)符號(hào)位、低位數(shù)據(jù)和能夠指向高位數(shù)據(jù)的高位指針;采用寄存器作為存儲(chǔ)層次中的第二 級(jí),這一級(jí)用來(lái)存儲(chǔ)一些需要存儲(chǔ)的高位數(shù)據(jù)。
[0007] 此處,需要存儲(chǔ)與否取決于該高位內(nèi)的所有比特是否都等于符號(hào)位。在補(bǔ)碼表示 下,如果一個(gè)數(shù)接近于〇,那么該數(shù)較高幾個(gè)比特都將是符號(hào)位的擴(kuò)展。而殘差經(jīng)過(guò)離散余 弦變換(DCT)之后,大量的數(shù)據(jù)都將接近于0。對(duì)于這些數(shù),只要知道了其符號(hào)位,就可以得 到高位數(shù)據(jù),因此,他們是沒(méi)有必要被存儲(chǔ)的。本發(fā)明約定在這種情況下,高位指針被設(shè)置 為一個(gè)特定的值,如〇。那么,當(dāng)高位指針的值為該值,即〇時(shí),高位數(shù)據(jù)就是符號(hào)位的擴(kuò)展。 而對(duì)于需要存儲(chǔ)高位數(shù)據(jù),則他們將通過(guò)第二級(jí)存儲(chǔ)層次,即寄存器存儲(chǔ),并且使用計(jì)數(shù)器 推算高位指針并進(jìn)行索引。以上描述的存儲(chǔ)層次如圖3所示。
[0008] 為了簡(jiǎn)單地建立索引關(guān)系,本發(fā)明可以采用(但不僅限于)使用計(jì)數(shù)器。仍假定高 位指針等于0時(shí),該指針?biāo)鶎?duì)應(yīng)的高位數(shù)據(jù)是符號(hào)位的復(fù)制。那么,在建立索引關(guān)系時(shí),硬 件可以使用一個(gè)計(jì)數(shù)器計(jì)數(shù)需要存儲(chǔ)的高位數(shù)據(jù)的數(shù)目。該計(jì)數(shù)器從1開(kāi)始記錄,當(dāng)且僅 當(dāng)一個(gè)新的需要存儲(chǔ)的高位數(shù)據(jù)出現(xiàn),硬件處理器就將該數(shù)據(jù)存儲(chǔ)于當(dāng)前計(jì)數(shù)器所對(duì)應(yīng)的 寄存器中,接著計(jì)數(shù)器自增1。
[0009] 本發(fā)明通過(guò)層次化的存儲(chǔ)策略減少硬件代價(jià)。
【附圖說(shuō)明】
[0010] 圖1為離散余弦變換(DCT)與轉(zhuǎn)置存儲(chǔ)器。
[0011] 圖2為對(duì)于系數(shù)的劃分。
[0012] 圖3為兩級(jí)存儲(chǔ)策略圖示。
【具體實(shí)施方式】
[0013] 下面通過(guò)實(shí)例,進(jìn)一步具體描述本發(fā)明方法。
[0014] 假設(shè)當(dāng)前需要存儲(chǔ)的16X 16系數(shù)矩陣如下表所示,且按照光柵順序存儲(chǔ)。
[0015] 那么,本發(fā)明將有如下寫(xiě)入過(guò)程: 初始情況下,所有靜態(tài)隨機(jī)存儲(chǔ)器(SRAM)和寄存器的存儲(chǔ)空間都是0,計(jì)數(shù)器是1。
[0016] 對(duì)于第0行第0列的系數(shù)24,它所對(duì)應(yīng)的二進(jìn)制補(bǔ)碼是0000_0000_0001_1000,其 中,符號(hào)位為0,高位數(shù)據(jù)為〇〇〇_〇〇〇〇_〇〇〇 1,低位數(shù)據(jù)為1000。由于高位數(shù)據(jù)不是符號(hào)位的 擴(kuò)展,因此,高位數(shù)據(jù)被存儲(chǔ)在1號(hào)寄存器中;符號(hào)位0,指針1和低位數(shù)據(jù)1000被存儲(chǔ)在 靜態(tài)隨機(jī)存儲(chǔ)器(SRAM)的0地址中;計(jì)數(shù)器隨后自增1,變?yōu)?。
[0017] 對(duì)于第0行第1列的系數(shù)2,它所對(duì)應(yīng)的二進(jìn)制補(bǔ)碼是0000_0000_0000_0010,其 中,符號(hào)位為0,高位數(shù)據(jù)為〇〇〇_〇〇〇〇_〇〇〇〇,低位數(shù)據(jù)為0010。由于高位數(shù)據(jù)是符號(hào)位的擴(kuò) 展,因此,不需要存儲(chǔ)高位數(shù)據(jù);符號(hào)位0,指針0和低位數(shù)據(jù)0010被存儲(chǔ)在靜態(tài)隨機(jī)存儲(chǔ) 器(SRAM)的1地址中;計(jì)數(shù)器不變。
[0018] 對(duì)于第0行第2列的系數(shù)-7,它所對(duì)應(yīng)的二進(jìn)制補(bǔ)碼是111 1_1111_1111_1001,其 中,符號(hào)位為1,高位數(shù)據(jù)為111_111 l_m 1,低位數(shù)據(jù)為1001。由于高位數(shù)據(jù)是符號(hào)位的擴(kuò) 展,因此,不需要存儲(chǔ)高位數(shù)據(jù);符號(hào)位1,指針0和低位數(shù)據(jù)1001被存儲(chǔ)在靜態(tài)隨機(jī)存儲(chǔ) 器(SRAM)的2地址中;計(jì)數(shù)器不變。
[0019] 對(duì)于第0行第3列的系數(shù)-1,它所對(duì)應(yīng)的二進(jìn)制補(bǔ)碼是1111_1111_1111_1111,其 中,符號(hào)位為1,高位數(shù)據(jù)為111_111 l_m 1,低位數(shù)據(jù)為1111。由于高位數(shù)據(jù)是符號(hào)位的擴(kuò) 展,因此,不需要存儲(chǔ)高位數(shù)據(jù);符號(hào)位1,指針0和低位數(shù)據(jù)1111被存儲(chǔ)在靜態(tài)隨機(jī)存儲(chǔ) 器(SRAM)的3地址中;計(jì)數(shù)器不變。
[0020] ......。
[0021] 對(duì)于第1行第0列的系數(shù)7,它所對(duì)應(yīng)的二進(jìn)制補(bǔ)碼是0000_0000_0000_0111,其 中,符號(hào)位為0,高位數(shù)據(jù)為〇〇〇_〇〇〇〇_〇〇〇〇,低位數(shù)據(jù)為0111。由于高位數(shù)據(jù)是符號(hào)位的擴(kuò) 展,因此,不需要存儲(chǔ)高位數(shù)據(jù);符號(hào)位0,指針0和低位數(shù)據(jù)0111被存儲(chǔ)在靜態(tài)隨機(jī)存儲(chǔ) 器(SRAM)的16地址中;計(jì)數(shù)器不變。
[0022] 對(duì)于第1行第1列的系數(shù)-17,它所對(duì)應(yīng)的二進(jìn)制補(bǔ)碼是 其中,符號(hào)位為1,高位數(shù)據(jù)為111_111 l_m〇,低位數(shù)據(jù)為1111。由于高位數(shù)據(jù)不是符號(hào)位 的擴(kuò)展,因此,高位數(shù)據(jù)被存儲(chǔ)在2號(hào)寄存器中;符號(hào)位1,指針2和低位數(shù)據(jù)1111被存儲(chǔ) 在靜態(tài)隨機(jī)存儲(chǔ)器(SRAM)的17地址中;計(jì)數(shù)器隨后自增1,變?yōu)?。
[0023] 對(duì)于第1行第2列的系數(shù)21,它所對(duì)應(yīng)的二進(jìn)制補(bǔ)碼是0000_0000_0001_0101,其 中,符號(hào)位為0,高位數(shù)據(jù)為000_0000_0001,低位數(shù)據(jù)為0101。由于高位數(shù)據(jù)不是符號(hào)位的 擴(kuò)展,因此,高位數(shù)據(jù)被存儲(chǔ)在3號(hào)寄存器中;符號(hào)位0,指針3和低位數(shù)據(jù)0101被存儲(chǔ)在 靜態(tài)隨機(jī)存儲(chǔ)器(SRAM)的18地址中;計(jì)數(shù)器隨后自增1,變?yōu)?。
[0024] ......。
[0025] 本發(fā)明將有如下讀出過(guò)程: 對(duì)于第〇行第〇列的系數(shù)24,它被存儲(chǔ)在靜態(tài)隨機(jī)存儲(chǔ)器(SRAM)的0地址,符號(hào)位是 0,指針是1,低位數(shù)據(jù)是1000 ;由于指針是1,因此,高位數(shù)據(jù)被存儲(chǔ)在1號(hào)寄存器中,內(nèi)容 是 000_0000_0001。所以,最后的值是 0_000_0000_0001_1000,也就是 24。
[0026] 對(duì)于第0行第1列的系數(shù)2,它被存儲(chǔ)在靜態(tài)隨機(jī)存儲(chǔ)器(SRAM)的1地址,符號(hào)位 是0,指針是0,低位數(shù)據(jù)是0010 ;由于指針是0,因此,高位數(shù)據(jù)就是符號(hào)位的擴(kuò)展,也就是 000_0000_0000。所以,最后的值是 0_000_0000_0000_0010,也就是 2。
[0027] 對(duì)于第0行第2列的系數(shù)-7,它被存儲(chǔ)在靜態(tài)隨機(jī)存儲(chǔ)器(SRAM)的2地址,符號(hào) 位是1,指針是0,低位數(shù)據(jù)是1001 ;由于指針是0,因此,高位數(shù)據(jù)就是符號(hào)位的擴(kuò)展,也就 是 111_1111_1111。所以,最后的值是 1_111_1111_1111_1001,也就是-7。
[0028] 對(duì)于第0行第3列的系數(shù)-1,它被存儲(chǔ)在靜態(tài)隨機(jī)存儲(chǔ)器(SRAM)的3地址,符號(hào) 位是1,指針是0,低位數(shù)據(jù)是1111 ;由于指針是0,因此,高位數(shù)據(jù)就是符號(hào)位的擴(kuò)展,也就 是 111_1111_1111。所以,最后的值是 也就是-1。
[0029] ......。
[0030] 對(duì)于第1行第0列的系數(shù)7,它被存儲(chǔ)在靜態(tài)隨機(jī)存儲(chǔ)器(SRAM)的16地址,符號(hào) 位0,指針是0,低位數(shù)據(jù)是0111 ;由于指針是0,因此,高位數(shù)據(jù)就是符號(hào)位的擴(kuò)展,也就是 000_0000_0000。所以,最后的值是 0_000_0000_0000_0000,也就是 7。
[0031] 對(duì)于第1行第1列的系數(shù)-17,它被存儲(chǔ)在靜態(tài)隨機(jī)存儲(chǔ)器(SRAM)的17地址,符 號(hào)位1,指針是2,低位數(shù)據(jù)是1111 ;由于指針是2,因此,高位數(shù)據(jù)被存儲(chǔ)在2號(hào)寄存器中, 內(nèi)容是 111_1111_1110。所以,最后的值是 也就是-17。
[0032] 對(duì)于第1行第2列的系數(shù)21,它被存儲(chǔ)在靜態(tài)隨機(jī)存儲(chǔ)器(SRAM)的18地址,符號(hào) 位0,指針是3,低位數(shù)據(jù)是0101 ;由于指針是3,因此,高位數(shù)據(jù)被存儲(chǔ)在3號(hào)寄存器中,內(nèi) 容是 000_0000_0001。所以,最后的值是 0_000_0000_0001_0101,也就是 21。
[0033] ......。
【主權(quán)項(xiàng)】
1. 一種適用于HEVC標(biāo)準(zhǔn)的基于指針的兩級(jí)DCT系數(shù)存儲(chǔ)方法,其特征在于具體步驟 為: 首先,將DCT系數(shù)分成三個(gè)部分:符號(hào)位、高位數(shù)據(jù)和低位數(shù)據(jù);在補(bǔ)碼表示的方式下,HEVC標(biāo)準(zhǔn)中的系數(shù)用16比特表示,其中,最高位是符號(hào)位,剩余比特是數(shù)據(jù)位;現(xiàn)將數(shù)據(jù)位 的較高部分劃歸為高位數(shù)據(jù),剩余比特劃歸為低位數(shù)據(jù); 接著,SRAM作為存儲(chǔ)層次中的第一級(jí),用來(lái)存儲(chǔ)符號(hào)位、低位數(shù)據(jù)和能夠指向高位數(shù)據(jù) 的高位指針;采用寄存器作為存儲(chǔ)層次中的第二級(jí),用來(lái)存儲(chǔ)一些需要存儲(chǔ)的高位數(shù)據(jù); 當(dāng)高位指針為一個(gè)特定的值〇時(shí),高位數(shù)據(jù)就是符號(hào)位的擴(kuò)展;而對(duì)于需要存儲(chǔ)高位 數(shù)據(jù),則它們將通過(guò)第二級(jí)存儲(chǔ)層次即寄存器存儲(chǔ),并且使用計(jì)數(shù)器推算高位指針并進(jìn)行 索引。2. 根據(jù)權(quán)利要求1所述的適用于HEVC標(biāo)準(zhǔn)的基于指針的兩級(jí)DCT系數(shù)存儲(chǔ)方法,其特 征在于,仍假定高位指針等于0時(shí),該指針?biāo)鶎?duì)應(yīng)的高位數(shù)據(jù)是符號(hào)位的復(fù)制;那么,在建 立索引關(guān)系時(shí),硬件使用一個(gè)計(jì)數(shù)器計(jì)數(shù)需要存儲(chǔ)的高位數(shù)據(jù)的數(shù)目,該計(jì)數(shù)器從1開(kāi)始 記錄,當(dāng)且僅當(dāng)一個(gè)新的需要存儲(chǔ)的高位數(shù)據(jù)出現(xiàn),硬件處理器將該數(shù)據(jù)存儲(chǔ)于當(dāng)前計(jì)數(shù) 器所對(duì)應(yīng)的寄存器中,接著計(jì)數(shù)器自增1。
【專利摘要】本發(fā)明屬于高清數(shù)字視頻壓縮編解碼技術(shù)領(lǐng)域,具體為一種適用于HEVC標(biāo)準(zhǔn)的基于指針的兩級(jí)DCT系數(shù)存儲(chǔ)方法。本發(fā)明將DCT系數(shù)分成三個(gè)部分:符號(hào)位、高位數(shù)據(jù)和低位數(shù)據(jù),并將數(shù)據(jù)位的較高部分劃歸為高位數(shù)據(jù),剩余比特劃歸為低位數(shù)據(jù);同時(shí)采用SRAM作為存儲(chǔ)層次中的第一級(jí),用來(lái)存儲(chǔ)符號(hào)位、低位數(shù)據(jù)和能夠指向高位數(shù)據(jù)的高位指針;采用寄存器作為存儲(chǔ)層次中的第二級(jí),用來(lái)存儲(chǔ)一些需要存儲(chǔ)的高位數(shù)據(jù);并且使用計(jì)數(shù)器推算高位指針并進(jìn)行索引。本發(fā)明通過(guò)層次化的存儲(chǔ)策略減少硬件代價(jià)。
【IPC分類】H04N19/426, H04N19/625
【公開(kāi)號(hào)】CN105376581
【申請(qǐng)?zhí)枴緾N201510787965
【發(fā)明人】范益波, 黃磊磊, 劉淑君, 曾曉洋
【申請(qǐng)人】復(fù)旦大學(xué)
【公開(kāi)日】2016年3月2日
【申請(qǐng)日】2015年11月17日