一種用于高分辨率視頻的h.264幀間編碼存儲(chǔ)管理方法
【專利摘要】本發(fā)明公開(kāi)了一種用于高分辨率視頻的H.264幀間編碼存儲(chǔ)管理方法。H.264幀間編碼會(huì)不斷從SDRAM中取參考幀的數(shù)據(jù),當(dāng)視頻分辨率增加時(shí),所需帶寬將線性增加。由于搜索窗有重疊,可以進(jìn)行數(shù)據(jù)重用。本發(fā)明提出了一種基于局部參考幀緩沖區(qū)的存儲(chǔ)管理方案,采用該方案,參考幀數(shù)據(jù)只需取一次,避免了重復(fù)存取,降低了外部存儲(chǔ)器帶寬,并且,緩沖區(qū)大小和圖像分辨率無(wú)關(guān),尤其適用于高分辨率視頻的H.264幀間編碼。本發(fā)明將輸入的視頻在水平方向平均分成2N列,根據(jù)不同的分辨率設(shè)定不同的N,大分辨率的視頻設(shè)置大的N,小分辨率視頻設(shè)置小的N,按照水平方向先左后右的順序?qū)σ曨l進(jìn)行逐行編碼,采用小容量的緩沖區(qū)即可存放需要用到的參考幀數(shù)據(jù)。
【專利說(shuō)明】—種用于高分辨率視頻的H.264幀間編碼存儲(chǔ)管理方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及視頻編碼【技術(shù)領(lǐng)域】,尤其涉及一種用于高分辨率視頻的H.264幀間編
碼存儲(chǔ)管理方法。
【背景技術(shù)】
[0002]H.264 標(biāo)準(zhǔn)是 ITU-T(ITU-T for ITU Telecommunication StandardizationSector,國(guó)際電信聯(lián)盟遠(yuǎn)程通信標(biāo)準(zhǔn)化組織)的VCEG(Video Coding Experts Group,視頻專家組)和IS0/IEC(國(guó)際標(biāo)準(zhǔn)化組織/國(guó)際電工委員會(huì))的MPEG(Moving PicturesExperts Group,活動(dòng)圖像專家組)的JVT (Joint Video Team,聯(lián)合視頻組)開(kāi)發(fā)的視頻編碼標(biāo)準(zhǔn)。在相同的重建圖像質(zhì)量下,H.264比H.263節(jié)約一半的碼率。它既保留了以往壓縮技術(shù)的優(yōu)點(diǎn)和精華,又具有其他壓縮技術(shù)無(wú)法比擬的許多優(yōu)點(diǎn),既是ITU-T的H.264,又是IS0/IEC的MPEG-4的第10部分。
[0003]隨著高清視頻的發(fā)展和普及,視頻編解碼技術(shù)在大存儲(chǔ)、大數(shù)據(jù)量、高帶寬占用等方面,又面臨著嚴(yán)峻的挑戰(zhàn)。如果處理不好帶寬的優(yōu)化、編碼器數(shù)據(jù)存取等問(wèn)題,只是通過(guò)改進(jìn)編碼器內(nèi)部的編碼算法,也無(wú)法使整個(gè)編碼器系統(tǒng)的性能,得到明顯的提高。在H.264編碼過(guò)程中,最基本的做法是將從圖像傳感器采集到的數(shù)據(jù)存放到外部的SDRAM中,然后從SDRAM中取得編碼的原始數(shù)據(jù)進(jìn)行編碼,將編碼后的最終數(shù)據(jù)再重新存入外部的SDRAM中,完成一幀圖像的編碼。在做幀間編碼時(shí),需要從外部的SDRAM中讀取參考幀數(shù)據(jù),對(duì)于當(dāng)前幀的每個(gè)MB,在取參考幀數(shù)據(jù)時(shí),除了要從SDRAM中讀取參考幀對(duì)應(yīng)位置的MB數(shù)據(jù)外,還需從參考幀中同時(shí)讀取對(duì)應(yīng)位置的MB上下左右4個(gè)MB的數(shù)據(jù)。因此參考幀中的每個(gè)MB都會(huì)被用到5次,對(duì)于一幀圖像的幀間編碼來(lái)講,相當(dāng)于需要從外部SDRAM中對(duì)參考幀數(shù)據(jù)重復(fù)讀取5次,相當(dāng)于5幀的數(shù)據(jù)量,占用了大量的SDRAM帶寬資源。針對(duì)水平方向數(shù)據(jù)連續(xù)的特點(diǎn),可以通過(guò)緩沖將連續(xù)幾個(gè)MB的數(shù)據(jù)復(fù)用,這種方法無(wú)法復(fù)用垂直方向的數(shù)據(jù),因此,還是需要從SDRAM中讀取3幀的數(shù)據(jù)量。
[0004]進(jìn)一步降低SDRAM帶寬,可以采用3個(gè)整行MB (寬度等于圖像寬度,高度為16個(gè)像素)大小的Line Buffer進(jìn)行緩沖,來(lái)減少對(duì)外部SDRAM的訪問(wèn)次數(shù)。即從SDRAM中取出3個(gè)整行MB的參考幀數(shù)據(jù),存入到Line Buffer中,在做幀間編碼時(shí),直接從Line Buffer中取得參考幀數(shù)據(jù)進(jìn)行編碼。這樣,只需要從外部的SDRAM中取一次參考幀數(shù)據(jù),對(duì)SDRAM的帶寬占用減少到I幀的數(shù)據(jù)量。這種采用整個(gè)MB行做Line Buffer的緩沖策略,雖然減少了對(duì)SDRAM的帶寬占用,但需要大量的內(nèi)部存儲(chǔ)器資源用于緩沖區(qū)。隨著視頻分辨率的不斷提升,采用這種MB行Line Buffer做緩沖,需要的緩沖區(qū)大小隨著分辨率的上升而線性增加,在高分辨率的應(yīng)用中并不可取。因此,充分利用小容量存儲(chǔ)器來(lái)降低SDRAM帶寬,利用較少的內(nèi)部存儲(chǔ)資源,來(lái)實(shí)現(xiàn)帶寬利用率的最優(yōu)化,就成為本發(fā)明需要解決的問(wèn)題。
【發(fā)明內(nèi)容】
[0005]本發(fā)明提供一種用于高分辨率H.264幀間編碼的存儲(chǔ)管理方法,目的是基于有限容量的內(nèi)部緩沖區(qū),減少幀間編碼對(duì)外部SDRAM訪問(wèn)的帶寬開(kāi)銷(xiāo)。
[0006]該發(fā)明采用以下技術(shù)方案來(lái)實(shí)現(xiàn):
[0007]將輸入的圖像等分成2N列,N根據(jù)分辨率來(lái)設(shè)定。按照從左向右的順序,依次對(duì)每一列圖像分別進(jìn)行編碼,每列圖像按照自上而下的順序依次編碼。2N個(gè)圖像列編碼后產(chǎn)生2N個(gè)H.264碼流,碼流以鏈表的形式存入外部的SDRAM,最后由軟件把2N個(gè)碼流合并為一個(gè)完整的碼流,完成H.264幀間編碼。
[0008]H.264進(jìn)行巾貞間編碼時(shí),米用Reference Buffer作為緩沖,進(jìn)行巾貞間編碼時(shí),先從SDRAM中取出參考巾貞數(shù)據(jù),存入到內(nèi)部的Reference Buffer,然后直接從Reference Buffer中讀取參考幀數(shù)據(jù)進(jìn)行編碼。針對(duì)每個(gè)MB取參考幀數(shù)據(jù),除了要取參考幀對(duì)應(yīng)位置的MB數(shù)據(jù)外,還要取對(duì)應(yīng)MB相鄰的上、下、左、右四個(gè)MB數(shù)據(jù)。為避免參考幀數(shù)據(jù)的重復(fù)讀取,Reference Buffer 由 3 個(gè) MB 行組成。
[0009]Reference Buffer每行的空間大小用BufMBLine表示,單位為一個(gè)MB的大小,其計(jì)算方法為:
[0010]BufMBLine = Width/(16x2N)+2 (I)
[0011]其中,Width是圖像的寬度,加2是因?yàn)閳D像被分割后為多個(gè)圖像列后,會(huì)產(chǎn)生了新的邊界,而在新邊界處的MB,并不是實(shí)際的圖像行的開(kāi)始或結(jié)束,實(shí)際上,參考幀對(duì)應(yīng)MB的左邊和右邊都存在相鄰的MB可用于編碼。分割后圖像列除了第一列和最后一列只有一個(gè)新邊界,其他的圖像列都有兩個(gè)新邊界,所以Reference Buffer行的大小需要加2以滿足編碼需求;
[0012]Reference Buffer 的大小用 BufArea 可以表不為:
[0013]BufArea = 3xBufMBLine ; (2)
[0014]分割后的圖像列按照從左向右的順序,依次對(duì)2N列圖像分別進(jìn)行編碼,對(duì)每列分割后的圖像,自上而下進(jìn)行編碼。當(dāng)編碼進(jìn)行到第Width/(16x2N)個(gè)MB,即分割后的圖像一行編碼結(jié)束時(shí),參考幀對(duì)應(yīng)行的上一行數(shù)據(jù)后續(xù)不再需要,此時(shí)可以把緩沖區(qū)中上一行的數(shù)據(jù)清空,并從SDRAM中讀取新的數(shù)據(jù)行用于后續(xù)的編碼;
[0015]整個(gè)Reference Buffer的三行緩沖空間,是按照回卷方式重復(fù)使用的。分割后圖像列的編碼順序自上而下,Reference Buffer按行填充的順序是1->2->3->1->2->3,自上而下回卷填充,實(shí)現(xiàn)Reference Buffer的更新。
[0016]該發(fā)明具有以下有益效果:
[0017]內(nèi)部Reference Buffer資源的計(jì)算。一個(gè)MB的數(shù)據(jù)量為16x16x1.5 = 384字節(jié)。對(duì)于分辨率為1920x1080的視頻,采用本發(fā)明的存儲(chǔ)管理方法,設(shè)置N為2,所需的Reference Buffer的大小計(jì)算如下:
[0018]BufArea = 3x[I (/ (2x2)x(1920/16)+2]x384 = 38016yte ; (3)
[0019]采用MB行Line Buffer的存儲(chǔ)管理方法,緩沖區(qū)大小用BufArea’表示為:
[0020]BufArea,= 3x(1920/16) x384 = 138240Byte ; (4)
[0021 ] 即對(duì)于1920x1080的視頻,采用本發(fā)明的存儲(chǔ)管理方法,所需的ReferenceBuffer大小僅為37.1KB ;而以MB行的Line Buffer緩沖的方法,所需的Line Buffer為135KB,是本發(fā)明的內(nèi)部存儲(chǔ)器資源的3.6倍。
[0022]SDRAM帶寬的開(kāi)銷(xiāo)計(jì)算。還是以1920x1080的視頻為例,將圖像分為4個(gè)列(N =2)進(jìn)行編碼,第一個(gè)圖像列和最后一個(gè)圖像列各多I個(gè)新邊界,中間2個(gè)圖像列各多2個(gè)新
邊界,相比于MB行Line Buffer緩沖方法,一共需要從SDRAM多取(1+1+2χ2)xl080/16 =
405個(gè)MB,增加的SDRAM開(kāi)銷(xiāo)比例Delta計(jì)算如下:
【權(quán)利要求】
1.一種用于高分辨率視頻的H.264幀間編碼存儲(chǔ)管理方法,其特征在于,該存儲(chǔ)管理方法采用很小的Reference Buffer作為緩沖區(qū),在做巾貞間編碼時(shí),直接從ReferenceBuffer中讀取參考幀數(shù)據(jù),減少對(duì)SDRAM的訪問(wèn)次數(shù);將輸入的圖像等分成2N列,N根據(jù)分辨率來(lái)設(shè)定,按照從左向右的順序,依次對(duì)每一列圖像分別進(jìn)行編碼,每列圖像按照自上而下的順序依次編碼,2N個(gè)圖像列編碼后產(chǎn)生2N個(gè)H.264碼流,碼流以鏈表的形式存入外部的SDRAM,最后把2N個(gè)碼流合并為一個(gè)完整的碼流,完成H.264幀間編碼。
2.根據(jù)權(quán)利要求1所述的存儲(chǔ)管理方法,其特征在于,采用ReferenceBuffer作為緩沖,進(jìn)行幀間編碼時(shí),先從SDRAM中取出參考幀數(shù)據(jù),存入到內(nèi)部的Reference Buffer,然后直接從Reference Buffer中讀取參考幀數(shù)據(jù)進(jìn)行編碼;針對(duì)每個(gè)16x16像素宏塊MB取參考幀數(shù)據(jù),除了要取參考幀對(duì)應(yīng)位置的MB數(shù)據(jù)外,還要取該MB相鄰的上、下、左、右四個(gè)MB數(shù)據(jù),所述Reference Buffer由3個(gè)MB行組成。
3.根據(jù)權(quán)利要求2所述的存儲(chǔ)管理方法,每個(gè)ReferenceBuffer行的大小用BufMBLine表示,單位為一個(gè)MB的大小,其計(jì)算方法為: BufMBLine = Width/(16x2N) + 2(I) 其中,Width是圖像的寬度,所述Reference Buffer的大小用BufArea可以表示為: BufArea= 3 x BufMBLine ;(2) 根據(jù)權(quán)利要求1或2所述的存儲(chǔ)管理方法,其特征在于,分割的圖像列按照從左向右的順序,依次對(duì)2N列圖像分別進(jìn)行編碼,對(duì)每列分割后的圖像,自上而下進(jìn)行編碼,當(dāng)編碼進(jìn)行到第Width/(16x2N)個(gè)MB,即分割后的圖像一行編碼結(jié)束時(shí),參考幀對(duì)應(yīng)行的上一行數(shù)據(jù)后續(xù)不再需要,此時(shí)可以把緩沖區(qū)中上一行的數(shù)據(jù)清空,并從SDRAM中讀取新的數(shù)據(jù)行用于后續(xù)的編碼。
4.根據(jù)權(quán)利要求1、3、4中任一項(xiàng)所述的存儲(chǔ)管理方法,其特征在于,整個(gè)ReferenceBuffer的三行緩沖空間,是按照回卷方式重復(fù)使用的,分割后圖像列的編碼順序自上而下,Reference Buffer按行填充的順序是1->2->3->1->2->3,自上而下回卷填充,實(shí)現(xiàn)Reference Buffer 的更新。
【文檔編號(hào)】H04N19/50GK103986937SQ201410232742
【公開(kāi)日】2014年8月13日 申請(qǐng)日期:2014年5月28日 優(yōu)先權(quán)日:2014年5月28日
【發(fā)明者】謝震, 齊靜瑞, 徐情生, 顧宇巍, 劉新寧, 楊軍 申請(qǐng)人:東南大學(xué)