專利名稱:用于進行視頻運動補償的高速緩存方法及設備的制作方法
技術領域:
本發明涉及視頻技術,且更具體而言涉及使用高速緩存技術來進行視頻運動補償。
背景技術:
將視頻功能性集成到移動電話、個人數字助理(PDA)及其他手持式裝置中已成為當前消費者電子市場中的主流。此種在這些手持式裝置中添加成像電路的當前能力可部分地歸因于具備諸如MPEG-4及H.264等先進壓縮技術。通過使用H.264或另一適當壓縮方案,可由照相機拍攝視頻剪輯并將其無線傳輸至其他裝置。
視頻通常為最高存儲帶寬源之一,尤其是在大量應用的處理裝置(例如植入移動電話、PDA及其他手持式或緊湊式裝置中的芯片組及數字信號處理器)上。此種高存儲帶寬要求對總的存儲器總線設計,尤其是對于針對視頻應用來優化存儲器提取效率的處理器-存儲器方案的配置,帶來挑戰。
視頻帶寬使用量的一實例通常出現在運動補償背景中。運動補償為視頻解碼步驟,其中自存儲器提取具有可變偏離量的像素(圖像元素)塊并使用多分支濾波器將其內插至分數偏離量。
為進行運動補償讀取而提取的塊尺寸通常較小且其寬度可能與現有系統中通常用來在處理器與存儲器之間介接數據的“2的冪”總線寬度匹配較差。通常使用的此種2的冪總線寬度接口可為25寬(32位)及26寬(64位)。根據上文所述,為提取數據塊,通常只可使用短的猝發長度,因為為提取與所述塊相關聯的新的一行像素,處理器必須跳至讀取新的地址。已知這些短的猝發長度對于現有的同步動態隨機存取存儲器(SDRAM)以及其他類型的存儲器而言效率極差。因此,對像素塊的存儲器讀取可能相當慢,且可能耗用有可能令人無法接受的存儲帶寬量來實施圖像渲染功能。
圖1顯示對與現有系統中自存儲器讀取數據塊相關聯的低效率的圖解說明。矩陣100圖解說明-由九個分別具有十二個像素的行形成的任意塊。為便于說明此實例,給定像素行中的每一像素均在存儲器中存儲成一個由水平毗鄰的元素構成的字節(8位)。換句話說,存儲器中的十二個連續字節對應于要顯示在屏幕上的十二個水平毗鄰的像素。另外,此圖解說明假定在所討論系統的硬件架構中構建25的存儲器總線寬度(即4字節),并采用基于SDRAM的存儲系統。
進一步假定所討論的解碼方案在給定情況下委托處理器來對9×9像素塊實施運動補償讀取。在圖1中,將9×9塊表示成“*”符號112。在此構建形式中,每一*符號均構成8位數據。在此實例中,“+”符號群組110也構成8位像素。不過,所述+像素位于所要讀取的9×9塊之外。九行108*符號112及+符號110共同表示存儲器中的12×9矩形像素區。
在使用32位總線時,對例示性9×9像素塊進行運動補償讀取實際上需要提取一12×9像素塊。具體而言,在此實例中,存儲器控制器實施三次分別為32位(4字節)的提取。在第一次提取期間,讀取對應于第一行中的四個像素102的字節。在第二次提取期間,讀取對應于第一行中的四個像素104的字節。在第三次提取期間,讀取對應于第一行中的四個像素106的字節。對這九行中的每一行重復這些讀取。在此實例中,以九個分別由三次提取形成的單獨猝發來實施此12×9像素塊。當宏塊等于16個塊時,圖片的每一宏塊均可需要144個分別由三次提取形成的猝發。
簡而言之,此圖解說明中的32位總線架構需要讀取由+符號110所表示的像素,盡管這些像素不是9×9塊的一部分。因此,+像素110相當于浪費存儲帶寬。當提取對奇數尺寸塊的大量運動補償讀取時,所浪費的帶寬可變得非常大,從而降低性能并造成圖像數據的解碼效率極低。
由于在各種基于處理器的系統中對具有更大存儲帶寬的要求越來越高,因此,增加存儲器總線寬度的趨勢近年來已急劇上升。令人遺憾的是,對于與MPEG及其他壓縮方案相關聯的運動補償應用而言,上文所提出的效率問題只能隨著總線寬度的提高而加劇。考慮圖2所示的實例,其采用26=64位=8字節的存儲器總線寬度。如前所述,一9×9像素塊(208,212)對應于要自存儲器提取一個塊供運動補償電路使用。因為此圖解說明中的總線構成64位接口,所以存儲器讀取需要將所述讀取實施成分別對九個分別由兩次提取202及204形成的猝發。在第一次提取202中,讀取八個字節的像素數據202。在第二次提取中,讀取另八個字節的像素數據。在9個由兩次提取形成的猝發后,16×9像素塊便已得到讀取,以便提取9×9塊(202,208)。由+符號210表示的像素相當于因提取而實際浪費掉的45%的數據。
如下事實使在提取不是2的冪的宏塊或子塊時的問題變得更加嚴重在許多系統中,外部存儲器存取慢于寄存器存取或高速緩存存儲器存取。雖然SDRAM及其他類型的存儲技術已在速度及性能上得到改進,但這些改進在傳統上還不與為進行運動補償而對奇數尺寸的塊進行存儲器提取相關聯的無謂數據讀取相稱。
另一問題涉及與外部存儲器讀取相關聯的高功率消耗。在視頻解碼技術情況下,無謂的數據讀取只能造成功率消耗效率低下。
通常,在其中使用宏塊并將其進一步劃分成子塊的大多數壓縮方案中,所要內插的構成宏塊的子塊集合往往在空間上接近,盡管按其各自的運行矢量偏離。例如,在H.264標準中,構成宏塊的4×4塊集合通常可能會接近。因此,當提取12×9像素區域時,很可能每一塊的12×9像素區域均重疊,盡管事先并不知道重疊量。實際上,使用H.264標準作為實例,要使在構成16×16宏塊的任一4×4子塊中均不存在重疊,4×4子塊將必須展布于48×36像素區域上。從統計學上來講,不可能每一宏塊的各4×4子塊均可同時且一致地以此種方式來分布。當實施運動內插時,現有系統不利用此種重疊。相反,如在此圖解說明中一樣,針對每一子塊從主存儲器進行單獨提取。
因此,在所屬領域中需要提供一種存取數據的更快且更有效的方法來用于在運動補償操作中進行視頻解碼。
發明內容
在本發明的一個方面中,提供一種使用耦接至高速緩存存儲器的運動補償電路來對圖像數據進行解碼的方法,所述高速緩存存儲器用于存儲要輸入至所述運動補償電路的像素數據,所述方法包括將構成一個或多個相對于參考塊具有可變偏離量的像素塊的所述像素數據存儲于所述高速緩存存儲器中;自所述高速緩存存儲器檢索所述像素數據;將所述像素數據輸入至所述運動補償電路中;并將所述像素數據內插至所述一個或多個像素塊的分數偏離量。
在本發明的另一方面中,提供一種用于對圖像數據進行解碼的設備,其包括控制接口;耦接至所述控制接口的高速緩存存儲器,所述高速緩存存儲器經配置以保存構成顯示器上各像素區的圖像數據;耦接至所述控制接口的存儲總線接口;耦接至所述高速緩存存儲器的運動補償內插數據路徑;及耦接至所述運動補償內插數據路徑的運動補償電路。
在本發明的再一方面中,提供一種用于對圖像數據進行解碼的設備,其包括控制接口;耦接至所述控制接口的座標-高速緩沖存儲器地址轉換電路;耦接至所述座標-高速緩沖存儲器地址轉換電路的高速緩存存儲器,所述存儲器高速緩存經配置以存儲像素數據塊;耦接至所述高速緩存存儲器的運動補償內插數據路徑;耦接至所述運動內插數據路徑并經配置以內插自所述高速緩存存儲器接收的像素數據塊的運動補償電路;耦接至所述高速緩存存儲器的高速緩沖存儲器-物理地址轉換電路;及耦接至所述高速緩沖存儲器-物理地址轉換電路的存儲器總線接口。
在本發明的再一方面中,提供一種集成于移動裝置中以對圖像數據進行解碼的設備,其包括用于接收像素數據座標的控制接口裝置;用于將座標數據轉換成高速緩沖存儲器地址的座標地址轉換裝置;用于將高速緩沖存儲器地址轉換成物理地址的物理地址轉換裝置;用于存儲像素數據區的高速緩存存儲器;用于向主存儲器發出讀取命令的存儲器總線接口;及耦接至所述高速緩存存儲器以接收像素數據區并在所述區內內插像素塊的運動補償裝置。
在本發明的再一方面中,提供一種計算機可讀媒體,其包含指令程序,所述指令程序可由計算機程序執行以實施一種使用耦接至高速緩存存儲器的運動補償電路來對圖像數據進行解碼的方法,所述高速緩存存儲器用于存儲要輸入至所述運動補償電路的像素數據,所述方法包括將包括一個或多個相對于參考塊具有可變偏離量的像素塊的所述像素數據存儲于所述高速緩存存儲器中;自所述高速緩存存儲器檢索所述像素數據;將所述像素數據輸入至所述運動補償電路中;并將所述像素數據內插至所述一個或多個像素塊的分數偏離量。
應了解,根據下文詳細說明,所屬領域的技術人員將易知本發明的其他實施例,在下文說明中僅以例示方式顯示及闡述本發明的幾個實施例。應認識到,本發明可具有其它及不同的實施例,且可在各個其他方面對其若干細節加以修改,所有這些均不背離本發明的精神及范圍。因此,這些圖式及詳細說明均應視為例示性而非限制性的。
附圖中以舉例方式而非限制方式圖解說明本發明的各個方面,在圖式中 圖1為一作為運動補償算法的一部分提取一組像素的圖示。
圖2為另一作為運動補償算法的一部分提取一組像素的圖示。
圖3為一在H.264標準中所用的各種宏塊分區的圖解說明。
圖4為一在H.264標準中所用的各種宏塊子分區的圖解說明。
圖5A-5C代表在H.264標準中所用的子像素內插的圖解說明。
圖6為一根據本發明一實施例的處理系統的方塊圖。
圖7為一顯示一種根據本發明一實施例用于將高速緩沖存儲器耦接至運動補償電路的方法的流程圖。
圖8為一種根據本發明一實施例使用高速緩沖存儲設備的實例性解碼方法的內部組件的方塊圖。
圖9顯示一根據H.264標準的導則描述最壞情況子塊分布的像素區。
具體實施例方式 下文結合附圖所述的詳細說明旨在作為對本發明各種實施例的說明而非旨在表示可實踐本發明的僅有實施例。本揭示內容中所述的每一實施例僅供用作本發明的實例或例示,而未必應視為好于或優于其它實施例。為實現對本發明的透徹理解,本詳細說明包括具體細節。然而,所屬領域的技術人員易知,無需這些具體細節也可實施本發明。在某些情形中,以方塊圖形式顯示眾所周知的結構及裝置,以免淡化本發明的概念。使用縮略語及其它描述性術語可能只是為了方便及清晰起見,而并非旨在限制本發明的范圍。
H.264是一種由ISO/IEC MPEG(活動圖像專家組)及ITU-T VCEG的聯合視頻小組(JVT)所制訂的ISO/IEC壓縮標準。H.264是一種新的視頻壓縮標準,其提供用于在多媒體環境下有效地存儲、傳輸及操縱視頻數據的核心技術。H.264是涉及全世界數百名研究人員及工程師的國際性努力的結果。H.264的焦點是制訂一種標準,其除實現其他結果外,還尤其實現對視頻編碼的具有高度可縮放性及靈活性的算法及位流配置、無線信道上的高錯誤彈性及恢復性、及高度的網絡獨立可存取性。例如,對于基于H.264的編碼,可在一些使用小于32千位/秒數據速率的應用中實現較佳的圖片質量。
MPEG-4及H.264建立于其前代技術(MPEG-1及MPEG-2)的成功之上,且提供一組用來執行諸如數字電視、交互式圖形應用及交互式多媒體等等技術的標準化元件。由于其具有強健性、高質量及低比特率,因而MPEG-4已構建于無線電話、PDA、數字照相機、因特網網頁及其他應用中。用于MPEG-4視頻標準的各種各樣的工具能夠實現對自然視頻、靜止圖像及合成圖形目標的編碼、解碼及呈現。無疑,能提供甚至更大靈活性及更強健的成像的未來壓縮方案的實施方案即將出現。
MPEG-4及H.264包括運動估測算法。運動估測算法使用內插濾波器來計算連續幀之間的運動并使用根據先前所傳輸的幀計算出的運動信息來預測構成當前幀的信息。在MPEG編碼方案中,將一幀的像素塊關聯至前一幀的區域,并只對塊與其關聯區域之間的差別進行編碼及存儲。塊與和其最緊密匹配的區域之間的轉換矢量稱作運動矢量。
H.264標準(亦稱作MPEG-4第10部分“先進視頻編碼”標準)包括支持一子塊尺寸范圍(小至4×4)。這些子塊可包括一分區范圍,包括4×4、8×4、4×8及8×8。通常,每一分區或子分區需要單獨的運動矢量。對在既定應用中所要使用的分區尺寸的選擇可有所不同。通常,較大的分區尺寸可適用于圖片的均勻區域,而較小的分區尺寸可更適用于詳細區域。
H.264標準(MPEG第10部分,“先進視頻編碼”)支持范圍從16×16到4×4亮度樣本的運動補償塊尺寸,在這兩個尺寸之間有諸多選項。如圖3中所示,可按四種方式來分離每一宏塊(16×16樣本)的亮度分量16×16(宏塊300)、16×8(宏塊302)、8×16(宏塊304)、或8×8(宏塊306)。當選擇8×8模式(宏塊306)時,可如圖4中所示以另外四種方式來分離所述宏塊內的分區。此處,子塊或子分區可包括一8×8子塊400、兩個8×4子塊402、兩個4×8子塊404、或四個4×4子塊406。
在H.264中要求每一宏塊或子塊具有單獨的運動矢量。傳輸至解碼裝置的壓縮位流通常包括每一子塊的經編碼運動矢量及分區選擇。選擇較大的子塊(例如16×16、16×8、8×16)通常需要使用較少的位數來用信號通知對一個或多個運動矢量及子塊類型的選擇。不過,在這種情況下,經運動補償的殘余量可在具有高度的細節的幀區域中包含大量能量。相反,選擇較小的子塊尺寸(例如8×4、4×4、等等)通常需要使用較多的位數來用信號通知所述一個或多個運動矢量及對一個或多個子塊的選擇,但可在運動補償后提供較低的能量殘余量。因此,子塊或分區尺寸的選擇可對壓縮性能具有顯著影響。如上所述,較大的子塊尺寸可適用于幀的均勻區域,而較小的分區尺寸可有利于更詳細的區域。
子像素運動矢量 在H.264標準中,通常根據參考圖像中相同尺寸的對應區域來預測經互編碼的宏塊中的每一子塊。對于亮度分量而言,界定子塊與參考子塊之間的間隔的運動矢量包含1/4像素分辨率。由于參考圖像中不存在位于子像素位置處的樣本,因此必須使用來自毗鄰圖像樣本的內插來產生這些樣本。子像素內插的一實例顯示于圖5中。圖5A顯示參考圖像中的一實例性4×4像素子塊500。圖5A中的子塊500要根據參考圖片的毗鄰區域來進行預測。如果運動矢量的水平及垂直分量為例如圖5B的圖解說明中所示的整數(1,-1),則參考塊中的可適用樣本502實際上存在。但是,如果其中一個或兩個矢量分量均為分數(非整數)值(0.75,-0.5),則通過在參考幀中的毗鄰像素樣本之間進行內插來產生形成子塊503的預測樣本。
子像素運動補償可以復雜度增加為代價來提供相對于整數像素補償顯著提高的壓縮性能。像素精度越細,圖片就越好。例如,四分之一像素精度的性能高于二分之一的像素精度。
在亮度分量中,可首先產生二分之一像素位置處的子像素樣本并可在一種配置中使用6分支有限脈沖響應濾波器從鄰近的整數像素樣本對其進行內插。在此配置中,每一個二分之一像素樣本代表六個相鄰整數樣本的加權和。一旦可得到所有二分之一樣本,便可在相鄰的二分之一或整數像素樣本之間使用雙線性內插來形成每一個四分之一像素樣本。
運行矢量預測 對每一個分區的運動矢量進行編碼可占用大量的位,尤其在選擇小子塊尺寸時。相鄰子塊的運動矢量可能高度相關且因此可根據附近的先前經編碼的子塊的矢量來預測每一運動矢量。可根據先前所計算出的運動矢量來形成預測矢量MVP。對MVD-當前矢量與預測矢量之間的差-進行編碼及傳輸。用于形成預測矢量MVP的方法取決于運動補償子塊尺寸且取決于附近矢量的可用性。一些實施方案中的基本預測值是位于當前塊或子塊正上方、沿對角的上方右側、及正左側的宏塊子塊的運動矢量的中值。如果(a)選擇16×8或8×16子塊及/或(b)如果相鄰分區中有些分區不可用作預測值,則可修改所述預測值。如果跳過(即未傳輸)當前宏塊,則可仿佛以16×16分區模式對所述宏塊進行編碼一樣產生預測矢量。
在解碼器處,可以同樣的方式來形成預測運動矢量MVP并將其加至經解碼矢量差MVD。在宏塊被跳過的情況下,不存在經解碼矢量且因此可根據MVP的大小來形成經運動補償的宏塊。
根據本發明的一個方面,為了顯著提高存儲性能,將運動補償電路耦接至適當尺寸的高速緩存存儲器。本文中所使用的技術可使運動補償帶寬減少多達70%或更多,此視實施方式而定。另外,最佳情況塊尺寸與最壞情況塊尺寸之間的帶寬分布可減少80%更多。在一個實施例中,所有非對齊的帶零頭長度提取均變成2的冪字對齊的高速緩沖存儲器線負載,從而提高存儲器存取效率。
相對于簡單的雙線性濾波更多地使用長內插濾波器(例如在H.264中)、用于進行運動補償的小塊尺寸(例如H.264的4×4子塊)的存在及經字定向的存儲器接口使得在為渲染宏塊所需的各子塊提取之間存在明顯的空間重疊。在本發明的一個方面中,將小的高速緩沖存儲器耦接至運動內插硬件。可將高速緩沖存儲器線組織成保存圖片的一維或二維區域。在大多數配置中,將高速緩沖存儲器本身組織成保存二維像素區域。可使用本發明的原理來利用重疊塊之間的空間局部性,以使許多讀取能夠來自極快的高速緩沖存儲器而不是來自慢得多的外部存儲器。
通過如下文所述對高速緩沖存儲器進行正確配置,所獲得的每像素命中率可能極高(在某些情形中,大于95%)。當命中率較高時,與高速緩沖存儲器填充相關聯的存儲器帶寬降低。因此,減少存儲器帶寬的目標得以實現。在使用本發明的原理來對實際高運動視頻測試剪輯進行模擬期間,已顯示帶寬減少了多達70%。
因此,對于達到高命中率的經正確配置的高速緩沖存儲器而言,可直接自高速緩沖存儲器讀取大多數子塊。在此典型情況下,在每一宏塊基礎上對高速緩沖存儲器進行讀取的平均讀取帶寬等同于宏塊本身中的像素數量。此配置可將讀取帶寬對用于將宏塊分解為子塊的方法的靈敏度解耦。可實現減小最壞情況模式(例如,全部4×4子塊)與最佳情況模式(例如,單個16×16宏塊)之間的帶寬分布的所述優點。模擬已顯示,可對實際視頻測試剪輯實現大于80%的帶寬分布減小量。因此,設計者可規定一個對在所述壓縮標準中所用的所有塊尺寸均適用的存儲器帶寬約束條件。
如下文將更詳細闡述,高速緩沖存儲器本身可包含具有字對齊及為2的冪猝發長度的高速緩沖存儲器線。因此,所述高速緩沖存儲器線可與長的猝發讀取對齊,此不同于當不使用高速緩沖存儲器時許多系統所需的不對齊、帶零頭長度的短猝發。這些高速緩沖存儲器填充有效地利用DRAM。
圖6為一根據本發明一實施例的實例性處理系統600的方塊圖。處理系統600可構成實際上任何類型的實施視頻重放并使用運動預測補償的處理裝置。處理系統600的一個例示可為在例如先進移動電話、PDA或類似裝置等除其他目的外還用來處理視頻應用程序的手持式裝置中的芯片組或印刷電路卡。各種組件的具體配置可在位置及數量方面有所不同,而此并不背離本發明的范圍,且圖6所示的實施方案是設計成為例示性質的。處理器602可包括數字信號處理器(DSP),以用于解釋各種命令并運行專用代碼來實施諸如接收及傳輸移動通信或處理聲音等功能。在其他實施例中,可采用多于一個DSP,也可使用通用處理器或其他類型的CPU。在此實施例中,處理器602耦接至存儲器總線接口608,以使處理器602能夠對處理系統600的主存儲器RAM 610實施讀取及寫入。另外,根據一個實施例的處理器602耦接至運動補償電路604,運動補償電路604可包括一個或多個用于實施運動預測的多分支濾波器。另外,專用高速緩沖存儲器606耦接至運動補償硬件604,以使必要的像素數據能夠根據本文中所述的原理超快地傳輸至運動補償單元604。應注意,為了清楚且易于圖解說明起見,圖式中省略了可存在于某些實施方案中的硬件塊,例如緩沖器、FIFO及通用高速緩沖存儲器。
在一個涉及具有視頻功能的處理系統(例如移動單元)及32位存儲器接口的實例中,采用基于H.264或類似MPEG標準的運動預測。在此實施例中,對每一所內插的4×4子塊,均實際提取由12×9個像素構成的像素區域。但是,12×9像素區域通常不包括所浪費的像素。本發明的此方面利用如下事實共同構成宏塊的4×4子塊集合有可能在空間上相接近,雖然按子塊各自的運動矢量存在偏移。因此,每一塊的12×9像素區域很可能重疊。事先并不知道實際重疊量。不過,為使在構成16×16宏塊的4×4子塊中的任何一者中均不存在重疊,將必須使各4×4塊展布于48×36像素區域上。從統計學上來講,每一宏塊的4×4子塊不可能同時且一致地以此種極端方式來分布。(這些原理將在下文中加以更詳細闡述)。另外,視頻編碼器將可能從不以此方式來分布各個塊,因為在許多實施例中,以差動方式對為對所有不同運動矢量進行編碼所須使用的位數進行編碼。因此,當子塊均不相同時,將須花費大量數據來對運動矢量進行編碼。
根據本發明的此方面,使用高速緩存機構來利用這些重疊區域,從而消除自外部存儲器進行的冗余提取及不必要的讀取。雖然是以H.264標準為背景提供,但本發明同等地可適用于任何實施運動補償預測的裝置。本文中使用H.264標準的例示是因為人們正在考慮將H.264用于廣播電視、下一代DVD、移動應用及本發明的概念可適用于其每一應用的其他實施方案。
在一個實施例中,將存儲器高速緩存耦接至視頻運動補償硬件塊,所述視頻運動補償硬件塊可包括一個或多個用于實施子像素內插的多分支濾波器。此實施例中的系統可包括控制接口、座標-高速緩沖存儲器地址轉換器、高速緩沖存儲器-物理地址轉換器、高速緩存存儲器、存儲器總線接口、存儲器接收緩沖器(例如FIFO緩沖器)、及通往運動預測電路的運動補償內插數據路徑。
圖7為一顯示一種根據本發明一實施例用于將高速緩沖存儲器耦接至運動補償電路的方法的流程圖。所述流程圖描述提取與屏幕上的像素相關聯的座標以實現運動預測的過程。在步驟702處,控制接口接收座標。控制接口可包括各種用于接收、緩沖、及/或將數據自一個區域傳送至另一個區域的電路或硬件。具體而言,控制接口可接收幀緩沖索引(即相對于在幀緩沖存儲器中的位置來描述座標位置的信息)、運動矢量MVP、宏塊X及Y地址、子塊X及Y地址、及塊尺寸。為方便起見,將此參數集合稱作在二維空間中的“座標”地址。根據所使用的具體壓縮方案或編解碼器而定,座標地址可有所不同,或者可包括不同的或其他的參數。
然后,座標-高速緩沖存儲器地址轉換器可將控制接口信息變換成適當的標記地址及高速緩沖存儲器線號碼(步驟704)。在此步驟中可使用所屬領域中已知的多種地址映射方法。在一個實施例中,使用一種如下映射其將座標地址變換成X及Y座標,并將幀緩沖索引與X及Y座標子字段進行級聯,以形成標記地址及高速緩沖存儲器線號碼。
隨即,可將標記地址發送至一個或多個與存儲器高速緩存相關聯的標記RAM,如步驟706中所示。當標記地址表示在任一標記存儲器中的的命中(決策分支708)時,自數據RAM讀取來自高速緩沖存儲器線的數據(步驟720)。然后,可經由適當的數據內插接口來將像素數據傳送至運動補償電路(步驟722)。
當標記地址而是導致高速緩沖存儲器未命中(決策分支708)時,可在存儲器總線接口上發出標準讀取請求。在一個實施例中,設定一表示高速緩沖存儲器未命中指示符的旗標(步驟710)。然后,高速緩沖存儲器-物理地址轉換器將高速緩沖存儲器地址變換成與主存儲器相關聯的物理地址(步驟712)。然后,由存儲器控制器發出自主存儲器進行讀取的讀取請求,如步驟714中所示。檢索可適用的像素數據,并將其傳送至運動補償電路(步驟716)。另外,在高速緩沖存儲器未命中的情況下,可通過在下文中所進一步闡述的方式以自RAM所檢索的數據來更新高速緩沖存儲器(步驟723)。
圖8為一根據本發明一實施例使用高速緩沖存儲設備的實例性解碼方法的內部組件的方塊圖。雖然圖8假定使用直接映射式高速緩沖存儲器,但在其他實施例中使用包括成組相聯高速緩沖存儲器在內的其他高速緩沖存儲器配置似乎同樣可取。可將控制接口電路802耦接至高速緩沖存儲器地址變換邏輯804,以將自存儲器提取的座標變換成高速緩沖存儲器地址。高速緩沖存儲器變換邏輯804又可耦接至高速緩沖存儲器的標記RAM 806以存儲標記地址。標記RAM 806包含表示數據RAM 812中的可用地址的數據。在此實施例中,將標記RAM 806耦接至例如傳統FIFO緩沖器的可選緩沖器808。在一種配置中,使用緩沖器808來隱藏等待時間,以使多個高速緩沖存儲器未命中可對于系統RAM而言待決。數據RAM 812存儲像素數據。還存在物理地址變換邏輯810,以用于將標記地址及高速緩沖存儲器線號碼變換成主存儲器中的物理地址以便進行主存儲器讀取。將物理地址傳送至存儲器總線接口814,接口814在高速緩沖存儲器未命中的情況下實施對主存儲器816的讀取。另外,可使用因高速緩沖存儲器未命中而自系統RAM讀取的數據來更新高速緩沖存儲器線。在某些配置中,為了給新的條目騰出空間,高速緩沖存儲器可能不得不“逐出”現有條目。用于選擇要逐出的條目的具體直觀推斷法稱作“替換政策”。此步驟大體顯示成圖7中的步驟723,且為了清楚起見在圖8中省略了該步驟。也可具有多種替換政策。其實例包括先進先出(FIFO)或最近最少使用(LRU)。
最后,將來自與高速緩沖存儲器相關聯的數據RAM 812的數據或來自系統RAM816的數據經由經運動補償的內插數據路徑818傳送至運動預測電路820。在高速緩沖存儲器未命中的情形中,可具有至少兩種讀取政策。在一種配置中,將未命中的讀取數據傳輸至高速緩沖存儲器,并立即將所需的像素轉發至運動補償數據路徑818。在另一配置中,將未命中的讀取數據傳輸至高速緩沖存儲器并寫入至高速緩沖存儲器的數據RAM 812中。然后,從數據RAM 812中讀出像素數據并將其傳送至運動補償數據路徑,在此處將隨機偏離的子像素值變換成分數值。
如本文中所述將存儲器高速緩存耦接至視頻運動補償硬件塊會使硬件塊能夠快速地檢索其為對子塊位移進行正確內插并對運動進行正確表示所需的子塊。在一個實施例中,使用YCbCr來代替RGB像素。在再一實施例中,運動補償硬件包括分支數量大于在現有視頻應用中所用傳統雙線性濾波器分支數量的濾波器。使用的分支越多,在所檢索的子塊之間將存在明顯空間重疊的可能性就越大。
在一個實施例中,對高速緩沖存儲器的數據存儲器進行優化,以免提取不需要的數據。具體而言,對高速緩存存儲器的尺寸進行確定,以保存整數個圖像宏塊。數據存儲器可包含N/L根高速緩沖存儲器線,其中N表示高速緩沖存儲器中的字節數且L表示單根高速緩沖存儲器線中的字節數。作為例示,高速緩沖存儲器可包括一64×32像素窗口,其中N=2千字節且L=32字節。在大多數實施例中,將L選擇為存儲器總線接口猝發長度的倍數。高速緩沖存儲器線可包含二維像素區域。數據存儲器可自數據存儲器地址產生器接收地址。數據存儲器的輸出可隨即傳輸至內插電路。典型的尺寸可因應用而異,但在一些實施例中可為由32字節高速緩沖存儲器線構成的總共1KB或2KB。高速緩沖存儲器線可保存一維或二維區域,例如8×4或32×1,等等。
內插電路可包含臥式及立式濾波邏輯。在上文所述的一個實施例中,所使用的濾波器具有多于兩個濾波器分支。內插電路的輸出表示經運動補償的預測值。一個實例性濾波器為當前在H.264標準中執行的六分支濾波器。在使用多于兩個濾波器分支(即,實施多于雙線性的濾波)的這些配置中,考慮到重新使用具有明顯空間重疊的子塊及耦接至內插電路的適當尺寸的高速緩沖存儲器,本發明可表現出最大的存儲器帶寬節省。
因內插濾波器長度所致的子塊之間的重疊 此處,我們將以H.264標準為背景來論證經運動補償的內插。如上所述,其他基于運動補償的標準同等地適用且本發明的原理可同等地適用于這些其他標準。使用H.264的六分支濾波器對4×4塊進行的經運動補償的內插需要提取一9×9塊。構成宏塊的16個9×9塊可重疊,此視其各自的運動矢量的大小及方向而定。其他對象形狀(例如,8×8、8×4、等等)也同樣如此。在最壞的情況下,如果4×4/8×4/4×8/8×8子塊運動矢量相對于最佳16×16運動矢量偏移+/-M個像素,則所有子塊所跨越的區域可覆蓋至多(16+5+2M)2個像素。
圖9顯示一根據實例性H.264標準的準則描述最壞情況子塊分布的像素區。陰影區中的十六個正方形906圖解說明構成宏塊的16個4×4塊在位移前的位置。這十六個正方形902圖解說明以不存在重疊的方式偏移的4×4塊,從而使這些4×4塊盡可能地展開以使在對每一塊的存儲器提取中均不存在重疊。剩余的周圍區域904表示對應于為正確應用內插濾波器來對此宏塊進行解碼所必須提取的額外像素的區域。當M=4時,此總像素區域尺寸為29×29像素。
如果獨立地提取每一子塊,則針對每一宏塊所提取的像素總數(本文中稱作P)為固定的,且與M無關。實例性值歸納于下表中 因此,在給定其中M=4的先前實例的情況下,如果解碼器分別提取各4×4塊,則必須讀取總共1296個像素,即使宏塊只覆蓋一由29×29=841個像素構成的區域。在此種情況下,解碼器將須讀取比所需像素多大約50%的像素,從而造成對寶貴存儲器帶寬的浪費。
求解其中(16+5+2M)2<P的條件使設計者能夠確定在什么條件下必定出現子塊重疊、及實際存在多大的此種重疊。求解此二次方程,可以證明,在下列條件下必定出現重疊 使在其以內必定存在重疊的最大運動矢量值歸納于下表中 例如,在4×4模式中,即使4×4子塊各自的運動矢量相差+/-M個像素以內的任何量,各提取也必定重疊。如果不利用重疊,則所將提取的冗余像素的分數為 1-(((16+5+2M)2)/P) 因存儲器總線帶寬所致的子塊之間的重疊 接下來,考慮一其中主存儲器總線實際為8字節(32位DDR)的實例。如果使用線性幀緩沖格式,則在一個實施例中所提取的像素的所有水平跨度為8像素寬的倍數。通常,通至存儲器的數據路徑越寬,提取小像素塊的效率就變得越低(即,每一提取所浪費的像素越多)。在所有子塊運動矢量均相對于最佳16×16運動矢量偏移+/-M個像素的最壞情況下,各子塊所跨越的總面積增大至(16+5+2M)×(28+2M)。如果在此情形中獨立地提取每一子塊,則針對每一宏塊所提取的像素總數(稱作P)如下所示增加。
求解其中(16+5+2M)×(28+2M)<P的條件使設計者能夠確定在什么條件下必定出現子塊重疊、及存在多大重疊。可以證明,每當為下列條件時必定出現重疊 使在其以內必定存在重疊的最大運動矢量的值歸納于下表中。
應注意,在此實施例中,因存儲器接口變寬,故在各提取之間有可能存在更大重疊。此外,如果不利用所述重疊,則所將提取的冗余像素的分數簡單地為1-((16+5+2M)×(28+2M)/P)。
空間上毗鄰的宏塊之間的重疊 如上所述,在給定使用實例性H.264標準的配置中的濾波器內插長度且給定寬存儲器總線接口的例示的情況下,針對每一個宏塊所提取的像素區為(16+5+2M)×(28+2M)。M從零一直到八的變化表示從28×21變化到44×37的矩形像素窗口。
在根據一種配置的VGA尺寸的圖片中,1200個16×16宏塊覆蓋一由640×480=307,200個像素構成的區域。如果每一宏塊均需要最小尺寸的提取為28×21個像素,則針對每一圖片提取總共1200×28×21=705,600個像素。由于所述圖片只包含307,200個唯一的像素,因此不可能使各宏塊提取都不重疊。實際上,可確定出所提取的像素中有一半多一點為冗余的且將被提取兩次(每一幀有705,600-307,200=398,400次冗余像素提取)。
利用重疊 因此,在各子塊的運動矢量之間的某一最大差值以內,對宏塊內各子塊的提取可重疊。另外,在此配置中,在對空間上毗鄰的宏塊的提取之間必定存在重疊。此種重疊主要歸因于(1)內插濾波器的使用、(2)許多系統的更寬的存儲器總線寬度特征、及(3)與相鄰宏塊的重疊。
因此,高速緩沖存儲器是一種適用于每當使用一種如下標準時與運動內插邏輯結合使用的機構所述標準使存儲器中存在局部性,即使并不確切地知道所述局部性存在于何處(即,在對運動矢量進行解碼之前,無法確定所述提取相對于可能已實施的任何先前提取處于何處)。不過,可合理地假定,對于利用因子塊重疊所引起的重疊的系統而言,恰當的高速緩沖存儲器尺寸大約等于宏塊的預期空間范圍的尺寸-例如(舉例而言)(16+5+2M)×(28+2M)個亮度像素。使M從零變化至最大值八意味著恰當的高速緩沖存儲器尺寸可介于512字節到2千字節范圍內。
提供上文對所揭示實施例的說明旨在使所屬領域的技術人員能夠制作或使用本發明。所屬領域的技術人員將易知對這些實施例的各種修改,且本文所界定的一般原理也可適用于其它實施例,此并不背離本發明的精神及范圍。因此,并非旨在將本發明限定為本文所示實施例,而是欲賦予其與本文所揭示原理及新穎特征相一致的最寬廣的范圍。
權利要求
1.一種使用耦接至高速緩存存儲器的運動補償電路來對圖像數據進行解碼的方法,所述高速緩存存儲器用于存儲要輸入至所述運動補償電路的像素數據,所述方法包括
將包括一個或多個相對于參考塊具有可變偏離量的像素塊的所述像素數據存儲于所述高速緩存存儲器中;
自所述高速緩存存儲器檢索所述像素數據;
將所述像素數據輸入至所述運動補償電路中;及
將所述像素數據內插至所述一個或多個像素塊的分數偏離量。
2.如權利要求1所述的方法,其中使用YCbCr像素格式。
3.如權利要求1所述的方法,其中所述運動補償電路包括多分支內插濾波器。
4.如權利要求3所述的方法,其中所述多分支內插濾波器包括三個或更多個分支。
5.如權利要求3所述的方法,其中所述多分支內插濾波器包括四個分支。
6.如權利要求3所述的方法,其中所述多分支內插濾波器包括六個分支。
7.如權利要求3所述的方法,其中所述多分支內插濾波器包括水平及垂直濾波邏輯。
8.如權利要求1所述的方法,其進一步包括耦接至所述高速緩存存儲器的存儲器總線,其中所述高速緩存存儲器進一步包括多個分別為L個字節的高速緩沖存儲器線,其中L包括所述存儲器總線寬度的整數倍。
9.如權利要求1所述的方法,其中所述高速緩存存儲器經配置以存儲所述一個或多個像素塊的整數個。
10.如權利要求1所述的方法,其中所述一個或多個塊包括圖像宏塊。
11.如權利要求1所述的方法,其中所述高速緩存存儲器包括多根高速緩沖存儲器線,每一高速緩沖存儲器線均包括一維像素數據區域。
12.如權利要求1所述的方法,其中所述高速緩存存儲器包括多根高速緩沖存儲器線,每一高速緩沖存儲器線均包括二維像素數據區域。
13.如權利要求1所述的方法,其中將所述高速緩存存儲器及所述運動補償單元集成到移動裝置中。
14.如權利要求13所述的方法,其中所述移動裝置包括移動手持機。
15.一種用于對圖像數據進行解碼的設備,其包括
控制接口;
耦接至所述控制接口的高速緩存存儲器,所述高速緩存存儲器經配置以保存包括顯示器上的像素區的圖像數據;
耦接至所述控制接口的存儲器總線接口;
耦接至所述高速緩存存儲器的運動補償內插數據路徑;及
耦接至所述運動補償內插數據路徑的運動補償電路。
16.如權利要求15所述的設備,其中所述高速緩存存儲器經配置以保存整數個圖像宏塊。
17.如權利要求15所述的設備,其中所述高速緩存存儲器包括N/L根高速緩沖存儲器線,其中N包括所述高速緩沖存儲器中的字節數量,L包括高速緩沖存儲器線中的字節數量,且L包括所述存儲器總線接口寬度的倍數。
18.如權利要求15所述的設備,其中使用YCbCr像素格式。
19.如權利要求15所述的設備,其中所述運動補償電路包括多分支內插濾波器。
20.如權利要求19所述的設備,其中所述多分支內插濾波器包括三個或更多個分支。
21.如權利要求19所述的設備,其中所述多分支內插濾波器包括四個分支。
22.如權利要求19所述的設備,其中所述多分支內插濾波器包括六個分支。
23.如權利要求19所述的設備,其中所述多分支內插濾波器包括水平及垂直濾波邏輯。
24.如權利要求15所述的設備,其進一步包括耦接至所述控制接口的座標-高速緩沖存儲器轉換邏輯。
25.如權利要求24所述的設備,其進一步包括耦接至所述存儲器接口的高速緩沖存儲器-物理地址轉換邏輯。
26.如權利要求25所述的設備,其進一步包括耦接至所述存儲器總線接口并耦接至所述運動補償內插數據路徑的緩沖器。
27.一種用于對圖像數據進行解碼的設備,其包括
控制接口;
座標-高速緩沖存儲器地址轉換電路,其耦接至所述控制接口;
高速緩存存儲器,其耦接至所述座標-高速緩沖存儲器地址轉換電路,所述高速緩存存儲器經配置以存儲像素數據塊;
運動補償內插數據路徑,其耦接至所述高速緩存存儲器;
運動補償電路,其耦接至所述運動內插數據路徑并經配置以內插自所述高速緩存存儲器接收的所述像素數據塊;
高速緩沖存儲器-物理地址轉換電路,其耦接至所述高速緩存存儲器;及
存儲器總線接口,其耦接至所述高速緩沖存儲器-物理地址轉換電路。
28.如權利要求27所述的設備,其中所述高速緩存存儲器經配置以存儲整數個圖像宏塊。
29.如權利要求27所述的設備,其中所述高速緩存存儲器包括N/L根高速緩沖存儲器線,其中N包括所述高速緩沖存儲器中的字節數,L包括高速緩沖存儲器線中的字節數,且L包括所述存儲器總線接口寬度的倍數。
30.如權利要求27所述的設備,其中使用YCbCr像素格式。
31.如權利要求27所述的設備,其中所述運動補償電路包括多分支內插濾波器。
32.如權利要求31所述的設備,其中所述多分支內插濾波器包括三個或更多個分支。
33.如權利要求31所述的設備,其中所述多分支內插濾波器包括四個分支。
34.如權利要求31所述的設備,其中所述多分支內插濾波器包括六個分支。
35.如權利要求31所述的設備,其中所述多分支內插濾波器包括水平及垂直濾波邏輯。
36.如權利要求27所述的設備,其中所述座標-高速緩沖存儲器轉換電路中的每一座標均包括幀緩沖器索引、運動矢量、宏塊地址、及塊尺寸。
37.如權利要求27所述的設備,其中所述運動補償電路經配置以按由H.264標準所規定的格式來內插像素區。
38.如權利要求27所述的設備,其中所述運動補償電路經配置以按由MPEG標準所規定的格式來內插像素區。
39.一種集成于移動裝置中以對圖像數據進行解碼的設備,其包括
控制接口裝置,其用于接收像素數據座標;
座標地址轉換裝置,其用于將座標數據轉換成高速緩沖存儲器地址;
物理地址轉換裝置,其用于將高速緩沖存儲器地址轉換成物理地址;
高速緩存存儲器,其用于存儲像素數據區;
存儲器總線接口,其用于向主存儲器發出讀取命令;及
運動補償裝置,其耦接至所述高速緩存存儲器以接收像素數據區并在所述區內內插像素塊。
40.如權利要求39所述的設備,其中所述運動補償裝置進一步經配置以內插對應于H.264標準的像素塊。
41.如權利要求39所述的設備,其中所述運動補償裝置包括多分支內插濾波器。
42.如權利要求41所述的設備,其中所述運動補償裝置包括四分支內插濾波器。
43.如權利要求41所述的設備,其中所述多分支內插濾波器包括四個分支。
44.如權利要求39所述的設備,其中所述像素數據座標分別包括幀緩沖器索引、運動矢量、宏塊地址、及塊尺寸。
45.一種包含指令程序的計算機可讀媒體,所述指令程序可由計算機程序執行以實施一種使用耦接至高速緩存存儲器的運動補償電路來對圖像數據進行解碼的方法,所述高速緩存存儲器用于存儲要輸入至所述運動補償電路的像素數據,所述方法包括將構成一個或多個相對于參考塊具有可變偏離量的像素塊的所述像素數據存儲于所述高速緩存存儲器中;自所述高速緩存存儲器檢索所述像素數據;將所述像素數據輸入至所述運動補償電路中;并將所述像素數據內插至所述一個或多個像素塊的分數偏離量。
46.如權利要求45所述的計算機可讀媒體,其中所述指令程序經配置以根據H.264標準來對圖像數據進行解碼。
全文摘要
本發明提供一種使用耦接至運動補償電路的高速緩存存儲器來進行運動補償的方法及設備。所述運動補償方法在運動估測算法中利用如下事實在構成一宏塊的多個塊之間通常存在明顯的空間重疊。因此,可將像素區存儲于高速緩存存儲器中并可重復地存取所述高速緩存存儲器,以對在空間上毗鄰的數據塊實施內插技術而無需存取主存儲器—后者效率極低且浪費存儲器帶寬。
文檔編號H04N7/36GK101116341SQ200580037541
公開日2008年1月30日 申請日期2005年9月8日 優先權日2004年9月9日
發明者斯蒂芬·莫洛伊 申請人:高通股份有限公司