新四季網

以降低功率消耗對數據值陣列執行二維變換的方法及系統的製作方法

2023-05-23 19:22:36

專利名稱:以降低功率消耗對數據值陣列執行二維變換的方法及系統的製作方法
技術領域:
本發明涉及用於對二維(2D)數據值陣列執行2D變換(例如離散餘弦反變換或 哈達瑪〈HadamarcI〉反變換)的方法及系統。在典型實施例中,本發明涉及通過避免進 行不為變換零值所需的功率消耗運算而以會降低功率消耗的方式對2D圖像數據值陣 列執行2D正交變換的反變換的方法及電路。
背景技術:
在本發明通篇中,使用術語視頻數據"塊"來表示數據子集,所述數據子集包含 視頻數據幀,在所述幀的矩形區域內具有空間位置。視頻數據塊可以但並非必需由壓 縮(或以其他方式編碼)的視頻數據組成。視頻數據塊的實例是以傳統方式定義的經 MPEG編碼的視頻幀宏塊。在許多傳統應用中,圖像數據(例如視頻數據)或其他數據會經歷二維("2D") 變換,且經變換的數據會在此後進行反變換,以恢復原始數據。這些變換的實例包括 2D離散餘弦變換(二維"DCT")、 2D哈達瑪變換、及2D傅立葉變換。在本發明通篇中,"繞過" 一運算這一表達方式(其原本將產生運算輸出值)表 示產生或確定一替代輸出值(代替運算輸出值)而不實際執行該運算。"繞過"一如下 運算將會使節點接地(從而將其迫至地電位)而不在乘法電路及加法電路中實際執行 乘法及加法步驟對乘法電路的輸入端確定一零值"zl"及一非零常數"c"以使該電 路在其輸出端上確定一電流"czl",對第二乘法電路的輸入端確定另一零值"z2"及 不同的非零常數"d",以使該電路在其輸出端上確定一電流"dz2",並響應於電流"czl" 及"dz2"來操作加法電路,以在一節點處確定輸出電壓"czl+dz2"(等於高於地電位 零伏)。本發明涉及用於對2D數據值陣列(即由數據值行及列組成的陣列)執行2D變 換的方法及系統,其中每一值均具有較大的為零值的機率。在典型實施例中,本發明 涉及一種用於對2D數據值陣列執行2D正交變換的反變換(例如2D離散餘弦反變換 或哈達瑪反變換)的改良的方法及系統。在一類較佳實施例中,本發明涉及一種用於 對DCT係數執行二維IDCT (2D離散餘弦反變換)的改良的方法及系統。所述DCT 係數是通過對視頻數據陣列(或其他圖像數據)執行2D離散餘弦變換而產生,且分 別具有較大的為零值的機率。在本發明通篇中,"零值"(或"零數據值")這一表達方式表示指示為零值的數 據。類似地,"零輸入數據值"這一表達方式表示指示為零值的輸入數據。例如,零輸 入值可為具有零值的輸入數據字(例如DCT係數,或者顏色分量或視頻數據像素)。在本發明通篇中,"稀疏"數據這一表達方式(例如要經歷反變換的稀疏數據塊) 表示指示有可能為零值的值的數據。例如,指示相對多的零值及相對少的非零值的輸入數據塊(例如DCT係數塊)是稀疏數據塊。反變換實施方案通常是任何要遵從任何視頻壓縮及解壓縮標準的系統的實施方 案的主要部分。其為一在計算上繁雜的過程,且極大地影響處理循環及功率消耗要求。 執行視頻壓縮及解壓縮標準的移動裝置(例如可攜式媒體播放器)具有特別嚴格的處 理循環及功率消耗要求其需要滿足由該應用所設立的嚴格的性能要求並消耗極低的 功率,以使電池壽命最大化;且變換引擎通常必須能夠支持多種壓縮標準及與這些標 準相伴隨的不同要求。對數據塊進行2D變換(包括2D反變換)的典型的傳統實施方案是使用下述技 術的不同組合來提高性能或減小功率1. 不對被外部構件識別為未編碼塊的塊進行變換(其中提供至變換引擎的每一輸 入塊均由該外部構件識別為編碼塊或未編碼塊)。然而,該技術存在缺點,包括其可導 致執行不必要的變換運算(例如對被識別為編碼塊但僅由零DC係數組成的塊進行變 換)。2. 識別每一輸入數據塊中完全由零值組成的全部行或列("零行"或"零列"),並繞過原本將對每一此種行或列執行的正常變換運算(例如通過為每一零行或零列輸出預定值一通常為"零")。所述零行及零列可由外部裝置加以規定或者由變換引擎在內部進行識別。然而,在許多其中行(或列)不為零行(或零列)、但為僅包含極少數量非零值的稀疏的行(或列)的常見情形中,此種傳統技術並不會提供性能或減小功 率;3. 識別(根據輸入數據)指示應使用相同係數(先前所確定的用於乘以輸入數據 行或列中的數據值的係數)乘以下一輸入數據行或列中的數據值的狀態,且不對這些 係數進行更新一原本在確定用於乘以所述下一輸入數據行或列中的數據值的新係數時 將會執行更新;以及4. 執行分布式算術變換(2D變換的基於査找表的實施方案)。典型的基於查找表 的實施方案通過減小對塊進行變換時所必須執行的乘法運算的數量來減小開銷。然而, 設計此種實施方案通常非常複雜,因為通常需要使用非常大的ROM表以及多埠 ROM,且設計約束條件通常會限制可實現的功率消耗改進量。在第2005/00337S8號美國專利申請公開案以及相關的第6,799,192號美國專利中 所述的另一種傳統2D變換中,確定數據塊每一列中的最末非零項(當執行DDCT的 列變換階段時),且變換系統隨後跳轉至八個不同"專門IDCT"程序例程中恰當的一 者來以軟體形式執行IDCT運算,以對每一列進行反變換。顯然,可採用較簡單的變 換運算(所需的乘法及加法運算較少)來處理具有相對多的零(如具有處於較高位置 的最末非零值所指示)的列,並可使用較複雜的變換運算(所需乘法及加法運算較多)
來處理具有較少的零(如具有處於較低位置的最末非零值所指示)的列。所述參考文 獻還教示,當執行IDCT的行變換階段時(在列變換階段之後),確定塊中每一行的最 末非零項,且變換系統隨後跳轉至八個不同"專門IDCT"程序例程中恰當的一者來 以軟體形式執行IDCT運算,以對每一行進行反變換。在第2005/0033788號美國專利申請公開案及第6,799,192號美國專利中所述的技 術存在諸多問題及局限性,包括當處理具有典型的零值及非零值圖案的許多列及行時, 因此種技術不會提高性能或減小功率消耗,因而此種技術效率偏低。例如,當所要變 換的列或行包含零(尤其是許多零)、但最末項為非零時,此種技術將選擇一會消耗很 大功率的複雜(例如最複雜)的"專門IDCT"例程來變換該列或行。相比之下,本 發明的較佳實施例則通過不對行及列中由零值組成的部分(例如對由零值組成的每半 行或半列、或者每四分之一行或四分之一列)執行變換運算或以功率減小方式執行這 些變換運算來提高性能及減小功率消耗。本發明的某些較佳實施例通過不對所要變換 的行或列中的每一單獨零值執行變換運算來提高性能及減小功率消耗(或者以功率減 小的方式對行或列中的每一單獨零值執行變換運算)。在第2005/003378S號美國專利申請公開案或第6,799,192號美國專利中未表明可 藉由獨立地處理所要變換的每一行或列的各子集來增強其中所揭示技術可實現的性能 改良及功率消耗降低,且未表明如何這些進行或是否可這些進行。相比之下,本發明 的較佳實施例可按順序對所要變換的每一行或列的不同子集執行相同的運算(例如反 變換),其中每一行或列的各子集決定對所述行或列的劃分,且僅通過減小決定每一此 種劃分的子集的大小便可增強這些實施例所能實現的性能改良及功率消耗降低。例如, 本發明的某些較佳實施例對所要變換的每一8N位的行或列的各2N位的子集按順序執行各組運算(每一行或列四組運算),以實現優異的性能改良及功率消耗降低優點,且 本發明的其他較佳實施例對所要變換的每一 8N位的行或列的N位的子集按順序執行 各組運算(每一行或列八組運算),以實現甚至更好的性能改良及功率消耗降低優點。另一種傳統的2D變換由Rohini Krishnan等人闡述於標題為"Design of a 2D DCT/IDCT Application Specific VLIW Processor Supporting Scaled and Sub-sampled Blocks"(第16屆VLSI設計國際會議,六頁(2003))的論文中。該論文教示對IDCT 電路確定完整數據塊的縮減規模形式(例如通過捨棄一 8x8塊的偶數行而產生的8x4 塊),且操作所述IDCT電路以對所述縮減規模形式的塊進行反變換包括繞過某些原本 用於對所述完整塊進行反變換的IDCT電路。該方法可避免計算將最終被捨棄的輸出 值,但不檢測並跳過將根本無助於最終結果的運算。另一種傳統2D變換闡述於第5,883,823號美國專利中。此種變換識別所要變換的 輸入塊的各區域,並以不同方式處理每一區域(例如對某些區域的所有元素執行IDCT, 且僅對其他區域的非零元素執行IDCT)。例如,第5,883,823號美國專利清楚地揭示 (在第10欄第53行一第11欄第26行中) 一種IDCT計算,其中對一 8x8塊的一個 象限(即對應於最低頻率範圍的4x4象限)的所有元素(無論是零還是非零)執行一 "區域性"IDCT計算,並對該8x8塊的其他三個4x4象限(即對應於較高頻率範圍 的三個4x4象限)中每一者的僅非零元素執行另一 IDCT計算。然而,第5,883,823號 美國專利並未揭示或表明如何識別每一要僅對非零元素執行IDCT計算的區域的非零 元素(或者如何有效地識別這些非零係數)、或者如何僅對塊中區域的非零元素執行 IDCT計算、或者如何有效地(且以消耗降低的功率的方式)僅對這些非零元素執行 此種IDCT計算。發明內容在一類實施例中,本發明是一種經配置以對一輸入數據塊序列中的每一塊執行2D 變換(例如離散餘弦反變換)的系統,其中每一塊均包含輸入數據值行及列,且所述 2D變換包含一行變換及一列變換。在這些實施例中,所述系統經配置以通過如下方式 執行所述2D變換對每一塊的所有行執行行變換以產生經局部變換的數據塊、並然 後對所述經局部變換的數據塊的每一列執行列變換,或者通過對每一塊的所有列執行 所述列變換以產生一經局部變換的數據塊、並然後對所述經局部變換的數據塊的每一 行執行所述行變換。為簡化說明,我們應說明經配置以通過如下方式執行所述2D變 換的類別的實施例對每一塊的所有fi^執行行變換以產生經局部變換的數據塊,並然 後對所述經局部變換的數據塊的每一列執行列變換。應了解,本文中每一處所提及的 "行"及"列"均可分別以提及"列"及"行"來取代,以描述該類別中的其他實施 例。在本文中,數據值集合(例如行或列)的"子集"這一術語是使用其廣義,並可 表示一行(或列)數據值、 一行(或列)數據值中的偶數元素、 一行(或列)數據值 中的奇數元素、 一行(或列)數據值中的每第N個數據值、位反轉次序的一行或列數 據值中的偶數元素(適用於FFT蝶形運算)、或另一種數據值子集。為執行行變換,所述類別的系統包括經配置以對輸入數據塊的每一行的輸入數據 值執行變換運算(通常包含乘法及加法)以產生一經局部變換的數據塊的電路。所述 系統通常包括一緩衝器,所述經局部變換的數據即存儲於所述緩衝器中。為執行所述 列變換,所述系統包括經配置以對所述經局部變換的數據塊中每一列的數據值執行變 換運算(通常包括乘法及加法)的電路。所述類別的每一實施例均經配置以使得當對 每一行輸入數據執行所述行變換時,其均判定構成所述行的第一分區的數據值的每一 不同子集是否包括至少一個零值(例如由零值組成)、判定所述行的第一分區的第一子集的每一不同子集是否包括至少一個零值、及判定所述行的第一分區的至少一個其他 子集的每一不同子集是否包括至少一個零值,及當對包含至少一個零輸入數據值及至 少一個非零輸入數據值的每一所述行執行所述行變換時,繞過或以降低功率的方式執行對至少一個(且較佳對每一個)所述零輸入數據值的至少一個變換運算,其中假如 所述零值為非零值,此種變換運算原本將以消耗全功率的方式執行(例如,繞過至少 一個原本將使用乘法及加法電路執行的乘法或加法)。當對每一包含至少一個零輸入數
據值及至少一個非零輸入數據值的行執行所述行變換時,某些此種實施例中的用於對 所述零輸入值執行所述變換運算的電路均允許,而不更新其輸入中的至少一個,以避 免消耗在使每一此種輸入雙態轉換時原本將消耗的功率。較佳地,所述類別的一實施例還經配置以使得當對每一列經局部變換的數據執行 所述列變換時,其均判定構成所述列的第一分區的數據值的每一不同子集是否包括至 少一個零值(例如由零值組成)、判定所述列的第一分區的第一子集的每一不同子集是 否包括至少一個零值、及判定所述列的第一分區的至少一個其他子集的每一不同子集 是否包括至少一個零值,及當對包含所述經局部變換的數據的至少一個零值及所述經 局部變換的數據的至少一個非零值的每一所述列執行所述列變換時,其均繞過(或以 降低功率的方式執行)所述變換運算中的至少一者,然而假如所述零值是非零值,則 其原本將以消耗全功率的方式對所述經局部變換的至少一個(且較佳對每一個)所述 數據值執行所述變換運算中的至少一者(例如,至少一個原本將使甩乘法及加法電路 執行的乘法或加法)。例如,當對每一包含至少一個零數據值及至少一個非零數據值的 列執行所述列變換時, 一個此種實施例經配置以繞過對所述列的零值的變換運算,而 假如所述零值為非零值時,原本將執行對所述列的零值的變換運算(例如,該實施例 繞過用於執行所述變換運算的電路)。本發明的較佳實施例判定所要變換的每一數據塊是否完全由零值組成。在判斷出 數據塊完全由零值組成時,繞過或以降低功率的方式執行對所述塊的值的變換運算(行 及列變換運算二者)。這些較佳實施例還按順序(例如以迭代方式)判定所要變換的數 據塊中每一行或列的諸多不同子集中的每一者是否包含至少一個零值。此一實施例的 一實例將涉及由值A (其中/是處於(KKN-l範圍內的整數,且N為偶數整數)組成的數據行(或列),將所述行(或列)劃分成第一數據值子集與不同於所述第一子集的 第二數據值子集,將所述第一子集劃分成第三數據值子集與不同於所述第三子集的第 四子集,並將所述第二子集劃分成第五數據值子集與不同於所述第五子集的第六子集。 所述實例性實施例判定所述第一子集是否完全由零值組成及所述第二子集是否完全由零值組成。通常,當所述行(或列)由余弦變換係數(通過對視頻數據幀執行DCT 而產生)組成時,所述第一子集由低頻係數(值A,其中i是處於(KS(N/2)-l範圍內 的整數)組成,所述第二子集由高頻係數(值A,其中!'是處於N/2SKN-1範圍內的 整數)組成,且所述第二子集具有很高的僅由零值組成的機率(且具有比所述第一子 集高得多的僅由零值組成的機率)。該實例性實施例在確定出第一子集完全由零值組成之後,繞過對第一子集中的值 的變換運算或者以降低功率的方式執行變換運算(例如繞過用於執行這些運算的電路, 或者操作所述電路,使其至少一個輸入不被更新,以避免消耗功率一原本將會消耗功 率來使每一此種輸入雙態轉換)。在確定出第二子集完全由零值組成時,繞過或以降低 功率的方式執行對第二子集中的值的變換運算。在確定出第一子集與第二子集中每一者均包括至少一個非零值時,該實例性實施
例判定是否第三子集、第四子集、第五子集、及第六子集中的每一者均完全由零值組成。在一典型實施方案中,第一子集由低頻係數(值々,其中/是處於0S《N/2)-l範 圍內的整數)組成,第二子集由高頻係數(值;c,.,其中!'是處於N/2《SN-1範圍內的 整數)組成,第三子集由第一子集的偶數值(值;c,.,其中f是處於(KK(N/2)-l範圍內 的偶數整數)組成,第四子集由第一子集的奇數值(值A,其中!'是處於(KK(N/2)-l 範圍內的奇數整數)組成、第五子集由第二子集的偶數值組成,且第六子集由第二子 集的奇數值組成。對於被確定完全由零值組成的第三子集、第四子集、第五子集、及 第六子集中的每一者,均繞過或以降低功率的方式執行對該子集的值的變換運算(例 如繞過用於執行這些運算的電路,或者操作所述電路而不更新其至少一個輸入,以避 免消耗功率一原本將會消耗功率來使每一此種輸入雙態轉換)。而對於被確定包含至少一個非零值的第三子集、第四子集、第五子集、及第六子集中的每一者,均以消耗全 功率的方式對該子集的值執行變換運算。在上述實例性實施例的變化形式(及本發明的其他實施例)中,構成所要變換的 數據塊的每一行或列(或一行或列的子集)的數據值是在判定每一包含該行或列(或 其子集)的一分區的不同子集是否完全由零值組成(或為零值)之前或期間重新排序。 例如,如果一行由值;c,.(其中/是(Kz^N-l範圍內的整數,其中N是偶數整數)組成, 所述分區由所述行的不同的第一及第二子集組成,第一子集由所述行的不同的第三及 第四子集組成,且第二子集由所述行的不同的第五及第六子集組成,則所述第一子集 由值A (其中Z是0&2 (N/2) -1範圍內的整數)組成,所述第二子集由高頻係數(值 A,其中i是N/2;'^N-1範圍內的整數)組成,所述第三子集由值義,.(其中i處於OS《(N/4) -1範圍內)組成,這些值;c,.為第 一子集的經重新排序版本的偶數值,所述第四子集由值;ci (其中i處於N/4SK (N/2) -1範圍內)組成,這些值;c,-為 第一子集的經重新排序版本的奇數值,所述第五子集可由值x,.(其中z'處於N/2SS (3N/4) -l範圍內)組成,這些值;q 為第二子集的經重新排序版本的偶數值,所述第六子集可由值A (其中/處於3N/"^N-1範圍內)組成,這些值x,為第二 子集的經重新排序版本的奇數值。在另一類實施例中,本發明是一種用於對一輸入數據塊序列執行2D變換的方法, 所述塊中的每一者均包括輸入數據值行及列,且所述2D變換包括行變換及列變換。 在該類的典型實施例中,每一塊均為DCT係數塊,所述DCT係數是通過對視頻數據 執行DCT而產生,且所述2D變換是離散餘弦反變換。在這些典型實施例中以及在該 類的其他實施例中,所述序列中的許多或所有塊(例如至少實質上所有塊)均為稀疏 數據塊。所述2D變換可包括如下步驟對每一輸入數據塊的所有行執行行變換以產 生經局部變換的數據塊,並然後對所述經局部變換的數據塊的每一列執行所述列變換; 或者包括如下步驟對每一輸入數據塊的所有列執行所述列變換以產生一經局部變換
的數據塊,並然後對所述經局部變換的數據塊的每一行執行所述行變換。為簡化說明, 我們應說明該類中其中所述2D變換包括如下步驟的實施例對每一輸入數據塊的所 有行執行所述行變換以產生經局部變換的數據塊,並然後對所述經局部變換的數據塊 的每一列執行所述列變換。應了解,每一處所提及的"行"及"列"均可分別以提及"列"及"行"來取代,以描述該類別的其他實施例。在所述類別中的某些實施例中,所述方法包括如下步驟(a) 對所述輸入數據塊中一者的每一行執行所述行變換,包括通過對每一所述行 的輸入數據值執行變換運算,以產生一經局部變換的數據塊;以及(b) 對所述經局部變換的數據塊的每一列執行所述列變換,包括通過對每一所述列的數據值執行其他變換運算,其中步驟(a)包括如下步驟判定構成每一所述行的第一分區的數據值的每一不同子集是否包括至少一個零 值(例如由零值組成),判定所述第一分區的第一子集的每一不同子集是否包括至少一 個零值,及判定所述第一分區的至少一個其他子集的每一不同子集是否包括至少一個零值;及當對包含至少一個零輸入數據值及至少一個非零輸入數據值的每一所述行執行 所述行變換時,繞過(或以降低功率的方式執行)所述變換運算中的至少一者,而假 如每一所述零輸入值為非零值時,原本將以消耗全功率的方式對至少一個(且較佳對 每一個)所述零輸入數據值執行所述變換運算(例如,繞過至少一個原本將使用乘法 及加法電路對所述行的至少一個(且較佳對每一個)所述零輸入數據值執行的乘法或 加法)。例如,當對每一包含至少一個零輸入數據值及至少一個非零輸入數據值的行執行 所述行變換時,步驟(a)包括如下步驟操作一具有第一輸入端及第二輸入端的乘法電路,以執行乘法運算(其中將對第一輸入端確定的零輸入值乘以對第二輸入端確定 的第二值),而不更新對第二輸入端確定的值,以避免消耗在使第二輸入端雙態轉換時 原本將消耗的功率。較佳地,步驟(b)包括如下步驟判定構成每一所述列的分區的數據值的每一不同子集是否包括至少一個零值(例 如由零值組成),判定所述分區的第一子集的每一不同子集是否包括至少一個零值,及 判定所述分區的至少一個其他子集的每一不同子集是否包括至少一個零值;及當對包含至少一個零輸入數據值及至少一個非零輸入數據值的每一所述列執行 所述列變換時,繞過(或以降低功率的方式執行)所述其他變換運算中的至少一者, 而假如每一所述零輸入值為非零值時,原本將以消耗全功率的方式對至少一個(且較佳對每一個)所述零輸入數據值執行所述額外變換運算(例如,繞過至少一個原本將 使用乘法及加法電路對所述列的至少一個(且較佳對每一個)所述零輸入數據值執行 的乘法或加法)。根據本發明的典型實施例構建的變換電路的優點包括-
因避免冗餘的或不必要的計算或計算步驟而能提高(且較佳最佳化)計算效率(從 而允許以較低頻率運行)(例如,在變換輸入數據值塊方面,本發明變換引擎的典型實 施例的性能與每一塊的非零輸入數據值的數量成正比)。此是在比傳統變換引擎更精細 的粒度水平一在變換輸入數據值塊方面,傳統變換引擎的性能與每一塊的包含至少一 個非零值的行的數量成比例);切換活動減少而使功率消耗降低;提供智能的中間緩衝器存儲器管理(在較佳實施例中);及通過避免冗餘的或不必要的計算或計算步驟(例如避免不必要的乘法器輸入雙態 轉換)而使整數變換的性能加快。在某些實施例中,本發明的系統是一種視頻處理系統(例如一種管線式視頻解碼 系統),其包括一根據本發明構建的變換引擎。在某些此種實施例中,所述視頻處理系 統經配置以用作可攜式媒體播放器的視頻處理子系統。在其他實施例中,本發明的系 統是一種可攜式媒體播放器,其包括一視頻處理子系統,該視頻處理子系統包括根據 本發明構建的變換引擎。本發明的其他方面是用於本發明系統任一實施例中的變換引擎及變換引擎電路、 以及在本發明系統任一實施例的運行期間所執行的方法。


圖1是可根據本發明實施例構建的包括變換引擎的管線式視頻解碼系統的方塊圖;圖2是可根據本發明構建的處理系統(具有視頻解碼能力)的方塊圖; 圖3是輸入數據塊、所述塊的已經過行變換的版本、及所述塊的已經過行變換及列變換的版本的圖式;圖4是本發明方法的一實施例(其可由本發明系統的一類實施例來執行)的步驟的流程圖;圖5是在實施本發明的圖2所示電路7 (或電路ll)的典型實施方案中所用的變 換電路的方塊圖;圖6是本發明管線式視頻解碼系統的一實施例中各元件的方塊圖。
具體實施方式
下面將參照圖l、 2、 3、 4、 5及6來說明本發明的實施例。圖1是一管線式視頻解碼系統的系統層次方塊圖,所述管線式視頻解碼系統包括 如圖所示沿系統總線連接的位流引擎l、變換引擎3 (其可根據本發明構建而成)、及 像素重構引擎5。位流引擎1接收包含經處理的頻域係數塊的經編碼視頻數據,該等 頻域係數是通過對視頻像素塊執行2D變換(例如二維DCT)而產生。位流引擎l處 理經編碼的視頻數據,通常是通過對其執行拆開及反量化,並對變換引擎3確定所得
到的經處理頻域係數塊序列。變換引擎3對所述序列中的每一塊執行2D反變換,以 產生經局部解碼視頻像素塊,並將所述經局部解碼視頻像素確定至像素重構引擎5, 以供進一步進行視頻解碼。像素重構引擎5響應於所述經局部解碼視頻像素而產生完 全解碼的像素,並將所述完全解碼的像素確定至系統總線。圖1所示系統可為具有視頻解碼能力的可攜式媒體播放器或另一種可攜式數據處 理系統(或並非打算為可攜式的數據處理系統)的子系統,且此一子系統可通過構建 本發明的變換引擎3而根據本發明構建而成。此一處理系統可以且通常將包括圖1中 所未顯示的其他元件。預期本發明的某些實施例是由不具有圖1所示結構的系統構建而成,或者由不具 有圖2所示結構的處理系統構建而成。圖2是圖1中變換引擎3、或另一用於對數據值塊執行二維變換(例如2D反變 換)的裝置的典型實施方案的方塊圖。圖2包括如圖所示相連的行/列變換電路7、存 儲緩衝器9、及列/行變換電路11。在某些實施方案中,圖2中的電路7經配置以對由 其接收的輸入數據塊序列中每一塊的所有行執行行變換並將所得到的數據確定至存儲 緩衝器9,且電路11經配置以從緩衝器9中讀取此種數據的列並對從行變換得到的每 一數據塊的所有列執行列變換。在其他實施方案中,圖2中的電路7經配置以對由其 接收的輸入數據塊序列中每一塊的所有列執行列變換並將所得到的數據確定至存儲緩 衝器9,且電路11經配置以從緩衝器9中讀取此種數據的行並對從行變換得到的每一 數據塊的所有行執行行變換。圖3是可輸入至圖2所示實施方案中的電路7的一種類型的輸入數據塊(標記為 "I")、塊I的已經過行變換(例如在圖2所示此種實施方案的電路7中)的版本(標 記為塊"n")、及塊I的已經過行變換及列變換(例如在圖2所示此種實施方案的電路 7及電路11中)的版本(標記為塊"III")的圖式。圖3中的塊I是一 4x4頻域係數 塊,其包含四個係數行及四個係數列,其中每一係數均具有標記為"0"的零值,且每 一係數均具有標記為"X"的非零值。所述行由參考符號"R1"至"R4"標識,且所 述列由參考符號"a"至"d"標識。典型的傳統變換引擎經配置以識別完全由零值組成的(所要變換的每一塊的)所 有行或列(即"零行"或"零列")並繞過原本將對每一所識別的零行或零列執行的正 常變換運算。此種傳統變換引擎將塊I的行Rl及R3識別為零行並繞過原本將對行 R1及R3執行的變換計算。相比之下,本發明變換引擎的典型實施例(例如實施本發明的圖2所示引擎的實 施方案)則經配置以不僅識別每一所要變換的塊的零行及零列(例如塊I的行Rl及 R3),以繞過原本將對零行執行(假如其未將所述行識別為零行)的行變換計算及繞 過原本將對零列執行(假如其未將所述列識別為零列)的列變換計算,而且還能在對 非零行及非零列執行變換運算(例如對塊I的行R2及R4執行的行變換計算)期間節 省額外的功率。所述額外的功率節省是通過如下方式來實現識別完全由零數據值組成的行的子集(及列的子集)(例如,由列c及d中的係數組成的塊I中行R2的子集, 或者由列b及d中的係數組成的塊I的行R4的子集),並避免(或以降低功率的方式 執行)假如所述子集並不完全由零數據值組成時原本將對每一此種子集執行的變換計 算。考慮本發明變換引擎的此一實施例具有圖2所示結構且經配置以對一4x4DCT變 換係數塊序列中每一塊執行IDCT (反DCT)變換的情形。每一此種塊的每一行均由 兩個低頻係數(例如圖3中每一塊的列"a"及"b"中的係數)以及兩個高頻係數(例 如圖3中每一塊的列"c"及"d"中的係數)組成。此一塊的每一列均由兩個低頻系 數(例如圖3中每一塊的行"R1"及"R2"中的係數)以及兩個高頻係數(例如圖3 中每一塊的行"R3"及"R4"中的係數)組成。在此種情形中,每一行及每一列的較 高頻係數具有比較低頻係數高的僅由零值組成的機率。本發明變換引擎的一個此種實施例的電路7經配置以判定每一 DCT變換係數塊 的每一行的這兩個最低頻係數是否完全由零值組成,判定每一此種行的這兩個最高頻 係數是否完全由零值組成,如果每一行的這兩個最低頻係數完全由零值組成,則繞過 對其進行的行變換計算(其中假如其並非完全由零值組成,則原本將以消耗全功率的 方式對這些係數執行這些計算)或者以降低功率的方式執行這些計算,及如果每一行 的這兩個最高頻係數完全由零值組成,則繞過對其進行的行變換計算(其中假如其並 非完全由零值組成,則原本將以消耗全功率的方式對這些係數執行這些計算)或者以 降低功率的方式執行這些計算。例如,此一實施例的電路7可經配置以繞過對塊I的 行R1、 R2、 R2、及R4中每一者的這兩個最高頻係數的行變換計算。本發明變換引擎的此種實施例的電路7還經配置以判定對其確定的每一 DCT變 換係數塊的每一行的這兩個最低頻分量的偶數係數(例如,圖3所示塊I的列"b"中 的每一係數)是否是零值,判定對其確定的每一DCT變換係數塊的每一行的這兩個最 低頻分量的奇數係數(例如,圖3所示塊I的列"a"中的每一係數)是否是零值,判 定對其確定的每一 DCT變換係數塊的每一行的這兩個最高頻分量的偶數係數(例如, 圖3所示塊I的列"d"中的每一係數)是否是零值,以及判定對其確定的每一 DCT 變換係數塊的每一行的這兩個最高頻分量的奇數係數(例如,圖3所示塊I的列"c" 中的每一係數)是否是零值。這些實施例的電路7還配置成以降低功率的方式執行原 本對每一被確定為零值的此種係數執行(以消耗更大功率的方式)的乘法計算,以對 所述行進行變換。通常,每一此種降低功率的乘法均通過如下方式執行操作一具有 第一輸入端及第二輸入端的乘法電路,以將零值(確定至第一輸入端)乘以第二值(確 定至第二輸入端),而不更新確定至第二輸入端的值,從而避免消耗功率一原本在確定 至第一輸入端的值為非零值時,將消耗功率來使第二輸入雙態轉換(且第二輸入端處 更新後的第二值需要乘以此非零值)。本發明變換引擎的此一實施例的電路11還較佳經配置以判定從緩衝器9讀取的 每一4x4經局部變換係數塊的每一列的第一半(即前兩個數據值)是否完全由零值組
成,判定每一此種列的第二半(後兩個數據值)是否完全由零值組成,如果每一列的 第一半完全由零值組成,則繞過對其進行的列變換計算(其中假如其並非完全由零值 組成,則原本將以消耗全功率的方式對這些值執行這些計算)或以降低功率的方式執 行這些計算,以及如果每一列的第二半完全由零值組成,則繞過對其進行的列變換計 算(其中假如其並非完全由零值組成,則原本將以消耗全功率的方式對這些值執行這 些計算)或以降低功率的方式執行這些計算。本發明變換引擎的此一實施例的電路11還經配置以判定從緩衝器9讀取的每一 4x4經局部變換係數塊的每一列的第一半中的偶數數據值(例如圖3所示塊II的行R2 中的每一值)是否是零值,判定每一此種列的第一半中的奇數數據值(例如圖3所示 塊II的行R1中的每一值)是否是零值,判定每一此種列的第二半中的偶數數據值(例 如圖3所示塊II的行R4中的每一係數)是否為零值,以及判定每一此種列的第二半 中的奇數數據值(例如圖3所示塊II的行R3中的每一係數)是否為零值。這些實施 例的電路11還配置成以降低功率的方式對被確定為零值的每一此種數據值執行原本 將執行(以消耗更大功率的方式)的乘法計算,以對所述列進行變換。通常,每一此 種降低功率的乘法均通過如下方式執行操作一具有第一輸入端及第二輸入端的乘法電路,以將零值(確定至第一輸入端)乘以第二值(確定至第二輸入端),而不更新確 定至第二輸入端的值,從而避免消耗功率一原本在確定至第一輸入端的值為非零值時, 將消耗功率來使第二輸入雙態轉換(且第二輸入端處更新後的第二值需要乘以此非零值)。在上述實例的其中每一行及列均包含8個數據值的變化形式中,每一判定一行(或 列)的第一 (或第二)半中的奇數(或偶數)數據值是否是零的步驟均被一判定所述 行(或列)的所述一半的第一 (或第二)半中的數據值是否完全由零組成的步驟所取 代,且所述引擎經配置以繞過對完全由零值組成的每一半行(或半列)的每一半的行 (或列)變換計算(其中假如這些值並非安全由零值組成,則原本將以全功率對其執 行這些計算)或者以降低功率的方式執行這些計算。較佳地,所述引擎還經配置以判 定每一此種半行(或半列)中的奇數值是否為零值,判定每一此種半行(或半列)的 每一數據值是否為零值,及以降低功率的方式對每一此種數據值執行原本將執行(以 消耗更大功率的方式)的乘法計算,以對相關行或列進行變換。在這兩個上述實例中任一實例的變化形式中,包含要由電路7或11進行變換的 塊的每一行或列(或行或列的子集)的數據值均在判定每一包含所述行或列(或其子 集)的分區的不同子集是否完全由零值組成(或為零值)之前或期間進行重新排序。 例如,如果一行(或列)是由值;c,.(其中z'是處於OSSN-l範圍內的整數,且N為偶 數整數)組成,所述分區是由所述行(列)的不同的第一及第二子集組成,所述第一 子集是由所述行(列)的不同的第三及第四子集組成,且所述第二子集是由所述行(列) 的不同的第五及第六子集組成,則所述第一子集由值A (其中z'是處於0S《2/N)-1範 圍內的整數)組成,所述第二子集由值々(其中!'是處於2/NS^N-1範圍內的整數)22
組成,所述第三子集可由值;c,.(其中/處於(KK(N/4)-l範圍內)組成,或者其可由第一 子集的偶數值組成,抑或其可由第一子集的經重新排序版本的偶數值組成,所述第四子集可由值A (其中z'處於N/4S《N/2)-l範圍內)組成,或者其可由第 一子集的奇數值組成,抑或其可由第一子集的經重新排序版本的奇數值組成,所述第五子集可由值A (其中z'處於N/2S《3N/4)-l範圍內)組成,或者其可由 第二子集的偶數值組成,抑或其可由第二子集的經重新排序版本的偶數值組成,以及所述第六子集可由值A (其中z'處於3N/4&^N-l範圍內)組成,或者其可由第二 子集的奇數值組成,抑或其可由第二子集的經重新排序版本的奇數值組成。再次參見圖3所示塊I的行R4,該行R4中的偶數係數是零值,且該行中的奇數 係數並非完全由零值組成。為對該行R4進行變換,本發明變換引擎的某些實施例將 通過阻止在對所述行的偶數係數執行行變換運算期間阻止用於執行此種行變換運算的 乘法器的輸入雙態轉換來降低功率消耗。此有助於降低乘法器在變換期間所消耗的切 換功率(即降低動態功率消耗)。再次參見圖3,在塊I的行R4中,整個行中僅第一係數是非零(經編碼的)係數。 本發明變換引擎的較佳實施例經配置以辨別此種類型(即其中僅第一數據值為非零) 的行或列,並以一種所消耗功率小於為對完全由非零值組成的行或列進行變換所需功 率的方式對此種行或列進行變換。例如,(本發明變換引擎的具有圖2所示結構的實施 例的)電路7的較佳實施方案配置成以降低功率的方式對其中僅第一值為非零值的輸 入數據行執行行變換一僅響應於行中的非零係數且不對行中所有數據值(此將消耗全 功率)執行正常行變換,並將所得到的經局部變換的數據值存儲於緩衝器9中。本發明變換引擎的較佳實施例通過如下方式來降低功率消耗檢測所要變換的塊 的各單獨數據值(例如,在逐個係數的基礎上對要經歷直接餘弦反變換的DCT係數塊 的各單獨係數執行零檢測),且對於被判定為零值的所有數據值,均確保使被用於變換 至少一個所述零值的至少一個乘法器的至少一個(且較佳每一個)輸入均不會自其先 前值發生切換。此會降低引擎中的動態功率消耗。在本發明變換引擎的具有圖2所示結構的實施例的較佳實施方案中,電路7將其 所產生的經局部變換的數據值存儲於內部緩衝器9中。電路11從緩衝器9中讀取該數 據,並對該數據的每一列(或行)執行列(或行)變換。通常,電路ll可在緩衝器中 存在至少一列(行)數據且所述數據可供用於變換時,即刻執行列(行)變換計算。 因此,在較佳實施例中,電路7經配置以對其所執行的行(列)變換運算重新排序, 以儘可能快地產生(並存儲於緩衝器9中)恰好足夠多的經局部變換的數據,以使電 路ll對所述數據的完整列(行)執行列(行)變換。通過將電路7配置成以此種重新 排序(例如交錯的)方式執行行(列)變換,可降低系統的功率消耗(例如,通過使 進行內部緩衝器存儲所消耗的功率最小化)。另一選擇為,當根據本發明變換引擎的具有圖2所示結構的實施例來執行對稱變
換時,以一種能利用變換的對稱性的方式配置電路7,以執行足以在執行額外的行變換計算之前產生(並存儲於緩衝器9中)兩列數據的行變換計算、或者執行足以在執 行額外的列變換計算之前產生(並存儲於緩衝器9中)兩行數據的列變換計算。電路 7的此種實施例所執行的行(或列)變換繼續儘可能快地產生(並存儲於緩衝器9中) 恰好足夠多的經局部變換數據,以使電路11對其他完整的經緩衝數據列(行)執行列 (行)變換。關於是將電路7構建成執行行變換計算以在執行額外行變換計算之前輸 出一列數據還是兩列數據的決策取決於性能與緩衝存儲器要求之間的折衷。應了解, 如果將電路7構建成以使緩衝器9僅需要具有存儲一列經局部變換數據的容量的方式 執行行變換,則使緩衝器9的所需容量最小化的優點將通常以降低性能為代價(例如 用於使本發明變換引擎對完整數據值塊執行反變換的循環數量增大)。為根據本發明執行傳統的基於H264的變換(無需進行實際乘法便可執行的整數 變換),本發明的變換引擎可不構建有乘法器。可使用移位器而非乘法器來執行基於 H264的變換。甚至在這些實施方案中,根據本發明繞過變換電路也可使變換計算加速 (並降低其所消耗的能量)。接下來參照圖4所示流程圖更詳細地說明本發明的一類實施例。圖4所示流程圖 涉及一種對一輸入數據塊序列中的每一塊執行的2D變換(例如,離散餘弦反變換), 其中每一塊均包括輸入數據值行及列,且所述2D變換包括行變換及列變換。根據本 發明,所述2D變換通過如下方式執行對每一塊的所有行執行行變換以產生經局部 變換的數據塊,並然後對所述經局部變換的數據塊的每一列執行列變換;或者通過如 下方式執行對每一塊的所有列執行列變換以產生經局部變換的數據塊,並然後對所 述經局部變換的數據塊的每一行執行行變換。圖4所示流程圖描述對數據值行執行的 此種行變換或對數據值列執行的此種列變換(例如,其描述通過實施本發明的圖2所 示電路7的實施方案對頻率係數行或列執行變換,或者通過實施本發明的圖2所示電 路11的實施方案對從緩衝器9讀取的經局部變換數據值行或列執行變換)。為簡明起 見,下文對圖4的說明將假定變換數據值行。應了解,在本說明中所提及的每一處"行" 可由提及"列"來取代,以描述本發明的其他實施例。要根據本發明進行反變換的典 型塊每行具有四個係數(例如,如果所述反變換是基於H264的變換)或每行八個系 數(例如,如果所述反變換是對8x8頻率係數塊進行的IDCT)。圖4適用於這兩種情 形。在執行圖4中所示的步驟之前,本發明典型實施例的變換引擎判定所要變換的數 據塊是否完全由零值組成。在判定所述塊完全由零值組成時,所述變換引擎使得繞過 對所述塊的變換運算(行變換與列變換運算二者)(例如其響應於所述塊而輸出零,而 不對所述塊的值執行實際變換運算)。如果所述變換引擎判定所要變換的數據塊包括至 少一個非零值,則其啟動行變換(即其執行圖4中的步驟20)。在根據圖4的流程圖啟動(步驟20)所要執行的行變換後,從緩衝存儲器讀取所 要變換的第一行數據值。緩衝存儲器可為耦接至圖2中電路7的輸入端的緩衝存儲器(如果電路7執行圖4的流程圖),或者其可為圖2的緩衝存儲器9 (如果電路ll執 行圖4的流程圖)。在步驟24中,所述變換引擎判定當前行(在最近一次執行步驟22期間所讀取的 行)是否包含至少一個非零值。若為否,則所述變換引擎輸出指示所述行的經行變換 版本的零值(步驟25)(而不對所述行的數據值執行實際的行變換計算),並從緩衝存 儲器讀取下一行.(步驟22的下一次執行)。如果當前行包括至少一個非零值,則所述 引擎判定(在步驟26中)當前行的第一半(例如由四個數據值組成的行的前兩個數據 值)是否包括至少一個非零值。如果當前行的第一半不包括至少一個非零值,則所述引擎輸出指示所述行的第一 半的經行變換版本的零值(步驟28)(而不對所述行的第一半的數據值執行實際的行 變換計算),並判定(在步驟40中)當前行的第二半(例如由四個數據值組成的行的 後兩個數據值)是否包括至少一個非零值。如果當前行的第一半包括至少一個非零值,則所述引擎判定(在步驟30中)所 述當前行的第一半的第一半是否包括至少一個非零值,並判定(在步驟32中)當前行 的第一半的第二半是否包括至少一個非零值。如果當前行的第一半的第一半包括至少一個非零值(例如,如果其由單個非零值 組成,或者由包括至少一個非零值在內的兩個值組成),則所述引擎對所述行的第一半 的第一半的數據值執行(在步驟36中)行變換計算,並將所得到的經變換數據存儲(在 步驟39中)於緩衝存儲器中。用於執行步驟39的緩衝存儲器可為耦接至圖2所示電 路11的輸出端的緩衝存儲器(如果電路11執行圖4的流程圖),或者圖2的緩衝存儲 器9 (如果電路7執行圖4的流程圖)。如果當前行第一半的第一半不包括非零值,則所述引擎執行步驟37,其中其-(a) 輸出一個或多個零來指示當前行第一半的第一半的經行變換版本(而不對 所述數據值或當前行第一半的第一半的值執行實際的行變換計算)。然後,將每一此種 零值存儲(在步驟39中)於緩衝存儲器中;或(b) 輸出通過以降低功率的方式對當前行第一半的第一半的數據值執行行變換 計算所產生的至少一個數據值。然後,將每一此種數據值存儲(在步驟39中)於緩衝 存儲器中。例如,所述引擎可通過如下方式進行此種作業操作具有第一輸入端集合(包括至少一個輸入端)及第二輸入端集合(包括至少一個輸入端)的乘法電路,對 所述第一輸入端集合確定至少一個常數且對所述第二輸入端集合確定當前行第一半的 第一半的每一數據值,以對當前行第一半的第一半的每一數據值執行至少乘法運算, 而不更新對第一輸入端集合與第二輸入端集合中至少一者所確定的值,以避免消耗功 率—而原本對所述乘法電路的相關輸入端進行雙態轉換則會消耗功率。在所述弓I擎正 在執行IDCT的情況下,對第一輸入端集合確定的每一常數均為餘弦常數,且在一種 實施方案中,每當對第二輸入端集合確定的數據值是零值時,所述引擎均阻止更新(相 對於其先前值發生變化)要乘以所述零值的餘弦常數,因為無論所述餘弦常數的值如
何,所述乘法的結果均將為0。在另一實施方案中,所述引擎阻止更新對第一輸入端 集合所確定的餘弦常數(要乘以零數據值),並阻止更新對第二輸入端集合中對應輸入 端所確定的數據值(以阻止兩個乘法器輸入端中的任一個雙態轉換),並確定一零值(例 如將零值多路復用至處理管線的輸出端)以指示將所述零數據值乘以所述餘弦常數的 結果(而不實際將這兩個操作數相乘在一起);或(C)輸出一個或多個零來指示當前行第一半的第一半中至少一個值的經行變換 版本(而不對這一或這些數據值執行實際的行變換計算),並輸出通過以降低功率方式 對當前行第一半的第一半中至少一個其他數據值執行行變換計算而產生的至少一個數 據值。然後,將每一此種零值及輸出值存儲(在步驟39中)於緩衝存儲器中。如果當前行第一半的第二半包括至少一個非零值(例如,如果其由單個非零值組 成或者由包括至少一個非零值在內的兩個值組成),則所述引擎對所述行的第一半的第 二半的數據值執行(在步驟34中)行變換計算,並將所得到的經變換數據存儲(在步 驟39中)於緩衝存儲器中。如果當前行的第一半的第二半不包括非零值,則所述引擎執行步驟35,其中其(a) 輸出一個或多個零來指示當前行第一半的第二半的經行變換版本(而不對 所述數據值或當前行第一半的第二半的值執行實際的行變換計算)。然後,將每一此種 零值存儲(在步驟39中)於緩衝存儲器中;或(b) 輸出通過以降低功率的方式對當前行第一半的第二半的數據值執行行變換 計算所產生的至少一個數據值。然後,將每一此種數椐值存儲(在步驟39中)於緩衝 存儲器中。例如,所述引擎可通過如下方式進行此種作業操作具有第一輸入端集合(包括至少一個輸入端)及第二輸入端集合(包括至少一個輸入端)的乘法電路,對 所述第一輸入端集合確定至少一個常數且對所述第二輸入端集合確定當前行第一半的 第二半的每一數據值,以對當前行第一半的第二半的每一數據值執行至少乘法運算,而不更新對第一輸入端集合與第二輸入端集合中至少一者所確定的值,以避免消耗功 率一而原本對所述乘法電路的相關輸入端進行雙態轉換則會消耗功率。在所述引擎正 在執行IDCT的情況下,對第一輸入端集合確定的每一常數均為餘弦常數,且在一種 實施方案中,每當對第二輸入端集合確定的數據值是零值時,所述引擎均阻止更新(相 對於其先前值發生變化)要乘以所述零值的餘弦常數,因為無論所述餘弦常數的值如 何,所述乘法的結果均將為零。在另一實施方案中,所述引擎阻止更新對第一輸入端 集合所確定的餘弦常數(要乘以零數據值),並阻止更新對第二輸入端集合中對應輸入 端所確定的數據值(以阻止兩個乘法器輸入端中的任一個雙態轉換),並確定一零值(例 如將零值多路復用至處理管線的輸出端)以指示將所述零數據值乘以所述餘弦常數的 結果(而不實際將這喊個操作數相乘在一起);或(c) 輸出一個或多個零來指示當前行第一半的第二半中至少一個值的經行變換 版本(而不對這一或這些數據值執行實際的行變換計算),並輸出通過以降低功率方式 對當前行第一半的第二半中至少一個其他數據值執行行變換計算而產生的至少一個數
據值。然後,將每一此種零值及輸出值存儲(在步驟39中)於緩衝存儲器中。當在步驟34及36、步驟34及37、步驟35及36、或者步驟35及37中所產生或 確定的所有數據值均已存儲(步驟39)於緩衝存儲器中之後,所述引擎判定(在步驟 40中)當前行的第二半是否包括至少一個非零值。如果當前行的第二半不包括至少一 個非零值,則所述引擎輸出零(步驟41)以指示所述行的第二半的經行變換版本(而 不對所述行的所述第二半的數據值執行實際的行變換計算)並從緩衝存儲器讀取所要 執行的下一行(另一次執行步驟22)。如果當前行的第二半包括至少一個非零值,則所述引擎判定(在步驟42中)當 前行的第二半的第一半是否包括至少一個非零值,並判定(在步驟44中)當前行的第 二半的第二半是否包括至少一個非零值。如果當前行的第二半的第一半包括至少一個非零值(例如,如果其由單個非零值 組成,或者由包括至少一個非零值在內的兩個值組成),則所述引擎對所述行的第二半 的第一半的數據值執行(在步驟48中)行變換計算,並將所得到的經變換數據存儲(在 步驟50中)於緩衝存儲器中。用於執行步驟50的緩衝存儲器可為耦接至圖2所示電 路11的輸出端的緩衝存儲器(如果電路11執行圖4的流程圖),或者圖2的緩衝存儲 器9 (如果電路7執行圖4的流程圖)。如果當前行第二半的第一半不包括非零值,則所述引擎執行步驟49,其中其(a) 輸出一個或多個零來指示當前行第二半的第一半的經行變換版本(而不對 所述數據值或當前行第二半的第一半的值執行實際的行變換計算)。然後,將每一此種 零值存儲(在步驟50中)於緩衝存儲器中;或(b) 輸出通過以降低功率的方式對當前行第二半的第一半的數據值執行行變換 計算所產生的至少一個數據值。辨後,將每一此種數據值存儲(在步驟50中)於緩衝 存儲器中。例如,所述引擎可通過如下方式進行此種作業操作具有第一輸入端集合(包括至少一個輸入端)及第二輸入端集合(包括至少一個輸入端)的乘法電路,對 所述第一輸入端集合確定至少一個常數且對所述第二輸入端集合確定當前行第二半的 第一半的每一數據值,以對當前行第二半的第一半的每一數據值執行至少乘法運算,而不更新對第一輸入端集合與第二輸入端集合中至少一者所確定的值,以避免消耗功 率一而原本對所述乘法電路的相關輸入端進行雙態轉換則會消耗功率。在所述引擎正 在執行IDCT的情況下,對第一輸入端集合確定的每一常數均為餘弦常數,且在一種 實施方案中,每當對第二輸入端集合確定的數據值是零值時,所述引擎均阻止更新(相 對於其先前值發生變化)要乘以所述零值的餘弦常數,因為無論所述餘弦常數的值如 何,所述乘法的結果均將為0。在另一實施方案中,所述引擎阻止更新對第一輸入端 集合所確定的餘弦常數(要乘以零數據值),並阻止更新對第二輸入端集合中對應輸入 端所確定的數據值(以阻止任一乘法器輸入端的雙態轉換),並確定一零值(例如將零 值多路復用至處理管線的輸出端)以指示將所述零數據值乘以所述餘弦常數的結果(而 不實際將這兩個操作數相乘在一起);或 (C)輸出一個或多個零來指示當前行第二半的第一半中至少一個值的經行變換 版本(而不對這一或這些數據值執行實際的行變換計算),並輸出通過以降低功率方式 對當前行第二半的第一半中至少一個其他數據值執行行變換計算而產生的至少一個數據值。然後,將每一此種零值及輸出值存儲(在步驟50中)於緩衝存儲器中。如果當前行第一半的第二半包括至少一個非零值(例如,如果其由單個非零值組成或者由包括至少一個非零值在內的兩個值組成),則所述引擎對所述行的第二半的第二半的數據值執行(在步驟46中)行變換計算,並將所得到的經變換數據存儲(在步驟50中)於緩衝存儲器中。如果當前行的第二半的第二半不包括非零值,則所述引擎執行步驟47,其中其(a) 輸出一個或多個零來指示當前行第二半的第二半的經行變換版本(而不對 所述數據值或當前行第二半的第二半的值執行實際的行變換計算)。然後,將每一此種 零值存儲(在步驟50中)於緩衝存儲器中;或(b) 輸出通過以降低功率的方式對當前行第二半的第二半的數據值執行行變換 計算所產生的至少一個數據值。然後,將每一此種數據值存儲(在步驟50中)於緩衝 存儲器中。例如,所述引擎可通過如下方式進行此種作業操作具有第一輸入端集合(包括至少一個輸入端)及第二輸入端集合(包括至少一個輸入端)的乘法電路,對 所述第一輸入端集合確定至少一個常數且對所述第二輸入端集合確定當前^^第二半的 第二半的每一數據值,以對當前行第二半的第二半的每一數據值執行至少乘法運算, 而不更新對第一輸入端集合與第二輸入端集合中至少一者所確定的值,以避免消耗功 率一而原本對所述乘法電路的相關輸入端進行雙態轉換則會消耗功率。在戶萬述引擎正 在執行IDCT的情況下,對第一輸入端集合確定的每一常數均為餘弦常數,且在一種 實施方案中,每當對第二輸入端集合確定的數據值是零值時,所述引擎均阻止更新(相 對於其先前值發生變化)要乘以所述零值的餘弦常數,因為無論所述餘弦常數的值如 何,所述乘法的結果均將為零。在另一實施方案中,所述引擎阻止更新對第一輸入端 集合所確定的餘弦常數(要乘以零數據值),並阻止更新對第二輸入端集合中對應輸入 端所確定的數據值(以阻止兩個乘法器輸入端中的任一個雙態轉換),並確定一零值(例 如將零值多路復用至處理管線的輸出端)以指示將所述零數據值乘以所述餘弦常數的 結果(而不實際將這兩個操作數相乘在一起);或(c) 輸出一個或多個零來指示當前行第二半的第二半中至少一個值的經行變換 版本(而不對這一或這些數據值執行實際的行變換計算),並輸出通過以降低功率方式 對當前行第二半的第二半中至少一個其他數據值執行行變換計算而產生的至少一個數 據值。然後,將每一此種零值及輸出值存儲(在步驟50中)於緩衝存儲器中。當在步驟46及48、步驟46及49、步驟47及48、或者步驟47及49中所產生或 確定的所有數據值均已存儲(步驟50)於緩衝存儲器中之後,所述引擎判定(在步驟 52中)是否已對當前塊中的所有行執行行變換。如果已對當前塊中的所有行執行行變 換,則所述引擎進入一種使其停止行變換運算的狀態(步驟54)。然後,其可再次執
行步驟20,以開始處理所要執行的下一數據值塊。如果尚未對當前塊中的所有行執行 行變換,則所述引擎從緩衝存儲器中讀取(所要變換的當前塊)的下一行(再一次執 行步驟22)。圖5是在實施本發明的圖2所示電路7 (或電路ll)的典型實施方案中所用變換 電路的方塊圖。設計用於變換4x4數據塊的電路7 (或ll)的實施方案將通常包括一 個單元的圖5所示電路,以用於變換所要變換的每一行或列的四個數據值10、 II、 12 及B。設計用於變換8x8數據塊的電路7 (或ll)的實施方案將通常包括兩個單元的 圖5所示電路 一個用於變換所要變換的每一行或列的第一半的四個數據值IO、 II、 12及I3;及完全相同的一個,以用於變換所要變換的每一行或列的第二半的四個數據 值(14、 15、 16及17)(使用第二組餘弦常數C4、 C5、 C6及C7取代圖5中所示的常 數CO、 Cl、 C2及C3)。圖5所示的每一乘法單元M1、 M2、 M3及M4均包括一第一輸入端(對其確定 餘弦常數CO、 Cl、 C2及C3中的一個)、 一第二輸入端(對其確定數據值IO、 II、 12 及13中的一個)、以及一輸出端,其在所述輸出端上確定一標識這兩個操作數的乘積 的數據值。圖5所示電路還包括如圖所示連接的預處理及控制邏輯100 (將稱作預處 理邏輯100)、加法電路A1、 A2、 A3、 A4及A5、減法電路S1、及延遲電路A及B (構建為正反器),且經配置以對對其確定的每一組四個輸入值執行管線式行變換或列 變換,以響應於每一輸入值而產生一輸出值Y0 (或Yl)。在運行期間,延遲電路A 通常使將加法電路A3的輸出確定至加法電路A5、減法電路S1、及加法電路A3中每 一被選定者(由邏輯電路100所確定的控制信號來確定)延遲一個管線式變換循環。 在運行期間,延遲電路B通常使將加法電路A4的輸出確定至加法電路A5、減法電路 Sl、及加法電路A4中每一被選定者(由邏輯電路IOO所確定的控制信號來確定)延 遲一個管線式變換循環。當在經設計以變換4x4數據塊的電路7 (或ll)的實施方案中包含圖5所示電路 時,處理邏輯100經配置以執行圖4所示的零(或非零)值判定運算。當在經設計以 變換8x8數據塊的電路7 (或ll)的實施方案中包含兩個圖5所示單元時,每一單元 100均經配置以對所要變換的每一數據行或列的一不同子集(例如一半)執行圖4所 示的零(或非零)值判定運算。在電路7 (或ll)的任一實施方案中,預處理邏輯IOO 均經配置以從相關緩衝存儲器(例如圖2所示緩衝器9或者耦接至圖2所示電路7的 輸入端的緩衝存儲器)中讀取所要變換的輸入數據值,並產生(並確定至圖5中其他 元件中的適當元件)為執行圖4所要求的其他作業所需的控制信號。例如,如果邏輯 IOO判定係數IO是零值(例如在圖4的步驟30中),則其可確定一控制信號,以使在 前一操作循環期間確定至乘法器Ml的係數CO在其中乘法器Ml要將零值係數10乘 以常數的每一後續循環期間繼續確定至乘法器M1。在典型實施方案中,預處理邏輯100在接收(例如從緩衝器9)到所要變換的每 一組四個新輸入數據值時均將輸出值Y0及Y1復位至零。在此種情形中,當預處理邏 輯100響應於其中一個輸入值而判定應輸出零值(即Y0或Y1的零值)時(例如在圖 4的步驟25、 28、 41、 35、 37、 47、或49中),其可在其中電路元件M1、 M2、 M3、 M4、 Al、 A2、 A3、 A4、 A、 B、 A5、及SI原本將運行來變換該輸入值的循環期間阻 止這些元件的輸入端的所有雙態轉換,並轉而使Y0 (或Y1)的復位後的零值確定至 相關緩衝器(例如確定至緩衝存儲器9或耦接至電路11的輸出端)。在需要對所要變換的數據值重新排序的實施例中,預處理單元100較佳經配置以 執行此種重新排序。例如,為執行類似於參照圖4所述的變換、但其中每一判定半行 或半列(或半行或半列的一半)的第一 (或第二)半中的數據值是否包括至少一個非 零值的步驟被取代為判定半行或半列(或半行或半列的一半)中的偶數(或奇數)數 據值是否包括至少一個非零值的步驟,預處理單元100可將所要評估的數據值重新排 序,以便執行所要求的判定。例如,單元100可判定經重新排序的半行或經重新排序 的半列(或經重新排序的半行或經重新排序的半列的一半)的第一 (或第二)半中的 數據值是否包括至少一個非零值,從而判定所述半行或半列的未重新排序的版本(或 半行或半列的未重新排序的版本的一半)中的偶數(或奇數)數據值是否包括至少一 個非零值。預期預處理單元100的某些實施方案可對行或列(或不完整的行或不完整 的列)的並非為半行(或不完整半行)或半列(或不完整半列)的子集執行重新排序。圖6是本發明管線式視頻解碼系統的一實施例中各元件的方塊圖。涵蓋圖6所示 設計的用於本發明其他實施例中的實施方案的各種變化形式(例如可省略零檢測電路 132、 134及135-138,且其功能可由零檢測電路130或其他零檢測電路執行)。圖6中 的系統包括如圖所示相連接的預處理單元120、變換引擎122及後處理單元124。單元120耦接成接收一系列輸入數據值塊(例如已通過對視頻像素塊執行二維 DCT或反DCT或其他2D變換而產生的輸入頻域係數)。單元120還耦接成在圖6所 示系統中經過第一遍之後接收從後處理單元124輸出的數據值(在圖6中標識為"來 自第一級的輸出"及"第一級輸出"),以使這些數據值(其視需要在從單元124輸出 之後及確定至單元120之前在緩衝存儲器中進行緩衝)可在圖6所示電路中經過第二 遍期間經歷第二級處理(例如,以在各數據值列在圖6所示系統中經過第一遍期間已 經歷列變換時對數據值行執行行變換)。單元120的多路復用器129選擇輸入數據值(尚未經歷圖6中的處理)或者從後 處理單元124輸出的數據值(已在前一遍經過圖6所示系統時經受處理),並將所選值 確定至零檢測邏輯130。使所選值經過零檢測邏輯130(視需要,當邏輯130判定所選 值完全由零值組成時除外)。然後,視需要,單元120內的其他電路對直通過邏輯130 的值執行初步處理作業,以產生經預處理的數據值(這些作業是在需要時執fi^以實施 將要使用圖6所示系統實施的特定變換)。單元120將經預處理的數據值(如果不對邏 輯130的輸出執行初步處理,則其與邏輯130的輸出完全相同)確定至變換引擎122。預處理單元120通常經配置以將對其確定的每一數據值集合分成適於由引擎122 執行所要實施的變換的子集。單元120分離成子集的進行方式將依賴於所要實施的變 換(例如8x8DCT, 8x8IDCT,或者8x8哈達瑪),並可取決於從外部單元確定至單 元120的控制信號,以便可根據所要實施的變換來定製子集選擇。變換引擎122對其從單元120接收的每一數據值塊執行2D變換,以產生經變換 的數據值塊(例如局部經解碼的視頻像素塊),並將已變換的數據值確定至後處理單元 124以供視需要進一步處理。更具體而言,變換引擎122經配置以對從單元120對其 確定的每一組四個數據值執行管線式行變換或列變換,以因應這四個數據值中的每一 者而產生輸出值。此種每一組四個數據值均通常為一數據值塊中的一行(或列),或者 一數據值塊中一行(或列)的子集。後處理單元124視需要(即當適合於圖6所示系統正執行的特定變換時)對從引 擎122接收的已變換值執行後處理作業,以產生輸出數據值。所述輸出數據值可從單 元124確定至系統總線及/或反饋至單元120的至少一個輸入端(或反饋至其被確定至 單元120的至少一個輸入端時所來自的緩衝存儲器)。通常,單元124執行捨入、飽和、 及最終填充(如果需要)。單元124所執行的具體後處理作業依賴於圖6所示電路是正 在對單元122的輸入執行第一級還是第二級處理。圖6所示變換引擎122經設計以變換4x4數據塊,包括通過使用一組常數CO、 Cl、 C2及C3來變換所要變換的每一行或列的四個數據值(10、 II、 12、及13)。在本 發明的某些其他實施例中,用於變換8x8數據塊的電路將包括兩個變換引擎122: — 個引擎用於變換所要變換的每一行或列的第一子集(例如第一半)的四個數據值IO、 II、 12及I3;及完全相同的一引擎,用於變換所要變換的每一行或列的第二子集(例 如第二半)的四個數據值(14、 15、 16及17)(使用第二組常數C4、 C5、 C6及C7取 代圖6中塊122所示的常數C0、 Cl、 C2及C3)。所要使用的常數(例如C0、 Cl、 C2及C3)可由從外部單元確定至引擎122的控制信號決定,以便可根據所要執行的 變換來定製常數選項。通常,預處理單元120的零檢測邏輯130經配置以判定所要變 換的整個數據塊是否完全由零值組成(所要變換的4x4數據塊的所有四個行或列完全 由零值組成)。例如,其可包括移位寄存器,以提供足夠的延遲在將塊中的第一行(列) 傳送至下遊電路之前對所述塊的所有行(列)執行此種判定。在判斷出所述塊完全由 零值組成後,邏輯130將適當的控制位確定至圖6所示系統的其他元件,所述系統元 件使得繞過(例如如上文所述)原本將由引擎122隨後對所述塊執行的變換運算,並 通常還使得響應於所述塊而從單元124的多路復用器139輸出預定值(例如零),而不 由引擎122與單元124中的一者或兩者對所述塊的值執行實際的變換運算。無論預處理單元120的零檢測邏輯130是否如在前一段中所述配置成判定整個數 據塊是否完全由零值組成,邏輯130均配置成對從多路復用器129確定至邏輯130的 每一單獨行(或列)的數據值執行零檢測,以判定是否此一行(或列)的所有數據值 均為零值(即其執行圖4中的步驟24)。當每一此種行(或列)均由四個數據值組成 時,邏輯130判定所述行(列)是否由四個零位組成。如果邏輯130判定一行(列) 完全由零位組成時,其確定適當的控制位,所述適當的控制位使得繞過原本隨後將由 引擎122對所述行(或列)執行的變換運算,並通常還響應於所述行(列)而使得從 單元124的多路復用器139輸出預定值(例如零),而不由引擎122與單元124中的一 者或兩者對所述行(列)的值執行實際變換運算。在某些實施方案中,邏輯130判定是否從多路復用器129對其確定的每一單獨數 據值行(或列)的第一數據值是非零值、而所述行(或列)的所有其他值均為零值。 響應於識別出一行(列)除初始非零值之外由零值組成,邏輯130的此一實施方案確 定適當的控制位,所述適當的控制位使得繞過原本隨後將由引擎122對所述行(或列) 執行的變換運算,並通常還響應於所述行(列)而使得從單元124的多路復用器139 輸出預定值(例如零),而不由引擎122與單元124中的一者或兩者對所述行(列)的 值執行實際變換運算。引擎122的零檢測邏輯132經配置以對從單元120對引擎122確定的每一行(或 列)的第一子集(例如第一半,其為前兩個數據值)執行零檢測,以判定是否此一第 一子集的所有數據值均為零值(例如,其執行圖4中的步驟26)。如果邏輯132判定 第一子集(例如半行或半列)完全由零位組成,則其確定適當的控制位,所述適當的 控制位使得繞過原本隨後將由引擎122對第一子集執行的變換運算,並通常還響應於 所述第一子集而使得從引擎122的多路復用器140輸出預定值(例如零),而不由引擎 122對所述第一子集的值執行實際變換運算。如果邏輯132判定出當前行(列)的第 一子集(例如第一半)包括至少一個非零值,則零檢測邏輯單元135及136對第一子 集的第一及第二值執行零檢測。如果邏輯135判定當前行(列)的第一子集的第一數據值是零值,則其對乘法電 路141 (變換常數CO確定至其第一輸入端,且當前行或列的零數據值確定至其第二輸 入端)確定一控制位,以使電路141對確定至其第二輸入端的值執行乘法運算,而不 更新先前確定至其第一輸入端的值,以避免消耗功率一而原本為將第一輸入端雙態轉 換至常數CO的已更新的值則會消耗功率。類似地,如果邏輯136判定當前行(列)的第一子集的第二數據值是零值,則其 對乘法電路142 (變換常數Cl確定至其第一輸入端,且當前行或列的該零數據值確定 至其第二輸入端)確定一控制位,以使電路142對確定至其第二輸入端的值執行乘法 運算,而不更新先前確定至其第一輸入端的值,以避免消耗功率一而原本為將第一輸 入端雙態轉換至常數C1的已更新的值則會消耗功率。引擎122的零檢測邏輯134經配置以對從單元120對引擎122確定的每一行(或 列)的第二子集(例如第二半,其為第二兩個數據值)執行零檢測,以判定是否此第 二子集的所有數據值均為零值(例如,其執行圖4中的步驟40)。如果邏輯134判定 第二子集完全由零位組成,則其確定適當的控制位,所述適當的控制位使得繞過原本 隨後將由引擎122對第二子集(例如半行或半列)執行的變換運算,並通常還響應於 所述第二子集而使得從引擎122的多路復用器141輸出預定值(例如零),而不由引擎 122對所述第二子集的值執行實際變換運算。如果邏輯134判定出當前行(列)的第 二子集包括至少一個非零值,則零檢測邏輯單元137及138對第二子集的第一及第二 值執行零檢測。如果邏輯137判定當前行(列)的第二子集的第一數據值是零值,則其對乘法電 路143 (變換常數C2確定至其第一輸入端,且當前行或列的零數據值確定至其第二輸 入端)確定一控制位,以使電路143對確定至其第二輸入端的值執行乘法運算,而不 更新先前確定至其第一輸入端的值,以避免消耗功率一而原本為將第一輸入端雙態轉 換至常數C2的己更新的值則會消耗功率。類似地,如果邏輯138判定當前行(列)的第二子集的第二數據值是零值,則其 對乘法電路144 (變換常數C3確定至其第一輸入端,且當前行或列的該零數據值確定 至其第二輸入端)確定一控制位,以使電路144對確定至其第二輸入端的值執行乘法 運算,而不更新先前確定至其第一輸入端的值,以避免消耗功率—而原本為將第一輸 入端雙態轉換至常數C3的已更新的值則會消耗功率。在運行期間控制圖6中的每一多路復用器129、 140、 141、 150、 151、 152及153, 以在圖6所示系統的當前管線式作業循環期間使被確定至其輸入端上的其中一個值直 通至其輸出端。圖6所示的每一電路156及157均為加法電路,其在運行期受到控制, 以在圖6所示系統的當前作業循環期間在其輸出端上確定被確定至其輸入端的值的 和。圖6所示電路154及155是延遲電路(構建為正反器),其具有適合由圖6所示系 統執行的具體變換的延遲。本發明的某些替代實施例由與圖6相同的電路組成或包括所述電路,只是省略了 圖6中的邏輯電路132、 134、 135、 136、 137及138,且所省略電路的功能由圖6中 邏輯電路130的修改型式來執行。具體而言,邏輯130的此種修改型式通常將經配置 以判定所要變換的整個數據塊是否完全由零值組成(即所要變換的4x4數據塊的所有 四個行或列是否完全由零值組成)、所要變換的塊的每一行(或列)數據的每一半是否 完全由零值組成、及所要變換的塊的每一半行(或列)數據的每一數據值是否為零值, 並響應於這些判定而(對系統的其他元件)確定由圖6所示邏輯電路130、 132、 134、 135、 136、 137、及138所確定的上述類型的控制信號。圖6所示系統可為可攜式媒體播放器或另一種可攜式數據處理系統(或並非打算 為可攜式的數據處理系統,例如具有視頻解碼能力的系統)的子系統。此種媒體播放 器或其他處理系統可以且通常將包括圖6中所未顯示的其他元件。應了解,為將本發明的各種實施例構建成對具有諸多不同格式中任何格式的數據 塊執行諸多不同2D變換中的任何變換,將構建參照圖4所示及所述的具體步驟以及 參照圖5及6所示及所述的具體結構的變化形式。還應了解,儘管在本文中是例示及說明本發明的某些實施例,然而本發明是由申 請專利範圍界定且不受限於本文所述及所示的具體實施例。
權利要求
1.一種經配置以對輸入數據塊序列中的每一輸入數據塊執行2D變換的系統,其中每一所述輸入數據塊均包含輸入數據值行及列,且所述2D變換包含行變換及列變換,所述系統包括行變換電路,其經配置以響應於每一所述輸入數據塊通過對所述輸入數據塊的每一行執行所述行變換而產生經局部變換數據塊;及列變換電路,其經配置以對所述經局部變換數據塊的每一列執行所述列變換,其中所述行變換電路經配置以在對每一所述行執行所述行變換時判定構成所述行的分區的所述數據值的每一不同子集是否包括至少一個零值、所述行的分區的子集中的第一子集的每一不同子集是否包括至少一個零值、及所述行的分區的子集中的第二子集的每一不同子集是否包括至少一個零值,及所述行變換電路經配置以繞過或以降低功率的方式對所述數據值中被判定為零值的至少一者執行至少一個變換運算。
2. 如權利要求1所述的系統,其中所述行變換電路經配置以繞過對所述數據值中 被判定為零值的所述至少一者的所述至少一個變換運算。
3. 如權利要求1所述的系統,其中所述行變換電路經配置而以降低功率的方式對 所述數據值中被判定為零值的所述至少一者執行所述至少一個變換運算。
4. 如權利要求3所述的系統,其中所述行變換電路包括至少一個具有輸入端集合 的電路,且所述行變換電路經配置以通過如下作業以所述降低功率的方式執行所述至 少一個變換運算使所述電路運行,而在對所述數據值中被判定為零值的所述一者的所述變換運算期間不更新所述輸入端集合中的至少一個輸入端。
5. 如權利要求l所述的系統,其中所述2D變換是離散餘弦反變換。
6. 如權利要求1所述的系統,其還包括緩衝器,其耦接至所述行變換電路及所述列變換電路,其中所述行變換電路經配 置以將所述經局部變換數據塊存儲於所述緩衝器中,且所述列變換電路經配置以從所 述緩衝器中檢索所述經局部變換數據塊的列。
7. 如權利要求6所述的系統,其中所述列變換電路經配置以在對每一所述列執行 所述列變換時判定構成所述列的第一分區的所述數據值的每一不同子集是否包括至少 一個零值、所述列的第一分區的子集中的第一子集的每一不同子集是否包括至少一個 零值、及所述列的第一分區的子集中的第二子集的每一不同子集是否包括至少一個零 值,及所述列變換電路經配置以繞過對所述數據值中被判定為零值的至少一者的至少 一個變換運算。
8. 如權利要求6所述的系統,其中所述列變換電路經配置以在對每一所述列執行所述列變換時判定構成所述列的第一分區的所述數據值的每一不同子集是否包括至少 一個零值、所述列的第一分區的子集中的第一子集的每一不同子集是否包括至少一個 零值、及所述列的第一分區的子集中的第二子集的每一不同子集是否包括至少一個零 值,及所述列變換電路經配置而以降低功率的方式對所述數據值中被判定為零值的至 少一者執行至少一個變換運算。
9. 如權利要求8所述的系統,其中所述列變換電路包括至少一個具有輸入端集合 的電路,且所述列變換電路經配置以通過如下作業以所述降低功率的方式執行所述至少一個變換運算使所述電路運行,而在對所述數據值中被判定為零值的所述一者的所述變換運算期間不更新所述輸入端集合中的至少一個輸入端。
10. 如權利要求l所述的系統,其中每一所述行包括值;c,.,其中/是處於(KKN-l 範圍內的整數,且N為偶數整數,所述行的分區包括第一數據值子集與不同於所述第 一子集的第二數據值子集,所述第一子集的分區包括第三數據值子集與不同於所述第三子集的第四子集,且所述第二子集的分區包括第五數據值子集及不同於所述第五子 集的第六子集,及其中所述行變換電路經配置以在對每一所述行執行所述行變換時判定所述第一 子集是否完全由零值組成且所述第二子集是否完全由零值組成,且在判定所述第一子 集完全由零值組成時繞過對所述第一子集中所述數據值的至少一個所述變換運算,且 在判定所述第二子集完全由零值組成時繞過對所述第二子集中所述數據值的至少一個 所述變換運算。
11. 如權利要求IO所述的系統,其中所述行變換電路經配置以在當對每一所述行 執行所述行變換時判定所述第一子集與所述第二子集中的每一者均包括至少一個非零 值時,判定所述第三子集、所述第四子集、所述第五子集、及所述第六子集中的每一 者是否完全由零值組成。
12. 如權利要求11所述的系統,其中所述第三子集由所述第一子集的偶數值組成,所述第四子集由所述第一子集的奇數值組成,所述第五子集由所述第二子集的偶 數值組成,且所述第六子集由所述第二子集的奇數值組成。
13. 如權利要求1所述的系統,其中所述行變換電路經配置以在對每一所述行執 行所述行變換時執行重新排序作業,其中所述重新排序作業通過對所述行的數據值進 行重新排序來產生經重新排序的數據值,且所述行變換電路經配置以判定所述經重新 排序的數據的第一子集是否包括至少一個零值及所述經重新排序的數據的第二子集是 否包括至少一個零值,其中所述經重新排序的數據的第二子集不同於所述經重新排序 的數據的第一子集。
14. 一種經配置以對輸入數據塊序列中的每一輸入數據塊執行2D變換的系統, 其中每一所述輸入數據塊均包含輸入數據值行及列,且所述2D變換包含行變換及列 變換,所述系統包括列變換電路,其經配置以響應於每一所述輸入數據塊通過對所述輸入數據塊的每一列執行所述列變換而產生經局部變換數據塊;及行變換電路,其經配置以對所述經局部變換數據塊的每一行執行所述行變換, 其中所述列變換電路經配置以在對每一所述列執行所述列變換時判定構成所述列的分區的所述數據值的每一不同子集是否包括至少一個零值、所述列的分區的子集中的第一子集的每一不同子集是否包括至少一個零值、及所述列的分區的子集中的第二子集的每一不同子集是否包括至少一個零值,及所述列變換電路經配置以繞過或以降低功率的方式對所述數據值中被判定為零值的至少一者執行至少一個變換運算。
15. 如權利要求14所述的系統,其中所述列變換電路經配置以繞過對所述數據值 中被判定為零值的所述至少一者的所述至少一個變換運算。
16. 如權利要求14所述的系統,其中所述列變換電路經配置而以降低功率的方式 對所述數據值中被判定為零值的所述至少一者執行所述至少一個變換運算。
17. 如權利要求16所述的系統,其中所述列變換電路包括至少一個具有輸入端集 合的電路,且所述列變換電路經配置以通過如下作業以所述降低功率的方式執行所述 至少一個變換運算使所述電路運行,而在對所述數據值中被判定為零值的所述一者的所述變換運算期間不更新所述輸入端集合中的至少一個輸入端。
18. 如權利要求14所述的系統,其中所述2D變換是離散餘弦反變換。
19. 如權利要求14所述的系統,其還包括緩衝器,其耦接至所述行變換電路及所述列變換電路,其中所述列變換電路經配 置以將所述經局部變換數據塊存儲於所述緩衝器中,且所述行變換電路經配置以從所 述緩衝器中檢索所述經局部變換數據塊的列。
20. 如權利要求14所述的系統,其中每一所述列包括值;c,.,其中z'是處於(KZ^N-1 範圍內的整數,且N為偶數整數,所述列的分區包括第一數據值子集與不同於所述第 一子集的第二數據值子集,所述第一子集的分區包括第三數據值子集與不同於所述第 三子集的第四子集,且所述第二子集的分區包括第五數據值子集及不同於所述第五子 集的第六子集,及其中所述列變換電路經配置以在對每一所述列執行所述列變換時判定所述第一 子集是否完全由零值組成且所述第二子集是否完全由零值組成,且在判定所述第一子 集完全由零值組成時繞過對所述第一子集中所述數據值的至少一個所述變換運算,且 在判定所述第二子集完全由零值組成時繞過對所述第二子集中所述數據值的至少一個 所述變換運算。
21. 如權利要求20所述的系統,其中所述列變換電路經配置以在當對每一所述列 執行所述列變換時判定所述第一子集與所述第二子集中的每一者均包括至少一個非零 值時,判定所述第三子集、所述第四子集、所述第五子集、及所述第六子集中的每一 者是否完全由零值組成。
22. 如權利要求21所述的系統,其中所述第三子集由所述第一子集的偶數值組 成,所述第四子集由所述第一子集的奇數值組成,所述第五子集由所述第二子集的偶 數值組成,且所述第六子集由所述第二子集的奇數值組成。
23. 如權利要求14所述的系統,其中所述列變換電路經配置以在對每一所述列執 行所述列變換時執行重新排序作業,其中所述重新排序作業通過對所述列的數據值進 行重新排序來產生經重新排序的數據值,且所述列變換電路經配置以判定所述經重新 排序的數據的第一子集是否包括至少一個零值及所述經重新排序的數據的第二子集是 否包括至少一個零值,其中所述經重新排序的數據的第二子集不同於所述經重新排序 的數據的第一子集。
24. —種用於對輸入數據塊序列執行2D變換的方法,其中所述塊中的每一者均 包括輸入數據值行及列,且所述2D變換包括行變換及列變換,所述方法包括如下步 驟(a)對所述輸入數據塊中一者的每一行執行所述行變換,包括通過對每一所述 行的輸入數據值執行變換運算,以產生經局部變換數據塊;及(b)對所述經局部變換數據塊的每一列執行所述列變換,包括通過對每一所述 列的數據值執行其他變換運算,其中步驟(a)包括如下步驟(C)判定構成每一所述行的分區的所述數據值的每一不同子集是否包括至少一 個零值,判定所述分區的第一子集的每一不同子集是否包括至少一個零值,及判定所 述分區的至少一個其他子集的每一不同子集是否包括至少一個零值;及(d)當對被判定包含至少一個零值及至少一個非零值的每一所述行執行所述行 變換時,繞過或以降低功率的方式對所述輸入數據值中被判定為零值的至少一者執行 所述變換運算中的至少一者,其中假如所述零值為非零值,則原本將以消耗全功率的 方式執行所述變換運算中的所述一者。
25. 如權利要求24所述的方法,其中步驟(a)包括如下步驟操作具有第一輸入端及第二輸入端的乘法電路以執行乘法運算,其中將確定至所述第一輸入端的第一值乘以確定至所述第二輸入端的第二值,且其中步驟(d)包括如下步驟通過阻止所述第一輸入端與所述第二輸入端中至少一者的雙態轉換來以降低功率的方式對所述輸 入數據值中被判定為零值的所述至少一者執行所述乘法運算。
26. 如權利要求24所述的方法,其中步驟(d)包括如下步驟當對被判定為包括至少一個零值及至少一個非零值的每一所述行執行所述行變換時,繞過對所述輸入 數據值中被判定為零值的所述至少一者的所述變換運算中的所述至少一者。
27. 如權利要求24所述的方法,其中步驟(b)包括如下步驟判定構成每一所述列的第一分區的所述數據值的每一不同子集是否包括至少一 個零值,判定所述第一分區的第一子集的每一不同子集是否包括至少一個零值,及判定所述第一分區的至少一個其他子集的每一不同子集是否包括至少一個零值;及當對被判定為包括至少一個零值及至少一個非零值的每一所述列執行所述列變 換時,繞過對所述數據值中被判定為零值的至少一者的所述其他變換運算中的至少一 者,其中假如所述零值為非零值,則原本將以消耗全功率的方式執行所述其他變換運 算中的所述一者。
28. 如權利要求24所述的方法,其中步驟(b)包括如下步驟 判定構成每一所述列的第一分區的所述數據值的每一不同子集是否包括至少一個零值,判定所述第一分區的第一子集的每一不同子集是否包括至少一個零值,及判 定所述第一分區的至少一個其他子集的每一不同子集是否包括至少一個零值;及當對被判定包含至少一個零值及至少一個非零值的每一所述列執行所述列變換 時,以降低功率的方式對所述數據值中被判定為零值的至少一者執行所述其他變換運 算中的至少一者,其中假如所述零值為非零值,則原本將以消耗全功率的方式執行所 述其他變換運算中的所述一者。
29. 如權利要求24所述的方法,其中每一所述塊均為DCT係數塊,所述DCT系 數已通過對視頻數據執行DCT而產生,且所述2D變換是離散餘弦反變換。
30. 如權利要求24所述的方法,其中所述序列中至少大致上所有塊為稀疏數據塊。
31. —種用於對輸入數據塊序列執行2D變換的方法,其中所述塊中的每一者均 包括輸入數據值行及列,且所述2D變換包括行變換及列變換,所述方法包括如下步驟(a) 對所述輸入數據塊中一者的每一行執行所述行變換,包括通過對每一所述 行的輸入數據值執行變換運算,以產生經局部變換數據塊;及(b) 對所述經局部變換數據塊的每一列執行所述列變換,包括通過對每一所述 列的數據值執行其他變換運算,其中步驟(b)包括如下步驟(c) 判定構成每一所述列的分區的所述數據值的每一不同子集是否包括至少一 個零值,判定所述分區的第一子集的每一不同子集是否包括至少一個零值,及判定所 述分區的至少一個其他子集的每一不同子集是否包括至少一個零值;及(d) 當對被判定包含至少一個零值及至少一個非零值的每一所述列執行所述列 變換時,繞過或以降低功率的方式對所述數據值中被判定為零值的至少一者執行所述 其他變換運算中的至少一者,其中假如所述零值為非零值,則原本將以消耗全功率的 方式執行所述其他變換運算中的所述一者。
32. 如權利要求31所述的方法,其中步驟(b)包括如下步驟操作具有第一輸 入端及第二輸入端的乘法電路以執行乘法運算,其中將確定至所述第一輸入端的第一 值乘以確定至所述第二輸入端的第二值,且其中步驟(d)包括如下步驟通過阻止所 述第一輸入端與所述第二輸入端中至少一者的雙態轉換,以降低功率的方式對所述輸 入數據值中被判定為零值的所述至少一者執行所述乘法運算。
33. 如權利要求31所述的方法,其中步驟(d)包括如下步驟當對被判定為包括至少一個零值及至少一個非零值的每一所述列執行所述列變換時,繞過對所述數據 值中被判定為零值的所述至少一者的所述其他變換運算中的所述至少一者。
34. 如權利要求31所述的方法,其中每一所述塊均為DCT係數塊,所述DCT系 數已通過對視頻數據執行DCT而產生,且所述2D變換是離散餘弦反變換。
35. 如權利要求31所述的方法,其中所述序列中至少大致上所有塊為稀疏數據塊。
36. —種視頻處理系統,其包括經配置以對輸入數據塊序列中的每一輸入數據塊 執行2D變換的變換引擎,其中每一所述輸入數據塊均包含輸入數據值行及列,且所 述2D變換包含行變換及列變換,所述變換引擎包括行變換電路,其經配置以響應於每一所述輸入數據塊通過對所述輸入數據塊的每 一行執行所述行變換而產生經局部變換數據塊;及列變換電路,其經配置以對所述經局部變換數據塊的每一列執行所述列變換,其中所述行變換電路經配置以在對每一所述行執行所述行變換時判定構成所述 行的分區的所述數據值的每一不同子集是否包括至少一個零值、所述行的分區的第一 子集的每一不同子集是否包括至少一個零值、及所述行的分區的至少一個其他子集的 每一不同子集是否包括至少一個零值,及所述行變換電路經配置以繞過或以降低功率的方式對所述數據值中被判定為零 值的至少一者執行至少一個變換運算。
37. 如權利要求36所述的系統,其中所述行變換電路經配置以繞過對所述數據值 中被判定為零值的所述至少一者的所述至少一個變換運算。
38. 如權利要求36所述的系統,其中所述行變換電路經配置而以降低功率的方式 對所述數據值中被判定為零值的所述至少一者執行所述至少一個變換運算。
39. 如權利要求38所述的系統,其中所述行變換電路包括至少一個具有輸入端集 合的電路,且所述行變換電路經配置以通過如下作業以所述降低功率的方式執行所述 至少一個變換運算使所述電路運行,而在對所述數據值中被判定為零值的所述一者的所述變換運算期間不更新所述輸入端集合中的至少一個輸入端。
40. 如權利要求36所述的系統,其中所述2D變換是離散餘弦反變換。
41. 如權利要求36所述的系統,其中所述變換引擎還包括-緩衝器,其耦接至所述行變換電路及所述列變換電路,其中所述行變換電路經配 置以將所述經局部變換數據塊存儲於所述緩衝器中,且所述列變換電路經配置以從所 述緩衝器中檢索所述經局部變換數據塊的列。
42. 如權利要求41所述的系統,其中所述列變換電路經配置以在對每一所述列執 行所述列變換時判定構成所述列的第一分區的所述數據值的每一不同子集是否包括至少一個零值、所述列的第一分區的第一子集的每一不同子集是否包括至少一個零值、 及所述列的第一分區的至少一個其他子集的每一不同子集是否包括至少一個零值,及 所述列變換電路經配置以繞過對所述數據值中被判定為零值的至少一者的至少 一個變換運算。
43. 如權利要求42所述的系統,其中所述列變換電路經配置以在對每一所述列執 行所述列變換時判定構成所述列的第一分區的所述數據值的每一不同子集是否包括至 少一個零值、所述列的第一分區的第一子集的每一不同子集是否包括至少一個零值、 及所述列的第一分區的至少一個其他子集的每一不同子集是否包括至少一個零值,及所述列變換電路經配置而以降低功率的方式對所述數據值中被判定為零值的至 少一者執行至少一個變換運算。
44. 一種視頻處理系統,其包括經配置以對輸入數據塊序列中的每一輸入數據塊 執行2D變換的變換引擎,其中每一所述輸入數據塊均包含輸入數據值行及列,且所 述2D變換包含行變換及列變換,所述變換引擎包括列變換電路,其經配置以響應於每一所述輸入數據塊通過對所述輸入數據塊的每 一列執行所述列變換而產生經局部變換數據塊;及行變換電路,其經配置以對所述經局部變換數據塊的每一行執行所述行變換,其中所述列變換電路經配置以在對每一所述列執行所述列變換時判定構成所述 列的分區的所述數據值的每一不同子集是否包括至少一個零值、所述列的分區的第一 子集的每一不同子集是否包括至少一個零值、及所述列的分區的至少一個其他子集的 每一不同子集是否包括至少一個零值,及所述列變換電路經配置以繞過或以降低功率的方式對所述數據值中被判定為零 值的至少一者執行至少一個變換運算。
45. 如權利要求44所述的系統,其中所述列變換電路經配置以繞過對所述數據值 中被判定為零值的所述至少一者的所述至少一個變換運算。
46. 如權利要求44所述的系統,其中所述列變換電路經配置而以降低功率的方式 對所述數據值中被判定為零值的所述至少一者執行所述至少一個變換運算。
47. 如權利要求46所述的系統,其中所述列變換電路包括至少一個具有輸入端集 合的電路,且所述列變換電路經配置以通過如下作業以所述降低功率的方式執行所述 至少一個變換運算使所述電路運行,而在對所述數據值中被判定為零值的所述一者的所述變換運算期間不更新所述輸入端集合中的至少一個輸入端。
48. 如權利要求44所述的系統,其中所述2D變換是離散餘弦反變換。
49. 如權利要求44所述的系統,其還包括緩衝器,其耦接至所述行變換電路及所述列變換電路,其中所述列變換電路經配 置以將所述經局部變換數據塊存儲於所述緩衝器中,且所述行變換電路經配置以從所 述緩衝器中檢索所述經局部變換數據塊的列。
50. —種變換引擎,其經配置以對輸入數據塊序列的每一輸入數據塊執行2D變 換的行變換,其中每一所述輸入數據塊均包括輸入數據值行及列,且所述2D變換包 含所述行變換及列變換,所述變換引擎包括第一電路,其經耦接以接收每一所述輸入數據塊的每一行,且經配置以判定構成每一所述行的分區的所述數據值的每一不同子集是否包括至少一個零值、所述行的分區的子集中的第一子集的每一不同子集是否包括至少一個零值、及所述行的分區的子 集中的至少一個其他子集的每一不同子集是否包括至少一個零值;及變換電路,其耦接至所述第一電路,且經配置以對每一所述行的數據值執行所述 行變換,其中所述變換電路經配置以在所述第一電路控制下運行,以繞過或以降低功率的方式對所述數據值中被所述第一電路確定為零值的至少一者執行至少一個變換運算。
51. 如權利要求50所述的變換引擎,其中所述變換電路經配置以繞過對所述數據 值中被所述第一電路確定為零值的所述至少一者的所述至少一個變換運算。
52. 如權利要求50所述的變換引擎,其中所述變換電路經配置而以降低功率的方 式對所述數據值中被所述第一電路確定為零值的所述至少一者執行所述至少一個變換 運算。
53. 如權利要求50所述的變換引擎,其中所述2D變換是離散餘弦反變換。
54. —種變換引擎,其經配置以對輸入數據塊序列的每一輸入數據塊執行2D變 換的列變換,其中每一所述輸入數據塊均包括輸入數據值行及列,且所述2D變換包 含所述列變換及行變換,所述變換引擎包括第一電路,其經耦接以接收每一所述輸入數據塊的每一列,且經配置以判定構成每一所述列的分區兩所述數據值的每一不同子集是否包括至少一個零值、所述列的分區的子集中的第一子集的每一不同子集是否包括至少一個零值、及所述列的分區的子 集中的至少一個其他子集的每一不同子集是否包括至少一個零值;及變換電路,其耦接至所述第一電路,且經配置以對每一所述列的數據值執行所述 列變換,其中所述變換電路經配置以在所述第一電路控制下運行,以繞過或以降低功 率的方式對所述數據值中被所述第一電路確定為零值的至少一者執行至少一個變換運 算。
55. 如權利要求54所述的變換引擎,其中所述變換電路經配置以繞過對所述數據 值中被所述第一電路確定為零值的所述至少一者的所述至少一個變換運算。
56. 如權利要求54所述的變換引擎,其中所述變換電路經配置而以降低功率的方 式對所述數據值中被所述第一電路確定為零值的所述至少一者執行所述至少一個變換 運算。
57. 如權利要求54所述的變換引擎,其中所述2D變換是離散餘弦反變換。
全文摘要
在某些實施例中,提供一種方法及一種系統,所述方法用於對數據塊序列中的每一塊執行2D變換(例如離散餘弦反變換)且所述系統經配置以執行所述2D變換,其中所述2D變換包括行變換及列變換。為對數據行或列執行行變換或列變換,這些實施例判定構成所述行(列)的分區的數據值的每一不同子集是否包括至少一個零值、所述分區的第一子集的每一不同子集是否包括至少一個零值、及所述分區的至少一個其他子集中的每一不同子集是否包括至少一個零值。當對包括至少一個零值及至少一個非零值的每一行或列執行行(列)變換時,均繞過或以降低功率的方式執行對至少一個零值的至少一個變換運算,其中假如所述零值為非零值,則原本將以消耗全功率的方式執行此種變換運算。
文檔編號H04N7/26GK101131686SQ200710147940
公開日2008年2月27日 申請日期2007年8月24日 優先權日2006年8月25日
發明者帕塔·斯裡拉姆, 拉維·布盧蘇 申請人:輝達公司

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀