欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

圖像在存儲器中的地址映射方法

文檔序號:7953715閱讀:404來源:國知局
專利名稱:圖像在存儲器中的地址映射方法
技術領域
本發(fā)明涉及圖像存儲技術,包括視頻圖像數(shù)據(jù)在同步動態(tài)隨機訪問存儲器(SDRAM)的存儲技術,尤其涉及一種圖像在存儲器中的地址映射方法。
背景技術
數(shù)字視頻的傳輸技術廣泛應用于多媒體領域,如數(shù)字電視(HDTV)、機頂盒、DVD等。為減少帶寬要求,常常采用編碼與譯碼等方式來進行視頻壓縮。數(shù)字視頻壓縮算法通常通過消除存在于視頻信號里的冗余成分,來減少圖像或圖像組的內(nèi)容信息。例如MPEG2、MPEG4、H.264等視頻壓縮算法中,把一幀圖像劃分成多個16*16或8*8的宏塊從空間上來消除冗余成分;同時,采用運動預測及運動補償?shù)姆绞綇臅r域上來消除冗余成分。
在視頻壓縮編碼時,根據(jù)運動圖像相鄰幀之間有一定的相似性原則,通過運動預測,參考前一幀圖像與這一幀圖像的相似情況,去掉與前一幀相似的冗余數(shù)據(jù),而只記錄這一幀與上一幀不同的數(shù)據(jù),從而大大提高了視頻數(shù)據(jù)的壓縮效率,這種壓縮方法也稱為幀相關壓縮。MPEG2壓縮過程中,以圖像組(GOP)為一個單元,包括I幀和B、P幀。I幀稱為參考幀,所謂參考幀是其它幀都參考的起始幀,所以I幀是一個能夠完全記載這一幀全部圖像數(shù)據(jù)的幀,也稱為全幀。P幀是前向預測幀,是根據(jù)與前一幀圖像的比較,去掉與前幀相似的數(shù)據(jù)而構(gòu)成的幀。B幀是雙向預測幀,是根據(jù)與前后一幀圖像的比較而得到的幀。P、B幀是不完全幀,需要依靠I幀而成立。運動預測由兩個過程組成先把圖像劃分為若干16點*16點的宏塊(4個8點*8點的塊),然后搜索判定它在下一幀中的位置,得到運動矢量。
在視頻解碼運算中,通過運動補償來得到完整的圖像。圖像數(shù)據(jù)通常存儲在同步動態(tài)隨機存儲器(Synchronous Dynamic Random Access Memory)中。不完全幀的運動補償部分根據(jù)基值和運動矢量,計算得到在相對應的幀中的參考宏塊,并由參考宏塊進行運動補償而得到完整的幀,因此運動補償部分需要頻繁地訪問存儲器。尤其是雙向預測中B幀解碼的時候,需要從存儲于存儲器的前向參考幀和后向參考幀各輸入一個參考宏塊,運算完畢后再輸出一個宏塊給存儲器。整個宏塊運算過程需要2次讀存儲器,1次寫存儲器的動作。例如,對于通常的運動向量為整數(shù)的點,對于亮度分量Y分量,一般需要讀入2個16*16的宏塊,寫回1個16*16的宏塊。特別是,對于寫回的宏塊,它的起始地址是確定的。而對于參考幀輸入的參考宏塊,它的起始地址由運動向量決定,因而是不確定的。由于運動補償計算在重構(gòu)時可能需要采用插值計算,而宏塊的采樣位置匹配可以精確到半個象素點或者更小,參考圖像的參考宏塊通??赡艹霈F(xiàn)最大為17*17的宏塊,地址不確定的機率也更大。
另一方面,在存儲器的工作過程中,存儲器可以保持一部分曾經(jīng)訪問過的Bank(存儲陣列)的行地址,如果需要訪問的數(shù)據(jù)在同一行中,那就不需要等待放大傳感器進行變換,而直接達到行命中。在行命中的情況下,只需要等待列地址的確立,就能找到所需的存儲單元,從而得到需要的數(shù)據(jù)。但有的情況下,對存儲器存取請求的行地址與上一次存取操作的行地址不同,也就是說,相鄰兩次訪問的地址不相關,此時,可能出現(xiàn)兩種情形。如果訪問的存儲單元與上次存取操作不在同一Bank中,則可以直接打開新的Bank;如果訪問的存儲單元與上次存取操作在同一Bank中,僅僅是行地址不同的話,我們稱之為“行不命中”,需要進行預轉(zhuǎn)換(precharge)。先關閉目前已經(jīng)打開的行地址,并關閉當時激活的Bank,然后再重新激活同一Bank,并打開新的行地址,從而轉(zhuǎn)換到新的需要的行地址。地址不相關的兩個相鄰的對存儲器的訪問命令,因為預轉(zhuǎn)換的延遲,開銷一般要在4-6個時鐘周期左右。而地址相關的兩個相鄰的存儲器訪問,在同一個Bank,行地址相同,并且讀寫屬性相同,則只需要一個時鐘周期。二者延遲時間相差很大。
而運動補償中參考幀輸入的參考宏塊起始地址不確定,可能導致對存儲器的頻繁存取,這就可能引起存儲器的頻繁的預轉(zhuǎn)換。MPEG算法中參考宏塊的帶寬一般在2/3以上,尤其是當存儲器的位寬增加時,參考宏塊的帶寬還可能進一步增加。如何盡可能地降低讀取參考宏塊而減少訪問存儲器時的訪問開銷,也成為MPEG解碼技術中亟待解決的一個問題。
同時解碼帶寬也與解碼器的輸出相關。按照MPEG標準,解碼器的輸出格式有幀輸出和場輸出兩種。幀輸出一般為16*16大小的宏塊,而場輸出由于采用隔行掃描方式,一般為兩個16*16大小的宏塊,即以16*32大小為單位。如何同時滿足幀輸出和場輸出兩種輸出格式的需求,而使存儲器預轉(zhuǎn)換的次數(shù)降到最少量,也是解碼器設計中的一個需要重視的問題。

發(fā)明內(nèi)容
為克服現(xiàn)有技術中存在的缺陷,本發(fā)明提出了一種MPEG解碼中視頻圖像數(shù)據(jù)對存儲器的地址映射方法,能夠滿足MPEG標準幀輸出和場輸出的要求,并可以降低讀取參考宏塊對存儲器訪問時行不命中的概率,使參考宏塊的存儲器訪問開銷達到最小,從而減小了系統(tǒng)的帶寬需求。
根據(jù)本發(fā)明的一個方面,提供一種圖像對存儲器的地址映射方法,用以將解碼后的圖像數(shù)據(jù)映射到存儲器的相應地址,所述方法包括以下步驟(a)一幀圖像劃分為多個矩形宏塊;(b)提供存放圖像數(shù)據(jù)的存儲器,所述存儲器具有至少兩個存儲陣列,每個存儲陣列中包含多個存儲行;(c)以一幀圖像中的整數(shù)個相鄰的宏塊作為一個映射單元;(d)以一個映射單元為單位,按照先水平方向從左到右、再垂直方向從上到下的順序?qū)D像數(shù)據(jù)依次連續(xù)映射到存儲器;(e)將至少一個映射單元的圖像數(shù)據(jù)映射到同一存儲陣列中的同一存儲行,直至該存儲行映射滿;(f)切換存儲陣列以映射緊隨其后的映射單元的圖像數(shù)據(jù),直至完成一幀圖像數(shù)據(jù)的映射。
根據(jù)本發(fā)明的另一方面,所述步驟(e)進一步包括將一個映射單元的每個宏塊中的各個象素依次連續(xù)存放在存儲器的相同存儲陣列的相同存儲行的步驟。
根據(jù)本發(fā)明的另一方面,所述步驟(c)進一步包括以一幀圖像中的整數(shù)個垂直相鄰的宏塊作為一個映射單元的步驟。
根據(jù)本發(fā)明的另一方面,所述步驟(c)進一步包括以一幀圖像中的2個垂直相鄰的宏塊作為一個映射單元的步驟。
根據(jù)本發(fā)明的另一方面,所述步驟(c)進一步包括以一幀圖像中的2N個垂直相鄰的宏塊作為一個映射單元的步驟,其中,N為正整數(shù)。
根據(jù)本發(fā)明的另一方面,當所述圖像數(shù)據(jù)為YUV格式的圖像數(shù)據(jù)時,所述步驟(d)進一步包括先將Y分量信號進行映射,再將UV分量信號排列在一起以拼接形式進行映射的步驟。
根據(jù)本發(fā)明的另一方面,當所述圖像數(shù)據(jù)為場輸出的圖像數(shù)據(jù),而每個映射單元的宏塊中均包含間隔排列的奇場象素和偶場象素時,所述步驟(d)進一步包括將奇場象素按從左到右、從上到下的順序依次連續(xù)映射到存儲器,將偶場象素按從左到右、從上到下的順序依次連續(xù)映射到存儲器,并將奇場象素與偶場象素隔行交錯排列的步驟。
根據(jù)本發(fā)明的另一方面,所述步驟(d)進一步包括先對一幀圖像中的全部奇場象素進行映射,再對一幀圖像中的全部偶場象素進行映射的步驟。
根據(jù)本發(fā)明的另一方面,進一步包括在映射過程中,當訪問所述存儲器中存放的參考宏塊時,采用先水平方向從左到右、再垂直方向從上到下的順序?qū)λ龃鎯ζ鲗ぶ返牟襟E。
根據(jù)本發(fā)明的另一方面,進一步包括將映射單元的大小設置成與存儲器中存儲行的長度相適應,使所述存儲器中一個存儲行的長度是一個映射單元的大小的整數(shù)倍的步驟。
本發(fā)明以兩個垂直相鄰的宏塊為一個映射單元進行圖像地址映射,并相應地設置了讀取參考宏塊的方式,降低了訪問存儲器中參考宏塊時發(fā)生行不命中的概率,并能同時滿足幀輸出和場輸出兩種輸出格式的需求,減少了對存儲器存取過程中的預轉(zhuǎn)換,增加了存儲器訪問的整體效率。


以下附圖為對本發(fā)明示例性實施例的輔助說明,結(jié)合以下附圖對本發(fā)明實施例的闡述,是為進一步揭示本發(fā)明的特征所在,但并不限制本發(fā)明,圖中相同符號代表實施例中相應元件或步驟,其中圖1為一幀圖像中Y、U、V三種分量象素劃分成多個矩形宏塊的幀圖。
圖2為本發(fā)明的圖像數(shù)據(jù)對存儲器的地址映射方法流程圖。
圖3A為本發(fā)明一個實施例中Y宏塊對存儲器地址映射的象素排列順序圖。
圖3B為本發(fā)明一個實施例中U宏塊和V宏塊對存儲器地址映射的象素排列順序圖。
圖4A和4B分別表示在Y分量幀圖中的兩個Y分量映射單元,以及在UV混合幀圖中的兩個UV分量映射單元。
圖5A為本發(fā)明一個實施例中Y分量映射單元對存儲器的地址映射圖。
圖5B為本發(fā)明一個實施例中UV分量映射單元對存儲器的地址映射圖。
圖6A和6B分別從不同角度示意本發(fā)明中宏塊在存儲器中地址映射順序規(guī)則。
圖7A-7D顯示了參考宏塊尋址時可能出現(xiàn)的四種存儲器地址映射狀況。
圖8為本發(fā)明另一實施例中圖像數(shù)據(jù)對存儲器的地址映射示意圖。
具體實施例方式
電視系統(tǒng)中,把構(gòu)成一幅圖像的各像素傳送一遍稱為進行了一個幀處理。MPEG解碼有幀場模式的區(qū)別。幀模式下一幅圖像作為完整的一個場,按照從左到右、從上到下的順序掃描;場模式下一幅圖像分成隔行交錯排列的奇、偶兩個場,可以按先奇場再偶場的順序進行掃描。若場掃描頻率為確定,每幀圖像的掃描行數(shù)也可以確定。實際上也可以理解為,每幀圖像包含多行,每行又含有多個象素點。在MPEG解碼標準中,可以將圖像以宏塊形式進行傳送和存儲。把每幀圖像劃分為多個矩形宏塊,每個宏塊包含一定的行數(shù),每行包含一定數(shù)量的象素點。也可以理解為,每個宏塊包含一定的行數(shù)和一定的列數(shù)。我們可以把一幀圖像中的象素劃分成多個矩形宏塊,并將一幀圖像稱之為幀圖。
數(shù)字視頻壓縮經(jīng)常用分量視頻的形式來表示,在YUV格式中,Y為亮度分量,而U、V分別為色度分量。通過色度——亮度采樣的結(jié)合,在不損害圖像質(zhì)量的同時,可以減少所需帶寬。在本發(fā)明的一些實施例中,可以YUV格式對圖像數(shù)據(jù)進行編解碼。
如圖1所示,YUV格式的圖像數(shù)據(jù)中,對于一幀圖像的每種分量可以各以一個方框圖來表示。圖1中,參照號a、b、c分別表示Y分量、U分量和V分量的方框圖。一幀圖像的每種分量均可以劃分成多個矩形宏塊。本實施例中以采樣結(jié)構(gòu)為4:2:0格式的解碼方式來進行說明。在4:2:0格式下,無論為行方向或列方向,亮度分量的采樣頻率為色度分量采樣頻率的2倍。因此,一個Y宏塊的大小通常為16*16象素,共256象素;而一個U宏塊或一個V宏塊的大小通常為8*8象素,共64象素。對于采樣結(jié)構(gòu)為4:2:2格式或者其他格式的解碼,亮度分量的采樣頻率與色度分量采樣頻率的關系有所變化,則Y宏塊或U、V宏塊的大小也可以相應調(diào)整,但并不影響本發(fā)明的實施。在本發(fā)明的一個實施例中,對于YUV格式的圖像數(shù)據(jù),可以在存儲器中把Y分量和UV分量的數(shù)據(jù)分開存儲。例如,可將Y分量信號先行映射;而UV分量信號排列在一起,以拼接(Packet)形式進行映射,如圖3B所示(以下將作詳述)。
參考圖2,本發(fā)明提出的圖像數(shù)據(jù)對存儲器的地址映射方法,是將解碼后的圖像數(shù)據(jù)映射到存儲器的相應地址,步驟S21,將一幀圖像劃分為多個矩形宏塊;步驟S22,提供存放圖像數(shù)據(jù)的存儲器,所述存儲器具有至少兩個存儲陣列,每個存儲陣列中包含多個存儲行;步驟S23,以一幀圖像中的整數(shù)個相鄰的宏塊作為一個映射單元;步驟S24,以一個映射單元為單位,按照先水平方向從左到右、再垂直方向從上到下的順序?qū)D像數(shù)據(jù)依次連續(xù)映射到存儲器;步驟S25,將至少一個映射單元的圖像數(shù)據(jù)映射到同一存儲陣列中的同一存儲行,直至該存儲行映射滿;步驟S26,切換存儲陣列以映射緊隨其后的映射單元的圖像數(shù)據(jù),直至完成一幀圖像數(shù)據(jù)的映射。
映射單元的大小與存儲器中存儲行的長度相適應,使得存儲器中一個存儲行的長度是一個映射單元的大小的整數(shù)倍。
這里的存儲器可以是含DRAM核的存儲模塊,例如同步動態(tài)隨機存儲器(SDRAM)、雙倍速率存儲器(DDR)等。
在本發(fā)明的一個實施例中,以幀圖中的整數(shù)個垂直相鄰的宏塊作為一個映射單元。在本發(fā)明的另一個實施例中,一個映射單元包括2個垂直相鄰的宏塊。
在本發(fā)明的另一實施例中,一個映射單元包括2的N次方(2N)個相鄰的宏塊,N為正整數(shù)。
每個映射單元中的各象素按照先水平方向從左到右、再垂直方向從上到下的順序依次連續(xù)映射到存儲器中。
訪問存儲器中存放的參考宏塊時,采用先水平方向從左到右、再垂直方向從上到下的順序?qū)Υ鎯ζ鬟M行訪問。
按照MPEG標準,解碼輸出格式包括場輸出格式和幀輸出格式兩類。解碼器接收來自前端發(fā)射設備發(fā)出的傳輸流(Transport Stream),而解碼得到視頻數(shù)據(jù)。傳輸流中包含解碼輸出格式的相關信息,在解碼器完成解碼后,即可得到視頻圖象數(shù)據(jù)的解碼輸出格式。
對于場輸出的圖像數(shù)據(jù),一幀圖像包括奇場和偶場,每個映射單元中的宏塊均包含隔行交錯排列的奇場象素和偶場象素。對于每個映射單元,奇場中的各象素按從左到右、從上到下的順序依次映射到存儲器中,偶場中的各象素同樣按從左到右、從上到下的順序依次映射到存儲器中。對于場輸出的圖像數(shù)據(jù),由于解碼順序為先輸出全部奇場象素,再輸出全部偶場象素。因此,在存放時,先存放一幀圖像中的全部奇場象素,再存放一幀圖像中的全部偶場象素。奇場象素與偶場象素隔行交錯排列映射到存儲器中。
對于幀輸出的圖像數(shù)據(jù),每個映射單元中的所有象素按從左到右、從上到下的順序依次連續(xù)地映射并存放到存儲器中。
圖3A為在采樣結(jié)構(gòu)為4:2:0格式下Y宏塊對存儲器地址映射的象素排列順序圖,圖3B為UV宏塊對存儲器地址映射的象素排列順序圖。對于采樣結(jié)構(gòu)為4:2:0格式的解碼,一幀圖像中的Y分量里的任意一個Y宏塊,其大小為16*16象素,包括16行,每行包含16個象素。對于幀圖中的U分量或V分量里的任意一個U宏塊或V宏塊,其大小分別為8*8象素,包括8行,每行包含有8個象素。在圖3B所示實施例中,UV宏塊的排列沒有采用單獨的U圖和V圖,而是將UV宏塊排列在一起,以拼接(Packet)形式進行映射,U宏塊與V宏塊的象素數(shù)據(jù)相間排列。這種拼接形式,使得對存儲器中U分量和V分量的象素數(shù)據(jù)的訪問可以在一個指令周期中同時進行,節(jié)省了對存儲器的訪問次數(shù),也從一個方面節(jié)省了對存儲器訪問的帶寬要求。拼接后,一個UV宏塊大小是16*8象素,包括16行,每行為8個象素。圖中U0,0(奇)和U0,0(偶)等分別表示在幀輸出格式下的奇行象素與偶行象素,在場輸出格式下的奇場象素和偶場象素。
參見圖4A、4B和圖5A、5B,在本發(fā)明的一個實施例中,一個分量映射單元包括幀圖中的2個垂直相鄰的宏塊。圖4A和4B分別示例性地表示一個幀圖的Y分量和一個幀圖的UV分量。圖5A和5B分別示例性地表示了一個Y分量映射單元和一個UV分量映射單元。
在把Y分量對存儲器進行地址映射時,以Y分量幀圖中的2個垂直相鄰的宏塊為一個Y分量映射單元,每個映射單元中的象素按先水平方向從左到右、再垂直方向從上到下的順序依次連續(xù)映射到存儲器中。在其他實施例中,Y分量映射單元的大小可以根據(jù)需求而改變,每個Y分量映射單元中包括整數(shù)個Y宏塊,并且這些Y宏塊垂直相鄰或水平相鄰,例如圖8的幀圖中每個映射單元包括4個相鄰的宏塊。圖中標號801、802、803、804分別表示四個映射單元,每個映射單元包括4個水平或垂直相鄰的宏塊。
在圖4A和圖5A的實施例中,一個映射單元包括2個16*16象素大小的Y宏塊,共512象素,每個象素為1字節(jié)(byte)。圖4A中以不同方向斜線區(qū)別相鄰的Y分量映射單元,每個Y分量映射單元均包括垂直相鄰的兩個Y宏塊。
存儲器中每個存儲行(row)的長度為一個Y分量映射單元大小的整數(shù)倍。在圖5A所示的實施例中,一個存儲行中所存放的數(shù)據(jù)量的大小為512byte,等于一個Y分量映射單元的大小。對于幀輸出格式的圖像數(shù)據(jù),可以直接把幀圖中的全部象素按照先水平方向從左到右、再垂直方向從上到下的順序依次連續(xù)存放到存儲器中。對場輸出格式的圖像數(shù)據(jù),先存放幀圖中的全部奇場象素,再存放幀圖中的全部偶場象素。在場輸出格式時,奇場象素與偶場象素隔行交錯排列映射到存儲器中。因此無論是幀輸出格式還是場輸出格式,對于完整的一幀圖像而言,都是按照先水平方向從左到右、再垂直方向從上到下的順序依次連續(xù)映射到存儲器的地址。在進行地址映射時,每個映射單元的象素數(shù)據(jù)都映射到同一bank的同一row中,每次一個row映射滿后,就切換bank進行下一個映射單元的地址映射。具體而言,首先映射幀圖中第一個Y分量映射單元第一個Y宏塊中的象素,然后映射第一個Y分量映射單元下面第二個Y宏塊中的象素。第一個Y宏塊中的各奇場/奇行象素數(shù)據(jù)按照先水平方向從左到右、再垂直方向從上到下的順序依次映射到存儲器地址。第一個Y宏塊中的各偶場/偶行象素數(shù)據(jù)按照從左到右、從上到下的順序依次映射到存儲器地址。奇場/奇行象素與偶場/偶行象素隔行交錯排列。第一個Y宏塊中的象素Y0,0(奇)映射到存儲器中一個存儲行Row 0的第一個地址(0,0),象素Y0,1(奇)映射到同一個存儲行Row 0的第二個地址(0,1),......以此類推。而第一個Y宏塊中的偶場/偶行象素Y0,0(偶)映射到存儲器的同一個存儲行Row 0的第17個地址(0,16),......以此類推。這個Y分量映射單元的第二個Y宏塊的象素從Row 0的第257個地址(0,256)開始映射,以從左到右、從上到下的順序依次連續(xù)映射到存儲器的同一存儲行中,同樣按照奇場/奇行象素與偶場/偶行象素隔行交錯排列的規(guī)則,直到第二個Y宏塊的最后一個偶場象素Y15,15(偶)映射在第一個存儲行Row 0的第512個地址(0,511)。由于存儲器的存儲行(row)長度為512byte,而一個Y分量映射單元也是512byte,因此映射完一個Y分量映射單元,則存儲器的一個存儲行也映射滿,這時,切換bank映射緊隨其后的Y分量映射單元。
圖4A所示的整個幀圖的Y分量,以Y分量映射單元為單位,并且按照先水平方向從左到右、再垂直方向從上到下的順序進行映射。當一個Y分量映射單元映射完成后,整個幀圖中的其它各元素繼續(xù)按照前面的方式進行映射,即每兩個垂直相鄰的宏塊為一個Y分量映射單元以先水平方向從左到右、再垂直方向從上到下的順序進行映射。
UV分量的映射方式和Y分量類似,可以參考圖4B和圖5B。UV分量也是以幀圖中2個垂直相鄰的宏塊為一個映射單元依次連續(xù)映射。UV分量映射時,將一個8*8象素的U宏塊和一個8*8象素的V宏塊以拼接形式排列在一起,形成一個16*8象素的UV宏塊,再把每2個垂直相鄰的UV宏塊作為一個UV分量映射單元。一個UV分量映射單元的大小是16*16象素,即256象素。每個UV分量映射單元的奇場/奇行象素和偶場/偶行象素分別按照先水平方向從左到右、再垂直方向從上到下的順序依次連續(xù)映射到存儲器中,并且奇場/奇行象素與偶場/偶行象素隔行交錯排列。對于圖5B中的UV分量映射單元,首先映射上面第一個UV宏塊。假設第一個UV宏塊中的奇場/奇行象素U0,0(奇)映射到存儲器中的一個存儲行Row 0的第1個地址(0,0),象素V0,0(奇)映射到存儲器中的同一存儲行Row 0的第2個地址(0,1),......象素U7,7(偶)映射到存儲器中的同一個存儲行Row0的第127個地址(0,126),而象素V7,7(偶)映射到存儲器中的同一個存儲行Row 0的第128個地址(0,127)。然后映射該映射單元的下面第二個UV宏塊。第二個UV宏塊的奇場/奇行象素U0,0(奇)映射到存儲器中的一個存儲行Row 0的第129個地址(0,128),象素V0,0(奇)映射到存儲器中的同一存儲行Row 0的第130個地址(0,129),......以此類推,第二個UV宏塊中的偶場/偶行象素U7,7(偶)映射到存儲器中的一個存儲行Row 0的第255個地址(0,254),象素V7,7(偶)映射到存儲器中的同一存儲行Row 0的第256個地址(0,255)。在圖5B所示的實施例中,存儲器一個存儲行(row)的長度為512byte,一個存儲行中可以存放2個完整的UV分量映射單元。
對于整個幀圖的UV分量信號來說,以UV分量映射單元為單位,并且按照先水平方向從左到右、再垂直方向從上到下的順序進行映射。對于256象素的UV分量映射單元,一個512byte的存儲行可以存放兩個水平相鄰的UV分量映射單元。其中每個UV分量映射單元如圖4B所示,按照先水平方向從左到右,再垂直方向從上到下的順序進行地址映射。當一個UV分量映射單元中兩個垂直相鄰的UV宏塊映射完成后,圖像中的其它各元素繼續(xù)按照前面的方式進行映射,即每兩個垂直相鄰的宏塊為一個UV分量映射單元,作為一個物理上連續(xù)的存儲周期進行映射。
按照如上所述的Y分量和UV分量的映射方式,存儲器一個存儲行大小為512byte,可以使一個Y分量映射單元中2個垂直相鄰的大小分別為16*16象素的Y宏塊,同時落在同一個Bank內(nèi)的同一存儲行(row)地址內(nèi)。一個UV宏塊大小是16*8象素,一個UV分量映射單元的大小為2個16*8象素,一個存儲行可以存放2個UV分量映射單元。這樣保證了一個Y分量映射單元內(nèi)或一個UV分量映射單元內(nèi)的兩個垂直相鄰的宏塊能夠同時落在同一個Bank內(nèi)的同一存儲行。在讀取同一個分量映射單元中的兩個垂直相鄰的宏塊數(shù)據(jù)時,只需對存儲器中同一個Bank的同一存儲行(row)進行訪問,不需要進行預轉(zhuǎn)換,因此節(jié)省了開銷。
Y宏塊和UV宏塊在存儲器的映射順序分別依據(jù)如圖6A所示的規(guī)則,并按圖6A中箭頭方向所示的順序。圖6B以箭頭形式進一步描述了本發(fā)明幀圖中的宏塊在存儲器中的映射順序。一個幀圖中的Y分量或UV分量按先水平方向從左向右、再垂直方向從上向下的順序依次映射到存儲器中,并且先連續(xù)映射在同一Bank內(nèi)的同一存儲行,例如Bank 0的第一個存儲行Row 0。當該存儲行已經(jīng)映射滿以后,再切換bank進行映射,例如從Bank0的第一個存儲行Row 0切換到Bank 1的第一存儲行Row 0,而并非繼續(xù)在同一Bank的其他存儲行進行映射。當Bank 1的第一存儲行Row 0已經(jīng)映射滿后,再返回到Bank 0,并切換到Bank 0的其他行,如Bank 0的第二存儲行Row 1。幀圖對存儲器地址映射時,以一個分量映射單元為單位,按先水平方向從左向右、再垂直方向從上向下的順序依次映射。一個映射單元內(nèi)的兩個垂直相鄰的宏塊總是在同一bank的同一存儲行內(nèi)。對于Y分量來說,由于一個Y分量映射單元包括兩個垂直相鄰的宏塊,存儲器的一個存儲行映射1個Y分量映射單元,不同的映射單元映射完成時要求先切換bank,再映射緊接其后的下一個映射單元,因此,幀圖上兩個水平相鄰的Y分量映射單元中的宏塊就總是處在不同的bank中。對于UV分量來說,一個UV分量映射單元包括2個垂直相鄰的宏塊,存儲器的一個存儲行(row)映射2個UV分量映射單元,因此,幀圖上兩個水平相鄰的UV分量映射單元中的宏塊的關系存在兩種情況一種情況下是在同一個存儲行中,另一種情況是處在不同的bank中。這樣,無論是Y分量還是UV分量,讀取任意兩個水平相鄰的映射單元中的宏塊數(shù)據(jù)時,或者只需對存儲器中不同Bank進行訪問,或者在同一Bank的同一存儲行內(nèi),都不需要進行預轉(zhuǎn)換。因此大大降低了預轉(zhuǎn)換出現(xiàn)的概率,也節(jié)約了時間并提高了對存儲器的存取效率。
對于運動補償?shù)膶戄敵?,由于是以宏塊為單位的,并且起始地址按照宏塊方式對齊,所以必定是落在存儲器的同一個Bank同一存儲行內(nèi)。對于運動補償?shù)淖x輸入,參考宏塊的起始地址是任意的。在訪問存儲器的參考宏塊時,以先水平,后垂直的方式來查尋參考宏塊。
在這種圖像地址映射方式下,可以來考查運動補償?shù)脑L問情況。圖7A-7D顯示了參考幀的參考宏塊尋址時可能出現(xiàn)的四種地址映射狀況。圖7A-7D中的背景方塊為在圖像的一個幀圖內(nèi)處于上下或左右相鄰的4個映射單元。
在圖7A中,需要讀取的參考宏塊A1完全落在幀圖的同一個宏塊內(nèi),所以A1內(nèi)部必定是落在存儲器的同一Bank的同一行地址的。參考宏塊沒有發(fā)生行不命中的情況。因此,從參考宏塊讀取起始地址后不再需要打開同一Bank的其它存儲行,也就不需要預轉(zhuǎn)換。
在圖7B中,參考宏塊完全落在幀圖的水平相鄰的不同宏塊上。這個參考宏塊可以分成兩個部分,即A2部分和B2部分。由于幀圖的同一個宏塊存放在存儲器同一Bank的同一存儲行中,具有相同的行地址,A2部分內(nèi)部具有相同的行地址,B2部分內(nèi)部也具有相同的行地址。按照前面的描述,對于Y分量來說,水平相鄰的兩個映射單元總是落在不同的bank,因此A2部分和B2部分總是落在不同的bank。對于UV分量,水平相鄰的二者之間的關系可能出現(xiàn)兩種情況,一是位于同一bank的同一存儲行中,二是分別落在不同的Bank,因此,A2部分和B2部分可能位于同一bank的同一存儲行(row)中,或者可能分別落在不同的Bank。無論A2部分與B2部分落在同一bank的同一存儲行中,還是處在不同的Bank中,A2部分到B2部分的切換都不需要預轉(zhuǎn)換。因此,在圖7B的情況下,從參考宏塊讀取起始地址后也不需要預轉(zhuǎn)換。
在圖7C中,參考宏塊完全落在幀圖的垂直相鄰的兩個不同宏塊。參考宏塊可以分成兩部分,即A3部分和B3部分。A3部分內(nèi)部具有相同的行地址,B3部分內(nèi)部也具有相同的行地址。根據(jù)前面的敘述可以知道,垂直相鄰的兩個宏塊如果是在同一映射單元中,則總是落在同一bank的同一存儲行內(nèi)。而如果不在同一映射單元,則A3部分和B3部分的地址映射關系是隨機的。如果A3和B3是同一Bank,則發(fā)生一次行不命中的情況,即需要一次預轉(zhuǎn)換。如果A3和B3是不同Bank,則也沒有發(fā)生行不命中的情況,就不需要預轉(zhuǎn)換。這也表明,本發(fā)明的地址映射方式能夠減少圖7C情況下的預轉(zhuǎn)換的概率。
在圖7D中,參考宏塊分為4個部分A4、B4、C4、D4,落在4個不同的宏塊。A4、B4、C4、D4這4個部分內(nèi)部分別在各自的分量映射單元內(nèi),各部分的內(nèi)部保證有相同的行地址。A4和B4在水平相鄰的分量映射單元內(nèi),因此可能在同一Bank的同一存儲行或者位于不同的Bank,不需要預轉(zhuǎn)換。C4和D4也在水平相鄰的分量映射單元內(nèi),因此也不需要預轉(zhuǎn)換。由于C4和D4部分與A4和B4部分有不同的行地址,在從B4到C4切換時,最多可能發(fā)生1次行不命中的情況。因此圖7D的情形最多發(fā)生1次行不命中的情況。
此外,在把存儲器中的數(shù)據(jù)傳送給顯示設備時,由于顯示輸入的存取操作在存儲器的兩個bank之間切換,當訪問其中一個bank時,可以預先對另一個bank進行預轉(zhuǎn)換,因此采用本發(fā)明的地址映射方法也能夠提高顯示輸入的帶寬效率。
本實施例只是為了進一步更清楚地描述本發(fā)明,而非對本發(fā)明的限制。應該可以理解,本發(fā)明并不限于實施例所做的闡述,任何基于本發(fā)明的修改和本發(fā)明的等同物都應涵蓋在本發(fā)明的權利要求的精神和范圍之內(nèi)。
權利要求
1.一種圖像對存儲器的地址映射方法,用以將解碼后的圖像數(shù)據(jù)映射到存儲器的相應地址,所述方法包括以下步驟(a)將一幀圖像劃分為多個矩形宏塊;(b)提供存放圖像數(shù)據(jù)的存儲器,所述存儲器具有至少兩個存儲陣列,每個存儲陣列中包含多個存儲行;(c)以一幀圖像中的整數(shù)個相鄰的宏塊作為一個映射單元;(d)以一個映射單元為單位,按照先水平方向從左到右、再垂直方向從上到下的順序?qū)D像數(shù)據(jù)依次連續(xù)映射到存儲器;(e)將至少一個映射單元的圖像數(shù)據(jù)映射到同一存儲陣列中的同一存儲行,直至該存儲行映射滿;(f)切換存儲陣列以映射緊隨其后的映射單元的圖像數(shù)據(jù),直至完成一幀圖像數(shù)據(jù)的映射。
2.如權利要求1所述的方法,其特征在于,所述步驟(e)進一步包括將一個映射單元的每個宏塊中的各個象素依次連續(xù)存放在存儲器的相同存儲陣列的相同存儲行的步驟。
3.如權利要求1或2所述的方法,其特征在于,所述步驟(c)進一步包括以一幀圖像中的整數(shù)個垂直相鄰的宏塊作為一個映射單元的步驟。
4.如權利要求3所述的方法,其特征在于,所述步驟(c)進一步包括以一幀圖像中的2個垂直相鄰的宏塊作為一個映射單元的步驟。
5.如權利要求3所述的方法,其特征在于,所述步驟(c)進一步包括以一幀圖像中的2N個垂直相鄰的宏塊作為一個映射單元的步驟,其中,N為正整數(shù)。
6.如權利要求1或2所述的方法,其特征在于,當所述圖像數(shù)據(jù)為YUV格式的圖像數(shù)據(jù)時,所述步驟(d)進一步包括先將Y分量信號進行映射,再將UV分量信號排列在一起以拼接形式進行映射的步驟。
7.如權利要求2所述的方法,其特征在于,當所述圖像數(shù)據(jù)為場輸出的圖像數(shù)據(jù),而每個映射單元的宏塊中均包含間隔排列的奇場象素和偶場象素時,所述步驟(d)進一步包括將奇場象素按從左到右、從上到下的順序依次連續(xù)映射到存儲器,將偶場象素按從左到右、從上到下的順序依次連續(xù)映射到存儲器,并將奇場象素與偶場象素隔行交錯排列的步驟。
8.如權利要求7所述的方法,其特征在于,所述步驟(d)進一步包括先對一幀圖像中的全部奇場象素進行映射,再對一幀圖像中的全部偶場象素進行映射的步驟。
9.如權利要求1或2所述的方法,其特征在于進一步包括在映射過程中,當訪問所述存儲器中存放的參考宏塊時,采用先水平方向從左到右、再垂直方向從上到下的順序?qū)λ龃鎯ζ鲗ぶ返牟襟E。
10.如權利要求1或2所述的方法,其特征在于進一步包括將映射單元的大小設置成與存儲器中存儲行的長度相適應,使所述存儲器中一個存儲行的長度是一個映射單元的大小的整數(shù)倍的步驟。
全文摘要
一種圖像對存儲器的地址映射方法,用以將解碼后的圖像數(shù)據(jù)映射到存儲器的相應地址,所述方法包括以下步驟將一幀圖像劃分為多個矩形宏塊;提供存放圖像數(shù)據(jù)的存儲器,所述存儲器具有至少兩個存儲陣列,每個存儲陣列中包含多個存儲行;以一幀圖像中的整數(shù)個相鄰的宏塊作為一個映射單元;以一個映射單元為單位,按照先水平方向從左到右、再垂直方向從上到下的順序?qū)D像數(shù)據(jù)依次連續(xù)映射到存儲器;將至少一個映射單元的圖像數(shù)據(jù)映射到同一存儲陣列中的同一存儲行,直至該存儲行映射滿;切換存儲陣列以映射緊隨其后的映射單元的圖像數(shù)據(jù),直至完成一幀圖像數(shù)據(jù)的映射。
文檔編號H04N5/92GK101031052SQ20061002420
公開日2007年9月5日 申請日期2006年2月28日 優(yōu)先權日2006年2月28日
發(fā)明者周振亞, 張亞林, 孫民梁 申請人:上海奇碼數(shù)字信息有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
濉溪县| 莲花县| 马鞍山市| 临沧市| 娄底市| 北票市| 浑源县| 渝北区| 望城县| 天水市| 扬中市| 自治县| 运城市| 呼伦贝尔市| 荔波县| 塔河县| 乌兰县| 冕宁县| 华坪县| 聂荣县| 定陶县| 盱眙县| 宣武区| 德安县| 旺苍县| 绥德县| 长子县| 新蔡县| 泊头市| 彰化县| 全椒县| 鹤山市| 怀化市| 陆川县| 玉山县| 舟曲县| 绥阳县| 丹寨县| 来凤县| 泽库县| 安图县|