以降低功率消耗对数据值阵列执行二维变换的方法及系统的制作方法

文档序号:7660891阅读:186来源:国知局
专利名称:以降低功率消耗对数据值阵列执行二维变换的方法及系统的制作方法
技术领域
本发明涉及用于对二维(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日
发明者帕塔·斯里拉姆, 拉维·布卢苏 申请人:辉达公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1