專利名稱:視頻編碼中數據幀存儲空間的配置方法
技術領域:
本發明屬于信號處理中的圖像和視頻編解碼技術領域,特別涉及在支持多路、多碼流的視頻編碼過程中配置幀存儲空間的方法。
背景技術:
在視頻監控應用中,對于多路、多碼流編碼的支持已成為編碼器必須具備的功能。 相比于單路、單碼流編碼,多路、多碼流編碼在多個方面面臨更為復雜的問題,其中對于幀存儲空間的分配以及幀存儲空間存取方式方面尤其如此。特別是在需要根據不同的應用, 靈活配置編碼圖像分辨率及編碼路數時,這一問題更為突出。目前已知的相關文獻中對此問題并無特別的涉及。圖1所示為現有的考慮編碼器內部數據流向的編碼器結構示意圖。圖中標示的各數據操作及相關接口說明如下[1]待編碼視頻數據通過存儲器控制器從視頻輸入處理模塊寫入外部存儲器操作接口。[2]待編碼當前幀數據通過存儲器控制器從外部存儲器讀出到視頻編碼模塊操作接口。[3]編碼當前幀所需參考幀數據通過存儲器控制器從外部存儲器讀出到視頻編碼模塊操作接口。[4]編碼當前幀所得重構幀數據通過存儲器控制器從視頻編碼模塊寫入到外部存儲器操作接口。[5]編碼后的碼流數據從視頻編碼模塊寫入外部存儲器操作。[6]外設接口數據操作,包括讀寫寄存器,讀預覽數據,讀碼流數據等。[7]存儲器控制器接口,上述讀寫操作均須通過該接口,在存儲器控制器的控制下寫入外部存儲器或者從外部存儲器中讀出。 [8]外部存儲器物理接口。[9]視頻數據輸入物理接口。[10]外設物理接口。通常情況下,視頻編碼器需要4幀大小的幀緩存,如圖2所示。圖中,CurrO用于存儲當前待編碼的圖像幀數據,由視頻輸入處理模塊通過存儲器控制器將數據寫入外部存儲器中,視頻編碼模塊通過存儲器控制器從外部存儲器中讀出數據。Currl用于存儲編碼 CurrO的過程中需要寫入的下一個待編碼幀的圖像數據,由視頻輸入處理模塊通過存儲器控制器將數據寫入外部存儲器中。Ref用于存儲編碼CurrO所需的參考幀數據,是前一個編碼幀的重構幀,由視頻編碼模塊通過存儲器控制器從外部存儲器中讀出數據。Rec用于存儲編碼CurrO的過程中得到的重構幀數據,用于下一幀編碼的參考幀,由視頻編碼模塊通過存儲器控制器寫入外部存儲器。編碼過程中,輪轉操作如圖2所示,每4幀一個循環。上述讀寫操作中,既有以像素行為單位的操作,又有以像素宏塊為單位的操作,這就要求在上述編碼器所需的幀存儲空間中,對不同的幀數據按照不同的格式存儲。考慮到上述這些情況,在多路、多分辨率編碼的情況下,幀存儲空間的配置是一個必須要解決的問題。
發明內容
為了適應多路、多碼流視頻編碼的需要,本發明專利提出一種在多路、多碼流視頻編碼中數據幀存儲空間的配置方法。本發明所述“主碼流圖像”是指多路視頻編碼中需要正常編碼的某一路圖像,“子碼流圖像”是指某一路圖像中對應于“主碼流圖像”的降采樣后的圖像。多路視頻中的每一路都有“主碼流圖像”和對應的“子碼流圖像”。編碼系統分別對每一路的“主碼流圖像”和 “子碼流圖像”進行編碼。一般地,“子碼流圖像”編碼后的碼率要小于“主碼流圖像”編碼后的碼率,根據網絡帶寬的情況和實際應用的需要,確定單獨傳輸“子碼流圖像”編碼后的碼流,或者單獨傳輸“主碼流圖像”編碼后的碼流,或者同時傳輸“子碼流圖像”編碼后的碼流和“主碼流圖像”編碼后的碼流。視頻編碼中數據幀存儲空間的配置方法,包括如下步驟步驟一、根據視頻或圖像分辨率的大小,確定存儲視頻或圖像所需的DRAM空間的大小;步驟二、將數據幀的存取分成按行格式存取和按宏塊格式存取對于待編碼的數據幀采用行格式存取,對于編碼后的重構幀以及參考幀采用宏塊格式存取;步驟三、分別計算行格式存取的存儲空間分配、宏塊格式存取的存儲空間分配、行格式存取的地址和宏塊格式存取的地址,所述的存儲空間為DRAM。所述行格式存取的存儲空間分配的方法設主碼流圖像一個像素行中亮度數據的個數為Wm,主碼流圖像中像素行數為Hm, 子碼流圖像一個像素行中亮度數據的個數為Ws,子碼流圖像中像素行數為Hs,每個像素位數為1個字節,一個DRAM頁的大小為S個存儲空間,其中每個存儲空間中存儲B個字節,那么,根據Wm,Ws和S*B的關系,有如下兩種方式(1)當(Wm+Ws) < = S祁時,則一個DRAM頁中存儲主碼流圖像的一行亮度數據和該主碼流圖像對應的子碼流圖像的一行亮度數據;存儲全部主碼流圖像的亮度數據所需的 DRAM頁中剩余的部分用于存儲全部的子碼流圖像的亮度數據;(2)當(Wm+Ws) > S^ffi 且(Wm+Ws/2) <= S^ffi 時,則一個 DRAM 頁中存儲主碼流圖像的一行亮度數據和該主碼流圖像對應的子碼流圖像的1/2行的亮度數據;存儲全部主碼流圖像的區域所需的DRAM頁中剩余的部分用于存儲全部的子碼流圖像數據。所述按像素宏塊格式存取的DRAM空間分配的方法為設亮度宏塊的大小為N*N個像素,N為正整數,每個像素的位數為1個字節,一個 DRAM頁的大小為S個存儲空間,其中每個存儲空間中存儲B個字節,根據N*N和S^ffi的關系,有如下兩種情形(1)當訴B/N*N>= 4,且訴B/N*N< 5時,則一個DRAM頁中存儲如下X1、Y1、Z1或者X1、Y1、U1三種數據,其中Xl表示主碼流圖像的兩個亮度宏塊,每個主碼流圖像的亮度存儲空間為N*N ;Yl表示主碼流圖像的兩個色度宏塊,每個主碼流圖像的色度宏塊的存儲空間為N*N/2 ;Zl表示子碼流圖像的一個亮度宏塊,子碼流圖像的亮度宏塊所需存儲空間為 N*N ;Ul表示子碼流圖像的兩個色度宏塊,每個子碼流圖像的色度宏塊存儲空間為N*N/2。(2)當> = 8,且 S*B/N*N < 9 時,則一個 DRAM 頁中至少存儲如下 X2、Y2、 Ζ2或者Χ2、Υ2、U2三種數據,其中Χ2表示主碼流圖像的四個亮度宏塊,每個主碼流圖像的亮度存儲空間為Ν*Ν ;Υ2表示主碼流圖像的四個色度宏塊,每個主碼流圖像的色度宏塊的存儲空間為Ν*Ν/2 ;Ζ2表示子碼流圖像的兩個亮度宏塊,每個子碼流圖像的亮度宏塊所需存儲空間為N*N;U2表示子碼流圖像的四個色度宏塊,每個子碼流圖像的色度宏塊存儲空間為ΝΦΝΛ。所述像素行格式存取的地址產生方法根據DRAM的特點,存取DRAM特定地址空間的地址包括頁地址和列地址,其中頁地址指向DRAM空間中的頁,列地址指向DRAM行中的某個存儲單元;頁地址由頁基地址加上頁偏移地址的方式產生,列地址由列基地址加上列偏移地址的方式產生。上述頁基地址在系統設計時指定或通過寄存器配置,上述頁偏移地址由計數器通過對像素行數計數產生,上述列基地址在系統設計時指定或通過寄存器配置,上述列偏移地址由計數器對行內的像素個數計數產生。所述像素宏塊格式存取地址的產生方法為像素宏塊格式存取地址包括頁地址和列地址,頁地址由頁基地址加上頁偏移地址的方式產生,列地址由列基地址加上列偏移地址的方式產生。上述頁基地址在系統設計時指定或通過寄存器配置,上述頁偏移地址根據宏塊在圖像中的垂直和水平方向的位置計算得到,上述列基地址在系統設計時指定或通過寄存器配置,上述列偏移地址根據宏塊在圖像中的水平方向的位置和宏塊內數據計數器的值組合得到。具體的,本發明中所采取的一組參數為S = 256,B = 4,N = 16, Wm = 720, Ws = 352,Hm = 576,Hs = 288。所述該組參數按行格式存儲在DRAM中時主碼流圖像的亮度部分,占據0到575 個DRAM頁中0 191的地址空間;子碼流圖像的亮度部分,占據0到575個DRAM頁中192 236的地址空間;主碼流圖像的色度U分量部分,占據從576到719共144個DRAM頁中 0 191的地址空間;子碼流圖像的色度U分量部分,占據從576到719共144個DRAM頁中192 236的地址空間;主碼流圖像的色度V分量部分,占據從720到863共144個DRAM 頁中0 191的地址空間;子碼流圖像的色度V部分,占據從720到863共144個DRAM頁中192 236的地址空間。上述U、V分量存儲是分開存儲的情形,U、V分量也可以交織的組合存儲,當為U、V分量以交織的方式組合存儲時,主碼流圖像的色度部分(包括U、V分量),占據從576到863共288個DRAM頁中0 191的地址空間;子碼流圖像的色度部分 (包括U、V分量),占據從576到863共288個DRAM頁中192 236的地址空間。所述該組參數按宏塊格式存儲在DRAM中時主碼流圖像的亮度部分,占據從0到 809共810個DRAM頁中0 128的地址空間;子碼流圖像的亮度部分,占據從0到395共 396個DRAM頁中192 256的地址空間。主碼流圖像的色度部分(包括U、V分量),占據從0到809共810個DRAM頁中1 191的地址空間。子碼流圖像的色度部分(包括U、 V分量),占據從576到773共198個DRAM頁中192 236的地址空間。具體的,本發明中所采取的了另一組參數為S = 512,B = 4,N = 16,Wm = 1280,Ws = 352,Hm = 720,Hs = 288。所述該組參數按行格式存儲在DRAM中時主碼流圖像的亮度部分,占據從0到 719共720個DRAM頁中0 319的地址空間;子碼流圖像的亮度部分,占據從0到287共 288個DRAM頁中384 471的地址空間;主碼流圖像的色度U分量部分,占據從720到839 共120個DRAM頁中0 479的地址空間;子碼流圖像的色度U部分,占據從288到359共 72個DRAM頁中384 471的地址空間;主碼流圖像的色度V分量部分,占據從840到959 共120個DRAM頁中0 479的地址空間。子碼流圖像的色度V部分,占據從360到431共 72個DRAM頁中384 471的地址空間。上述U、V分量的存儲是分開存儲的情形,U、V分量也可以交織方式的組合存儲。U、V分量以交織方式組合存儲時,主碼流圖像的色度部分 (包括UV分量),占據從720到959共240個DRAM頁中0 479的地址空間。子碼流圖像的色度部分(包括UV分量),占據從觀8到431共144個DRAM頁中384 471的地址空間。所述該組參數按宏塊格式存儲在DRAM中時主碼流圖像的亮度部分,占據從0到 899共900個DRAM頁中0 255的地址空間;子碼流圖像的亮度部分,占據從0到197共 198個DRAM頁中384 511的地址空間;主碼流圖像的色度部分(包括U、V分量),占據從 0到899共900個DRAM頁中256 383的地址空間;子碼流圖像的色度部分(包括U、V分量),占據從198到297共99個DRAM頁中384 511的地址空間。本發明的有益效果體現在針對圖像編碼中不同的處理階段數據存取的方式不同,分別采取像素行格式的幀存儲器的配置和像素宏塊格式的幀存儲器的配置,將整行,或者整個宏塊的數據存儲在DRAM的同一個頁中,同時以整行,或者整個宏塊的形式實現對所需數據的存取操作,減少像素數據存取過程中改變DRAM頁地址的次數,提高存取操作的效率。同時將主碼流圖像和該主碼流圖像對應的子碼流圖像對應存儲,可簡化存取主碼流圖像和子碼流圖像的地址產生邏輯。尤其在需要實現多路編碼,每路的主碼流圖像分辨率不同,且子碼流圖像分辨率也不同的情況下,所述簡化存取主碼流圖像和子碼流圖像的地址產生邏輯,帶來了更快的處理速度。
圖1為現有的視頻編碼器模塊結構框圖;圖2為現有的視頻編碼器所需的幀存儲空間及其輪轉順序示意圖;圖3為本發明實施例的宏塊在圖像中的位置示意圖;圖4為本發明實施例一的DRAM存儲空間示意圖;圖5為本發明的實施例一中按行操作的DRAM幀存儲空間分配方法示意圖,U分量和V分量分別放置;圖6為本發明的實施例一中按行操作的DRAM幀存儲空間分配方法示意圖,U分量和V分量組合放置;圖7為本發明的實施例一中按宏塊格式操作的DRAM幀存儲空間分配方法示意圖。圖8為本發明實施例二中的DRAM存儲空間示意圖;圖9為本發明實施例二中按行操作的DRAM幀存儲空間分配方法示意圖,U分量和 V分量分別放置;
圖10為本發明實施例二中按行操作的DRAM幀存儲空間分配方法示意圖,U分量和V分量組合放置;圖11為本發明的實施例二中按宏塊格式操作的DRAM幀存儲空間分配方法示意圖。
具體實施例方式以下結合附圖和實施例對本發明內容進一步說明。本實施例的視頻編碼中配置數據幀的存儲空間的方法,包括如下步驟步驟一、根據視頻或圖像分辨率的大小,確定存儲視頻或圖像所需的 DRAM (Dynamic Random Access Memory,動態隨機存儲器)空間的大小;步驟二、將數據幀的存取分成按行格式存取和按宏塊格式存取對于待編碼的數據幀采用行格式存取,對于編碼后的重構幀以及參考幀采用宏塊格式存取;。步驟三、分別計算行格式存取的存儲空間分配、宏塊格式存取的存儲空間分配、行格式存取的地址和宏塊格式存取的地址,在本實施例中采用DRAM存儲所述行格式存取的存儲空間分配的方法設主碼流圖像一個像素行中亮度數據的個數為Wm,主碼流圖像中像素行數Hm,子碼流圖像一個像素行中亮度數據的個數為Ws,子碼流圖像中像素行數為Hs,每個像素位數為1個字節即8bit,一個DRAM頁(page)的大小為S個存儲空間,每個存儲空間中存儲B個字節。為了提高數據存取的效率,減少像素行存取過程中可能存在的DRAM的頁面切換次數,像素行格式存取的原則是將同一像素行的數據存儲在同一個DRAM頁中。根據Wm,Ws 和S*B的關系,采用如下兩種方式(1)當(Wm+Ws) < = S*B時,則一個DRAM頁中可存儲主碼流圖像的一行亮度數據和該主碼流圖像對應的子碼流圖像的一行亮度數據;存儲全部主碼流圖像的亮度數據所需的DRAM頁中剩余的部分用于存儲全部的子碼流圖像的亮度數據。(2)當(Wm+Ws) > S^ffi 且(Wm+Ws/2) <= S*B 時,則一個 DRAM 頁中可存儲主碼流圖像的一行亮度數據和該主碼流圖像對應的子碼流圖像的1/2行的亮度數據;子碼流圖像的行數一般小于等于主碼流行數的一半,存儲全部主碼流圖像的區域所需的DRAM頁中剩余的部分用于存儲全部的子碼流圖像數據。滿足上述兩種條件時,對于主碼流圖像中的色度數據和子碼流圖像中的色度數據,依亮度和色度之間的比例關系,如Y U V = 4 2 0時(Y表示亮度信號,U、V表示色度信號),此時存儲色度數據所需的DRAM行數為存儲亮度數據DRAM行數的一半;如 Y U V = 4 2 2時,存儲色度數據所需的DRAM頁數與存儲亮度數據所需DRAM頁數是一樣的。存儲全部主碼流圖像的色度數據所需的DRAM頁中剩余的部分可以存儲全部的子碼流圖像的色度數據。根據上述兩種情況,合理選擇S和B的值,以滿足上述兩種關系。所述按像素宏塊格式存取的存取空間分配的方法設亮度宏塊的大小為N*N個像素,為了提高數據存取的效率,減少宏塊存取過程中可能存在的DRAM的頁面切換次數,宏塊格式存取的原則是將同一個宏塊的數據存儲在同一個DRAM頁中,根據N*N和S^ffi的關系,本實施例中考慮如下兩種情況(1)當訴B/N*N > = 4,且訴B/N*N < 5時,則一個DRAM頁中存儲如下XI、Y1、 Zl或者XI、YU Ul三種數據X1表示主碼流圖像的兩個亮度宏塊,每個主碼流圖像的亮度存儲空間為N*N ;Yl表示主碼流圖像的兩個色度宏塊,每個主碼流圖像的色度宏塊的存儲空間為N*N/2 ;Zl表示子碼流圖像的一個亮度宏塊,每個子碼流圖像的亮度宏塊所需存儲空間為N*N ;Ul表示子碼流圖像的兩個色度宏塊,每個子碼流圖像的色度宏塊存儲空間為 N*N/2。一般主碼流圖像中的亮度宏塊個數為子碼流圖像中亮度宏塊個數的4倍及以上,按上述存儲方式,存儲主碼流圖像亮度宏塊所需的DRAM頁中,可完整的存儲主碼流圖像的色度宏塊、子碼流圖像的亮度宏塊和子碼流圖像的色度宏塊。(2)當S氺B/N氺N > = 8,且S氺B/N氺N < 9時,則一個DRAM頁中存儲如下X2、Y2、Z2 或者X2、Y2、U2三種數據X2表示主碼流圖像的四個亮度宏塊,每個主碼流圖像的亮度存儲空間為N*N ;Y2表示主碼流圖像的四個色度宏塊,每個主碼流圖像的色度宏塊的存儲空間為N*N/2 ;Z2表示子碼流圖像的兩個亮度宏塊,每個子碼流圖像的亮度宏塊所需存儲空間為N*N ;U2表示子碼流圖像的四個色度宏塊,每個子碼流圖像的色度宏塊存儲空間為 N*N/2。一般主碼流圖像中的亮度宏塊個數為子碼流圖像中亮度宏塊個數的4倍及以上,按上述存儲方式,存儲主碼流圖像亮度宏塊所需的DRAM頁中,可完整的存儲主碼流圖像的色度宏塊、子碼流圖像的亮度宏塊和子碼流圖像的色度宏塊。所述像素行格式存取的地址產生方法根據DRAM的特點,像素行格式存取地址包括頁地址和列地址。其中頁地址指向 DRAM空間中的頁,列地址指向DRAM頁中的某個存儲單元,頁地址由頁基地址加上頁偏移地址的方式產生,列地址由列基地址加上列偏移地址的方式產生。上述頁基地址可根據需要在系統設計時指定,也可通過寄存器配置;上述頁偏移地址由計數器通過對像素行數計數產生;上述列基地址可根據需要在系統設計時指定,也可通過寄存器配置;上述列偏移地址由計數器對行內的像素個數計數產生。所述像素宏塊格式存取地址的產生方法根據DRAM的特點,像素宏塊格式存取地址包括頁地址和列地址,頁地址由頁基地址加上頁偏移地址的方式產生,列地址由列基地址加上列偏移地址的方式產生。上述頁基地址可根據需要在系統設計時指定,也可通過寄存器配置;上述頁偏移地址根據宏塊在圖像中的垂直和水平方向的位置計算得到;上述列基地址可根據需要在系統設計時指定,也可通過寄存器配置;上述列偏移地址根據宏塊在圖像中的水平方向的位置和宏塊內數據計數器的值組合得到。宏塊在圖像中的垂直和水平方向上的位置如圖3所示,圖中的gobx標示了宏塊在圖像中的水平方向的位置,取值范圍為
, goby標示了宏塊在圖像中的垂直方向的位置,取值范圍為
,其中W為圖像的寬度,H為圖像的高度。下面,通過實施例一對視頻編碼中幀存儲空間的配置方法進行具體說明。所述實施例一的參數選擇為S= 256,B = 4,N = 16,Wm = 720,Ws = ;352,Hm = 576, Hs = 288o YUV的格式為4:1 1。DRAM的存儲空間如圖4所示,包括4個Bank(又稱 “組”),每個Bank中包括4096page (又稱“頁”),每頁的容量為256x 32比特,即256x4字節,S = 256,B = 4。將整個DRAM均分成圖中所示的16塊區域。對于所述實施例的參數配置,所分隔的16塊區域的任一塊區域可用來按行或者按宏塊格式存儲一路的主碼流圖像和子碼流圖像。后續所述的幀存儲空間的分布,是針對16塊區域中的任一個區域所作的, 適合于16塊空間中的任一個區域。所述16塊區域可配置為滿足多路、多碼流編碼的應用。該組參數滿足條件Wm+Ws > S*B,Wm+Ws/2 < = S^ffi時,一個DRAM頁中可存儲主碼流圖像的一行亮度數據和該主碼流圖像對應的子碼流圖像的1/2行的亮度數據。圖5所示為按像素行格式操作的DRAM幀存儲空間的分布。對于亮度分量,主碼流圖像分辨率為720x576,一行的像素亮度數據個數為720,即180x32bit,一個DRAM頁的 256x32空間里可存儲的亮度行的個數=256x32/180x32 = 1,考慮到與宏塊存儲的兼容性, 取19&32個空間存儲一行的亮度像素數據,剩余的64x32的存儲空間用于存儲子碼流的亮度數據。對于色度分量,主碼流圖像分辨率為720x576時,一行色度數據個數為360個U, 360個V,U/V分開存儲。以U分量為例,360x8 = 90x32,存儲一行亮度的空間可以存儲兩行的U數據,考慮到與宏塊存儲的兼容性,取19^32個空間存儲兩行的色度U數據,剩余的 6虹32用于存儲子碼流的色度U數據。對于亮度分量子碼流圖像分辨率為35^^88,一行的亮度數據(88x32)需要存到兩個DRAM頁中(剩余的64x32),所需總的DRAM頁為^8x2 = 576。對于子碼流的色度分量,一行的色度U分量數據(44x32)需要存到一個DRAM頁中剩余的64x32的空間中,所需的總的DRAM頁為144。即寫入主碼流的288行色度U數據所需的DRAM頁的個數為144,可同時寫入主碼流和子碼流的色度U數據。對色度V數據,有同樣的結論。圖5中Dl-Y部分為主碼流圖像的亮度部分,占據576個DRAM頁中0 191的地址空間。CIF-Y部分為子碼流圖像的亮度部分,占據576個DRAM頁中192 236的地址空間。Dl-U部分為主碼流圖像的色度U分量部分,占據144個DRAM頁中0 191的地址空間。CIF-U部分為子碼流圖像的色度U分量部分,占據144個DRAM頁中192 236的地址空間。Dl-V部分為主碼流圖像的色度V分量部分,占據144個DRAM頁中0 191的地址空間。CIF-V部分為子碼流圖像的色度V部分,占據144個DRAM頁中192 236的地址空間。所述的U、V分量可分開存儲,也可以交織的組合存儲,圖6為U、V分量以交織的方式組合存儲的示意圖。Dl-UV部分為主碼流圖像的色度部分(包括U、V分量),占據288個 DRAM頁中0 191的地址空間。CIF-UV部分為子碼流圖像的色度部分(包括U、V分量), 占據288個DRAM頁中192 236的地址空間。按像素行方式存儲時,存取外部DRAM的頁地址和頁內列地址的生成方式包括如下四種情況1.主碼流圖像(分辨率720x576)的亮度地址產生頁基址 row_base 0頁偏移1~0界_(^€861111_7_1~0¥_0^,其中,111_7_1~0¥_0^為 10 位二進制計數器,該計數器用于對主碼流圖像中亮度像素數據的行數進行計數,計數范圍0 575。列基址 col_base 0列偏移col_off set :m_y_col_cnt,其中m_y_col_cnt為8位二進制計數器,該計數器用于對主碼流圖像中亮度像素數據一行內的數據個數以四個像素為單位進行計數,計數范圍0 180。2.主碼流圖像(分辨率720x576)的色度U分量地址產生
頁基址 row_base 576頁偏移 row_offset :m_u_row_cnt [8 1],其中 m_u_row_cnt 為 9 位二進制計數器, 該計數器對主碼流圖像中色度U分量像素數據的行數進行計數,該9位行計數器的計數范圍0 7(包括色度U分量和V分量),m_row_cnt[8:l]表示取m_u_row_cnt的高8位。列基址 col_base 0列偏移 col_offset:m_u_row_cnt
*90+m_u_col_cnt,其中 m_u_row_cnt
表示取該m_U_r0W_Cnt的最低1位;m_U_C0l_Cnt為7位二進制計數器,該計數器對主碼流圖像中色度U分量像素數據一行內的數據個數以四個像素為單位進行計數,計數范圍0 89 ( 一個DRAM頁中存儲兩個色度U分量像素行)。主碼流圖像色度V分量的情況除行基址外,其他完全一致,色度V分量的頁基址 row—base72003.子碼流圖像(分辨率352X^8)的亮度數據映射頁基址 row_base 0頁偏移 row_offset s_y_row_cnt+s_y_col_cnt [6],其中 s_y_row_cnt 為 9 位二進制計數器,該計數器用于對子碼流亮度像素數據中的像素行數進行計數,計數范圍0 287 ;s_y_col_cnt為7位二進制計數器,用于對子碼流亮度像素數據中的一行內的像素數據個數以四個像素為單位進行計數,s_y_col_cnt計數范圍0 89 ( —個DRAM頁中寫兩個色度U分量像素行),s_y_col_cnt[6]表示取s_y_col_cnt的最高位。列基址 col_base 192列偏移(;01_0打8618_7_(;01_0^[5:0],計數范圍0 43。s_y_col_cnt[50]表示取s_y_col_cnt中的低6位。4.子碼流圖像(分辨率352X^8)的色度U分量地址映射(176x144)頁基址 row_base 576頁偏移 row_offset s_u_row_cnt [8 1],其中,s_u_row_cnt 為 9 位二進制計數器, 該計數器用于對子碼流色度U分量像素數據中的像素行數進行計數,計數范圍0 觀7,包括U分量和V分量的像素行各144行;s_u_row_cnt [8 1]表示取s_u_row_cnt中的高8位。列基址 col_base: 192列偏移col_offset:s_u_col_cnt,其中 s_u_col_cnt 位 6 位二進制計數器,該計數器用于對色度U分量像素數據一行內的數據個數以四個像素為單位進行計數,計數范圍 0 43。子碼流色度V分量的情況除頁基址外,其他完全一致。子碼流色度V分量的頁基址 row_base720。圖7所示為按宏塊格式操作的DRAM幀存儲空間分布。1.亮度數據主碼流圖像分辨率為720x576,每行包括720個像素點,分布在45個行向MB (Macro Block,宏塊)中,每個MB的大小為N*N,N= 16,圖像的高度為576,分布在36個列向MB中, 即一幀的主碼流圖像中包含4切36 = 1620個MB。子碼流圖像(分辨率35^^88)的亮度分量,每行的寬度為352個像素點,分布在22個行向MB中,圖像的高度為觀8,分布在18個列向MB中,即一幀的子碼流圖像中包含2hl8 = 396個MB。滿足條件S*B/N*N >= 4,S*B/N*N< 5,一個DRAM頁中存儲所需存儲空間分別為大小為2*N*N的主碼流圖像的兩個亮度宏塊和大小為2*N*N/2的兩個色度宏塊,以及所需存儲空間為N*N的子碼流圖像的一個亮度宏塊或者所需存儲空間為2*N*N/2的子碼流圖像的兩個色度宏塊。一幀的主碼流圖像的亮度數據寫入DRAM時,所需的DRAM頁數為1620/2 = 810。考慮地址映射的便利性, 寫入一個MB行(GOB,Group of Block,宏塊組),即45個行向MB需要45Λ個DRAM頁,取整為23個DRAM頁。寫入36個MB行需要的DRAM頁的個數為23x36 = 828。一幀的子碼流圖像的亮度數據寫入DRAM時,寫入一個MB行(GOB),即22個行向MB需要22/1 = 22個 DRAM頁,寫入18個MB行需要的DRAM頁的個數為2hl8 = 396。2.色度數據主碼流圖像分辨率為720x576,行偏移地址為0,列偏移地址為128,每行色度的寬度為720個像素點(包括360個U和360個V),分布在45個行向MB中,圖像的高度為觀8, 分布在36 Q88/8)個列向MB中,即主碼流圖像一幀的圖像中包含4切36 = 1620個色度MB。 子碼流圖像分辨率為35^288的情況,行偏移地址為576,列偏移地址為192,每行的色度寬度為352個像素(176個U和176個V),分布在22個行向MB中,圖像的高度為144,分布在 18(144/8)個列向MB中,即一幀的子碼流圖像中包含2hl8 = 396個色度MB (每個色度MB 的數據量為32個32bit)。滿足條件S*B/N*N >= 4,S*B/N*N < 5,一幀的主碼流圖像的色度數據寫入DRAM時,所需的DRAM頁數為1620/2 = 810。考慮到地址的映射的便利性, 寫入一個MB行(GOB),即45個行向MB需要45/2 = 23個DRAM頁。寫入36個MB行需要的DRAM頁的個數為23x36 = 828。一幀的子碼流圖像的色度數據寫入DRAM時,寫入一個 MB行(GOB),即22個行向MB需要22/2 = 11個DRAM頁。寫入18個MB行需要的DRAM頁的個數為:llxl8 = 198。如圖7,圖中Dl-Y部分為主碼流圖像的亮度部分,占據810個DRAM頁中0 1 的地址空間。CIF-Y部分為子碼流圖像的亮度部分,占據396個DRAM頁中192 256的地址空間。Dl-UV部分為主碼流圖像的色度部分(包括U、V分量),占據810個DRAM頁中 128 191的地址空間。CIF-UV部分為子碼流圖像的色度部分(包括U、V分量),占據個 DRAM頁中192 236的地址空間。按宏塊方式存儲時,存取外部DRAM的頁地址和頁內列地址的生成方式包括如下四種情況1.主碼流圖像(分辨率720x576)亮度的頁、列地址頁基地址 row_base 0 ;頁偏移地址1~(^_0打861::111_7_8(^1[5:1]+111_7_8(^^1<23,111_7_8(^1 為 6 位二進制計數器,該計數器用于對主碼流圖像亮度數據行方向宏塊個數進行計數,m_y_gobX[5:l]表示取m_y_gobX的高5位;m_y_goby為6位二進制計數器,該計數器用于對主碼流圖像亮度數據宏塊列數進行計數;23為05/ 取整的結果,由于一個DRAM頁中存儲兩個宏塊,23為存儲一行的主碼流亮度宏塊所需的DRAM頁的個數。列基地址 col_base:0 ;列偏移地址 col_offset :m_y_gobx
*64+m_y_mb_cnt,其中 m_y_gobx
為 m_y_ gobx的最低位,其中m_ymb_Cnt為6位二進制計數器,用于對主碼流圖像亮度宏塊內的像素數據個數以四個像素為單位進行計數(由于一個DRAM的存儲空間32bit可存儲4個像素);2.主碼流圖像(分辨率720x576)色度的頁、列地址頁基地址 row_base 0 ;頁偏移地址 row_offset :m_uv_gobx [5 1] +m_uv_goby*23 ;m_uv_gobx 為 6 位二進制計數器,該計數器用于對主碼流圖像色度數據行方向宏塊個數進行計數,m_uv_ gobx [5:1]表示取m_uv_gobX的高5位;m_uV_goby為5位二進制計數器,該計數器用于對主碼流圖像色度數據宏塊列數進行計數,計數范圍;23為05/2)取整的結果,由于一個 DRAM頁中存儲兩個宏塊,23為存儲一行的主碼流亮度宏塊所需的DRAM頁的個數。列基地址 col_base:128 ;列偏移地址 col_offset:m_uv_gobx
*32+m_uv_mb_cnt,其中 m_uv_mb_cnt 為 5位二進制計數器,用于對色度宏塊內的數據個數以四個像素為單位進行計數,計數范圍 0 31。3.子碼流圖像(分辨率35^^88)亮度的頁、列地址
頁基地址 row_base 0 ;頁偏移地址S_g0bx+S_g0by*22 ;s_gobx為5位二進制計數器,該計數器用于對子碼流圖像亮度數據行方向宏塊個數進行計數;s_goby為5位二進制計數器,該計數器用于對子碼流圖像亮度數據宏塊列數進行計數;22為存儲一行的子碼流亮度宏塊所需的DRAM 頁的個數;列基地址 col_base: 192 ;列偏移地址col_offset s_y_mb_cnt,其中s_y_mb_cnt為6位二進制計數器,用于對子碼流圖像亮度宏塊內的數據個數以四個像素為單位進行計數;4.子碼流圖像(分辨率35^^88)色度的頁、列地址頁基地址 row_base 576 ;頁偏移地址row_offset:s_gobxW:l]+s_goby*ll ;其中11為存儲一行的子碼流色度宏塊所需的DRAM頁的個數;列基地址 col_base: 192 ;列偏移地址 col_offset:s_gobx
*32+s_uv_mb_cnt,其中 s_gobx
為 s_gobx 的最低位,其中s_UV_mb_Cnt為5位二進制計數器,用于對子碼流圖像色度宏塊內的數據個數以四個像素為單位進行計數;下面,通過實施實例二對視頻編碼中幀存儲空間的配置方法進行具體說明。本實施例的參數選擇為S= 512,B = 4,N = 16,Wm = 1280,Ws = 352,Hm = 720, Hs = 288。YUV的格式為4:1:1。DRAM的存儲空間如圖8所示,包括4個Bank,每個Bank 中包括4096頁(page),每頁的容量為51&32比特,即512x4字節,S = 512,B = 4。將整個DRAM均分成圖中所示的16塊區域。對于所述實施例的參數配置,所分隔的16塊區域的任一塊區域可用來按行或者按宏塊格式存儲一路的主碼流圖像和子碼流圖像。后續所述的幀存儲空間的分布,是針對16塊區域中的任一個區域所作的,適合于16塊空間中的任一個區域。所述16塊區域可配置為滿足多路、多碼流編碼的應用。該組參數滿足條件Wm+Ws < = S*B,一個DRAM頁中可存儲主碼流圖像的一行亮度數據和該主碼流圖像對應的子碼流圖像的一行的亮度數據。
圖9所示為按像素行格式操作的DRAM幀存儲空間的分布。對于亮度分量,主碼流圖像分辨率為U80X720,一行的像素亮度數據個數為1觀0,即320x32bit,一個DRAM頁的51&32的空間里可存儲的亮度行的個數512x32/320x32 = 1,考慮到與宏塊存儲的兼容性,取38虹32個空間存儲一行的亮度像素數據,剩余的128x32的存儲空間用于存儲子碼流的亮度數據,存儲全部的一幀主碼流亮度圖像所需總的DRAM頁為720。子碼流圖像亮度圖像分辨率為35&觀8,一行的像素亮度數據個數為352,即88x32bit,一個DRAM頁剩余的 128x32的空間里存儲子碼流亮度一行的數據,存儲全部的一幀子碼流亮度圖像所需總的 DRAM頁為觀8。對于色度分量,主碼流圖像分辨率為1280x720時,一行色度數據個數為640 個U分量像素,640個V分量像素,U、V分量分開存儲,一整主碼流圖像中U、V分量各有360 行。以色度U分量為例,一行色度數據640x8 = 160x32,一個DRAM頁的51&32的空間可以寫入三行的U分量數據,存儲全部的一幀主碼流色度U分量圖像所需總的DRAM頁為360/3 =120。對于子碼流圖像的色度分量U,分辨率為176x144,兩行的色度U數據(44x3h2)存到一個DRAM頁中剩余的128x32的存儲空間,存儲全部的一幀子碼流色度U分量圖像所需的總的DRAM頁為144/2 = 72。圖9中HD-Y部分為主碼流圖像的亮度部分,占據720個DRAM頁中0 319的地址空間。QHD-Y部分為子碼流圖像的亮度部分,占據288個DRAM頁中384 471的地址空間。HD-U部分為主碼流圖像的色度U分量部分,占據120個DRAM頁中0 479的地址空間。 QHD-U部分為子碼流圖像的色度U部分,占據72個DRAM頁中384 471的地址空間。HD-V 部分為主碼流圖像的色度V分量部分,占據120個DRAM頁中0 479的地址空間。QHD-V 部分為子碼流圖像的色度V部分,占據72個DRAM頁中384 471的地址空間。所述的U、V分量可分開存儲,也可以交織方式的組合存儲。圖10為U、V分量以交織方式組合存儲的示意圖。HD-UV部分為主碼流圖像的色度部分(包括UV分量),占據 240個DRAM頁中0 479的地址空間。QHD-UV部分為子碼流圖像的色度部分(包括UV分量),占據144個DRAM頁中384 471的地址空間。按像素行格式存儲時,存取外部DRAM的頁地址和頁內列地址的生成方式包括如下四種情況1.主碼流圖像(分辨率1280x720)的亮度地址產生頁基址 row_base 0頁偏移1~(^_(^€861111_7_1~(^_0^,其中,111_7_1~(^_0^為 10 位二進制計數器,該計數器用于對主碼流圖像中亮度像素數據的行數進行計數,計數范圍0 719 ;列基址 col_base:0列偏移col_offset:m_y_col_cnt,其中m_y_col_cnt為9位二進制計數器,該計數器用于對主碼流圖像中亮度像素數據一行內的數據個數進行計數,計數范圍0 3192.主碼流圖像(分辨率1280x720)的色度U地址產生頁基址 row_base 720頁偏移 row_ofTset:m_u_row_cnt/3,其中 m_u_row_cnt 為 9 位二進制計數器,該計數器對主碼流圖像中色度U分量像素數據的行數進行計數,該9位行計數器的計數范圍 0 359 (包括色度U和V分量數據)。列基址 col_base:0
列偏移 col_offset (m_u_row_cnt % 3) *90+m_u_col_cnt,其中(m_u_row_cnt % 3)表示取該m_U_r0W_Cnt除以3的余數;m_U_C0l_Cnt為8位二進制計數器,該計數器對主碼流圖像中色度U分量像素數據一行內的數據個數進行計數,計數范圍0 159 (—個DRAM 頁中寫三個色度U行)色度V的情況除行基址外,其他完全一致,色度V的行基址row_base 840。3.子碼流(圖像分辨率352X^8)的亮度數據映射頁基址 row_base 0頁偏移row_offset s_y_row_cnt,其中s_y_row_cnt為9位二進制計數器,該計數器用于對子碼流亮度像素數據中的像素行數進行計數,s_y_row_cnt的計數范圍0 IKU列基址 col_base :384列偏移col_offset:s_y_col_cnt,其中,s_y_col_cnt 為 7 位二進制計數器,用于對子碼流亮度像素數據中的一行內的像素數據個數以4個像素為單位進行計數,s_y_col_ cnt計數范圍0 87 ;4.子碼流(圖像分辨率352X^8)的色度U地址映射(176x144)頁基址 row_base 288頁偏移 row_offset s_u_row_cnt [8 1],其中,s_u_row_cnt 為 9 位計數器,該計數器用于對子碼流色度U分量像素數據中的像素行數進行計數,計數范圍0 觀7,包括U和 V 的行各 144 行;s_u_row_cnt[8:1]表示取 s_u_row_cnt 中的高 8 位。列基址 col_base 384列偏移col_offset s_u_col_cnt,其中s_u_col_cnt位6位二進制計數器,該計數器用于對色度U分量像素數據一行內的數據個數4個像素為單位進行計數,計數范圍0 43。色度V的情況除行基址外,其他完全一致。色度V的行基址rOW_baSe:360。圖11所示為按宏塊格式操作的DRAM幀存儲空間分布。1.亮度數據主碼流圖像分辨率為U80X720,每行包括1280個像素點,分布在80個行方向 MB (Macro Block,宏塊)中,每個MB的大小為N*N,N = 16,圖像的高度為720,分布在45個列方向MB中,即一幀的主碼流圖像中包含80x45 = 3600個MB。子碼流圖像分辨率35^^88, 子碼流的亮度分量,每行的寬度為352個像素點,分布在22個行方向MB中,圖像的高度為觀8,分布在18個列向MB中,即一幀的子碼流圖像中包含2hl8 = 396個MB。滿足條件 S*B/N*N >= 8,S*B/N*N < 9,一個DRAM頁中存儲所需存儲空間分別為4*N*N的主碼流圖像的四個亮度宏塊和4*N*N/2的四個色度宏塊,以及所需存儲空間為2*N*N的子碼流圖像的兩個亮度宏塊或者所需存儲空間為4*N*N/2的子碼流圖像的四個色度宏塊。一幀的主碼流圖像的亮度數據寫入DRAM時,所需的DRAM頁數為3600/4 = 900。寫入一個宏塊組 (GOB, Group of Block,宏塊組),即80個行向MB需要80/4 = 20個DRAM頁。寫入45個宏塊組需要的DRAM頁的個數為20x45 = 900。一幀的子碼流圖像的亮度數據寫入DRAM時, 寫入一個宏塊組,即22個行向MB需要Till = 11個DRAM頁,寫入18個宏塊組需要的DRAM 頁的個數為llxl8 = 198。2.色度數據
主碼流圖像色度數據(分辨率為U80x720),行偏移地址為0,列偏移地址為256, 每行色度的寬度為1280個像素點(包括640個U和640個V),分布在80個行向MB中,圖像的高度為360,分布在45個列向MB中,即主碼流圖像一幀的圖像中包含80x45 = 3600個色度MB (每個色度MB的數據量為32個32bit)。子碼流圖像分辨率為35&觀8的情況,行偏移地址為198,列偏移地址為384,每行的色度寬度為352個像素(176個U和176個V), 分布在22個行向MB中,圖像的高度為144,分布在9(144/16)個列向MB中,即一幀的子碼流圖像中包含2hl8 = 396個色度MB (每個色度MB的數據量為32個32bit)。滿足條件 S*B/N*N > = 8,S*B/N*N < 9,一幀的主碼流圖像的色度數據寫入DRAM時,所需的DRAM頁數為3600/4 = 900。寫入一個MB行(GOB),即80個行向MB需要80/4 = 20個DRAM頁。 寫入45個MB行需要的DRAM頁的個數為20x45 = 900。一幀的子碼流圖像的色度數據寫入DRAM時,寫入一個MB行(GOB),即22個行向MB需要22/2 = 11個DRAM頁。寫入9個 MB行需要的DRAM頁的個數為llx9 = 99。如圖11,圖中HD-Y部分為主碼流圖像的亮度部分,占據900個DRAM頁中0 255 的地址空間。QHD-Y部分為子碼流圖像的亮度部分,占據198個DRAM頁中384 511的地址空間。HD-UV部分為主碼流圖像的色度部分(包括U、V分量),占據900個DRAM頁中 256 383的地址空間。QHD-UV部分為子碼流圖像的色度部分(包括U、V分量),占據99 個DRAM頁中384 511的地址空間。按宏塊方式存儲時,存取外部DRAM的頁地址和頁內列地址的生成方式包括如下四種情況1.主碼流圖像(分辨率U80X720)亮度的頁、列地址頁基地址 row_base 0 ;頁偏移地址 row_offset m_y_gobx [6:2] +m_y_goby*20,m_y_gobx 為 7 位二進制計數器,該計數器用于對主碼流圖像亮度數據行方向宏塊個數進行計數,m_y_gobX[6:2]表示取m_y_gobX的高5位;m_y_goby為6位二進制計數器,該計數器用于對主碼流圖像亮度數據宏塊列數進行計數;20為80/4的結果,由于一個DRAM頁中存儲四個亮度宏塊,20為存儲一行的主碼流亮度宏塊所需的DRAM頁的個數。列基地址 col_base:0 ;列偏移地址 col_offset:m_y_gobx[1 0]*64+m_y_mb_cnt,其中 m_y_gobx[1 0]表示取m_y_gobX的低2位,其中m_y_mb_Cnt為6位二進制計數器,用于對主碼流圖像亮度宏塊內的數據個數以四個像素為單位進行計數;2.主碼流圖像(分辨率U80X720)色度的頁、列地址頁基地址 row_base 0 ;頁偏移地址 row_offset m_uv_gobx [6 2] +m_uv_goby*20 ;m_uv_gobx 為 7 位二進制計數器,該計數器用于對主碼流圖像色度數據行方向宏塊個數進行計數,m_uv_ gobx[6:2]表示取m_uv_gobX的高5位;m_uV_goby為6位二進制計數器,該計數器用于對主碼流圖像色度數據宏塊列數進行計數;20為80/4的結果,由于一個DRAM頁中存儲四個色度宏塊,20為存儲一行的主碼流亮度宏塊所需的DRAM頁的個數。列基地址 col_base 256 ;列偏移地址 col_offset:m_uv_gobx[1 0]*32+m_uv_mb_cnt,其中 m_uv_mb_cnt 為5位二進制計數器,用于對色度宏塊內的數據個數進行計數,計數范圍0 31。3.子碼流圖像(分辨率35^^88)亮度的頁、列地址頁基地址 row_base 0 ;頁偏移地址s_y_gobX [5 1]+s_y_goby*l 1 ; s_y_gobx為5位二進制計數器,該計數器用于對子碼流圖像亮度數據行方向宏塊個數進行計數;s_goby為5位二進制計數器,該計數器用于對子碼流圖像亮度數據宏塊列數進行計數;s_y_gobX[5:1]表示取s_y_gobX的高5位;11為存儲一行的子碼流亮度宏塊所需的DRAM頁的個數02/2);列基地址 col_base 384 ;列偏移地址 col_offset:s_y_gobx
*64+s_y_mb_cnt,其中,s_y_gobx
表示取s_y_gobX的最低1位,其中s_y_mb_Cnt為6位二進制計數器,用于對子碼流圖像亮度宏塊內的數據個數進行計數;4.子碼流圖像(分辨率35^^88)色度的頁、列地址頁基地址 row_base 198 ;頁偏移地址 row_offset s_uv_gobx [4 2] +s_uv_goby*l 1 ;s_uv_gobx 為 5 位二進制計數器,該計數器用于對子碼流圖像亮度數據行方向宏塊個數計數,計數范圍;s_uv_ goby為5位二進制計數器,該計數器用于對子碼流圖像亮度數據宏塊列數進行計數,計數器的范圍0 17 ;其中11為存儲一行的子碼流色度宏塊所需的DRAM頁的個數;列基地址 col_base:384 ;列偏移地址 col_offset:s_uv_gobx[l:0]*32+s_uv_mb_cnt,其中 s_uv_ gobx[l:0]表示s_uV_gobX的最低2位,其中s_uV_mb_Cnt為5位二進制計數器,用于對子碼流圖像色度宏塊內的數據個數進行計數;計數范圍0 31。應該理解到的是,上述實施例只是對本發明的說明,而不是對本發明的限制,任何不超出本發明實質精神范圍內的發明創造,均落入本發明保護范圍之內。
權利要求
1. 一種視頻編碼中數據幀存儲空間的配置方法,其特征在于包括如下步驟 步驟一、根據視頻或圖像分辨率的大小,確定存儲視頻或圖像所需的DRAM空間的大步驟二、將數據幀的存取分成按行格式存取和按宏塊格式存取對于待編碼的數據幀采用行格式存取,對于編碼后的重構幀以及參考幀采用宏塊格式存取;步驟三、分別計算行格式存取的存儲空間分配、宏塊格式存取的存儲空間分配、行格式存取的地址和宏塊格式存取的地址,所述的存儲空間為DRAM。
2.如權利要求1所述的視頻編碼中數據幀存儲空間的配置方法,其特征在于,所述行格式存取的存儲空間分配的方法為設主碼流圖像一個像素行中亮度數據的個數為Wm,主碼流圖像中像素行數為Hm,子碼流圖像一個像素行中亮度數據的個數為Ws,子碼流圖像中像素行數為Hs,每個像素位數為 1個字節,一個DRAM頁的大小為S個存儲空間,其中每個存儲空間中存儲B個字節,那么,根據Wm,Ws和S*B的關系,有如下兩種方式(1)當(Wm+Ws)<= S祁時,則一個DRAM頁中存儲主碼流圖像的一行亮度數據和該主碼流圖像對應的子碼流圖像的一行亮度數據;存儲全部主碼流圖像的亮度數據所需的 DRAM頁中剩余的部分用于存儲全部的子碼流圖像的亮度數據;(2)當(Wm+Ws)> S^ffi且(Wm+Ws/2) <= S^ffi時,則一個DRAM頁中存儲主碼流圖像的一行亮度數據和該主碼流圖像對應的子碼流圖像的1/2行的亮度數據;存儲全部主碼流圖像的區域所需的DRAM頁中剩余的部分用于存儲全部的子碼流圖像數據;所述主碼流圖像是指多路視頻編碼中需要正常編碼的某一路圖像,所述子碼流圖像是指某一路圖像中對應于“主碼流圖像”的降采樣后的圖像;所述按像素宏塊格式存取的DRAM空間分配的方法為設亮度宏塊的大小為N*N個像素,N為正整數,每個像素的位數為1個字節,一個DRAM 頁的大小為S個存儲空間,其中每個存儲空間中存儲B個字節,根據N*N和S^ffi的關系,有如下兩種情形(1)當S*B/N*N>=4,且S*B/N*N< 5時,則一個DRAM頁中存儲如下XI、Yl、Zl或者 XI、YU Ul三種數據,其中Xl表示主碼流圖像的兩個亮度宏塊,每個主碼流圖像的亮度存儲空間為N*N ;Yl表示主碼流圖像的兩個色度宏塊,每個主碼流圖像的色度宏塊的存儲空間為N*N/2 ;Zl表示子碼流圖像的一個亮度宏塊,子碼流圖像的亮度宏塊所需存儲空間為 N*N ;Ul表示子碼流圖像的兩個色度宏塊,每個子碼流圖像的色度宏塊存儲空間為N*N/2 ;(2)當> = 8,且< 9 時,則一個 DRAM 頁中存儲如下 X2、Y2、Z2 或者X2、Y2、U2三種數據,其中X2表示主碼流圖像的四個亮度宏塊,每個主碼流圖像的亮度存儲空間為N*N;Y2表示主碼流圖像的四個色度宏塊,每個主碼流圖像的色度宏塊的存儲空間為N*N/2 ;Z2表示子碼流圖像的兩個亮度宏塊,每個子碼流圖像的亮度宏塊所需存儲空間為N*N ;U2表示子碼流圖像的四個色度宏塊,每個子碼流圖像的色度宏塊存儲空間為 N*N/2。
3.如權利要求2所述的視頻編碼中數據幀存儲空間的配置方法,其特征在于,所述像素行格式存取的地址產生方法像素行格式存取地址包括頁地址和列地址,其中頁地址指向DRAM空間中的頁,列地址指向DRAM行中的某個存儲單元;頁地址由頁基地址加上頁偏移地址的方式產生,列地址由列基地址加上列偏移地址的方式產生;所述頁基地址在系統設計時指定或通過寄存器配置,所述頁偏移地址由計數器通過對像素行數計數產生,所述列基地址在系統設計時指定或通過寄存器配置,所述列偏移地址由計數器對行內的像素個數計數產生。
4.如權利要求2所述的視頻編碼中數據幀存儲空間的配置方法,其特征在于,所述像素宏塊格式存取地址的產生方法為像素宏塊格式存取地址包括頁地址和列地址,頁地址由頁基地址加上頁偏移地址的方式產生,列地址由列基地址加上列偏移地址的方式產生; 所述頁基地址在系統設計時指定或通過寄存器配置,所述頁偏移地址根據宏塊在圖像中的垂直和水平方向的位置計算得到,所述列基地址在系統設計時指定或通過寄存器配置,所述列偏移地址根據宏塊在圖像中的水平方向的位置和宏塊內數據計數器的值組合得到。
5.如權利要求2所述的視頻編碼中數據幀存儲空間的配置方法,其特征在于,按S= 256,B = 4, N = 16, Wm = 720,Ws = 352,Hm = 576,Hs = 288 選擇參數;1)按行格式存儲在DRAM中時主碼流圖像的亮度部分,占據0到575個DRAM頁中0 191的地址空間;子碼流圖像的亮度部分,占據0到575個DRAM頁中192 236的地址空間;主碼流圖像的色度部分包括U、V分量,子碼流圖像的色度部分包括U、V分量,所述主碼流圖像和子碼流圖像的色度部分按如下方法之一存儲a)U、V分量分開存儲主碼流圖像的色度U分量部分,占據從576到719共144個DRAM 頁中0 191的地址空間;子碼流圖像的色度U分量部分,占據從576到719共144個DRAM 頁中192 236的地址空間;主碼流圖像的色度V分量部分,占據從720到863共144個 DRAM頁中0 191的地址空間;子碼流圖像的色度V部分,占據從720到863共144個DRAM 頁中192 幻6的地址空間;b)U、V分量組合存儲主碼流圖像的色度部分占據從576到863共288個DRAM頁中 0 191的地址空間;子碼流圖像的色度部分占據從576到863共288個DRAM頁中192 236的地址空間;2)按宏塊格式存儲在DRAM中時主碼流圖像的亮度部分,占據從0到809共810個 DRAM頁中0 1 的地址空間;子碼流圖像的亮度部分,占據從0到395共396個DRAM頁中 192 256的地址空間;主碼流圖像的色度部分占據從0到809共810個DRAM頁中1 191的地址空間,子碼流圖像的色度部分占據從576到773共198個DRAM頁中192 236 的地址空間。
6.如權利要求2所述的視頻編碼中數據幀存儲空間的配置方法,其特征在于,按S= 512,B = 4, N = 16, Wm = 1280,Ws = 352,Hm = 720,Hs = 288 選擇參數;1)按行格式存儲在DRAM中時主碼流圖像的亮度部分,占據從0到719共720個DRAM 頁中0 319的地址空間;子碼流圖像的亮度部分,占據從0到287共288個DRAM頁中 384 471的地址空間;主碼流圖像的色度部分包括U、V分量,子碼流圖像的色度部分包括U、V分量,所述主碼流圖像和子碼流圖像的色度部分按如下方法之一存儲a)U、V分量分開存儲主碼流圖像的色度U分量部分,占據從720到839共120個DRAM 頁中0 479的地址空間;子碼流圖像的色度U部分,占據從288到359共72個DRAM頁中384 471的地址空間;主碼流圖像的色度V分量部分,占據從840到959共120個DRAM 頁中0 479的地址空間;子碼流圖像的色度V部分,占據從360到431共72個DRAM頁中 384 471的地址空間;b)U、V分量組合存儲主碼流圖像的色度部分占據從720到959共240個DRAM頁中 0 479的地址空間;子碼流圖像的色度部分占據從288到431共144個DRAM頁中384 471的地址空間;2)按宏塊格式存儲在DRAM中時主碼流圖像的亮度部分,占據從0到899共900個 DRAM頁中0 255的地址空間;子碼流圖像的亮度部分,占據從0到197共198個DRAM頁中 384 511的地址空間;主碼流圖像的色度部分占據從0到899共900個DRAM頁中256 383的地址空間;子碼流圖像的色度部分占據從198到297共99個DRAM頁中384 511的地址空間。
全文摘要
本發明公開了一種視頻編碼中數據幀存儲空間的配置方法,其包括如下步驟步驟一、根據視頻或圖像分辨率的大小,確定存儲視頻或圖像所需的DRAM空間的大小;步驟二、將數據幀的存取分成按行格式存取和按宏塊格式存取對于待編碼的數據幀采用行格式存取,對于編碼后的重構幀以及參考幀采用宏塊格式存取;步驟三、分別計算行格式存取的存儲空間分配、宏塊格式存取的存儲空間分配、行格式存取的地址和宏塊格式存取的地址,所述的存儲空間為DRAM。本發明通過將整行或者整個宏塊的數據存儲在DRAM的同一個頁中并對所需數據的存取操作,可以減少像素數據存取過程中改變DRAM頁地址的次數,提高存取操作的效率。
文檔編號H04N7/26GK102256131SQ20111021231
公開日2011年11月23日 申請日期2011年7月28日 優先權日2011年7月28日
發明者胡紅旗, 陳劍軍, 陳君輝 申請人:杭州士蘭微電子股份有公司