CN102067606B - 用于视频编码的高效变换技术 - Google Patents

用于视频编码的高效变换技术 Download PDF

Info

Publication number
CN102067606B
CN102067606B CN200880104691.2A CN200880104691A CN102067606B CN 102067606 B CN102067606 B CN 102067606B CN 200880104691 A CN200880104691 A CN 200880104691A CN 102067606 B CN102067606 B CN 102067606B
Authority
CN
China
Prior art keywords
block
conversion
video data
intermediate object
data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN200880104691.2A
Other languages
English (en)
Other versions
CN102067606A (zh
Inventor
拉戈哈文德拉·C·纳加拉杰
徐迪藻
斯蒂芬·莫洛伊
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Qualcomm Inc
Original Assignee
Qualcomm Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Qualcomm Inc filed Critical Qualcomm Inc
Publication of CN102067606A publication Critical patent/CN102067606A/zh
Application granted granted Critical
Publication of CN102067606B publication Critical patent/CN102067606B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/567Motion estimation based on rate distortion criteria
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/189Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding
    • H04N19/19Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding using optimisation based on Lagrange multipliers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/189Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding
    • H04N19/192Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding the adaptation method, adaptation tool or adaptation type being iterative or recursive
    • H04N19/194Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding the adaptation method, adaptation tool or adaptation type being iterative or recursive involving only two passes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/436Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation using parallelised computational arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/61Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Computing Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

本发明描述可在视频编码中使用的高效变换技术。明确地说,在第二视频数据块的变换中,再次使用与第一视频数据块的变换相关联的计算的中间结果。可在运动估计过程期间使用所述技术,其中,在该运动估计过程中,变换搜索空间的视频块,但本发明并不限于此方面。可使用管线输送技术来加速高效变换技术,且可实施换位存储器以促进高效的管线输送。

Description

用于视频编码的高效变换技术
技术领域
本发明涉及数字视频处理,且更明确地说,涉及对视频数据的基于块的编码。
背景技术
可将视频能力并入各式各样的装置中,包括数字电视、数字直播系统、无线通信装置、个人数字助理(PDA)、膝上型计算机、桌上型计算机、数码相机、数字记录装置、蜂窝式或卫星无线电电话、视频游戏顾问(counsel)、手持式游戏装置等。数字视频编码可在创建、修改、传输、存储、记录和播放全运动多媒体序列方面提供优于常规模拟系统的显著改进。广播网络可使用视频编码来促进向无线订户装置广播多媒体(音频-视频)序列的一个或一个以上信道。还使用视频编码来支持视频电话(VT)应用,例如通过蜂窝式无线电电话召开视频会议。
已针对编码数字视频序列建立了许多不同的编码标准。举例来说,运动图片专家组(MPEG)已开发出包括MPEG-1、MPEG-2和MPEG-4在内的许多标准。其它标准包括国际电信联盟(ITU)H.263标准和H.264标准、加利福尼亚州库珀蒂诺市的苹果公司(Apple Computer)开发的QuickTimeTM技术、华盛顿州雷蒙德市的微软公司(MicrosoftCorporation)开发的WindowsTM的视频、英特尔公司(Intel Corporation)开发的IndeoTM、来自华盛顿州西雅图市的真实网络公司(RealNetworks,Inc.)的RealVideoTM以及SuperMac公司开发的CinepakTM。此外,新的标准不断涌现和演化。MPEG-4的第10部分“高级视频编码(AVC)”中也陈述ITU H.264标准。
多数视频编码技术利用基于块的编码,其将视频帧划分为像素块,且使所述块与视频序列中的其它帧的块相关。通过对当前块与另一帧的预测块之间的差异进行编码,可实现数据压缩。通常使用术语“宏块”来定义视频帧的与搜索空间(其通常为视频序列的前一或后一帧的子组)进行比较的离散块。还可将宏块进一步再分为多个分区或子分区。ITU H.264标准支持16乘16宏块、16乘8分区、8乘16分区、8乘8分区、8乘4子分区、4乘8子分区以及4乘4子分区。其它标准可支持不同大小的块、宏块、分区和/或子分区。
对于视频帧中的每一块(宏块、分区或子分区),编码器将一个或一个以上紧接在前的视频帧(和/或后续帧)的大小类似的块进行比较,以识别类似块,其被称作“预测块”或“最佳匹配”。将当前视频块与其它帧的视频块进行比较的过程通常被称作运动估计。一旦针对待编码的给定块识别出“最佳匹配”,编码器就可对当前块与最佳匹配之间的差异进行编码。此对当前块与最佳匹配之间的差异进行编码的过程包括被称作运动补偿的过程。运动补偿包含创建差异块(称作残差),其包括指示待编码的当前块与最佳匹配之间的差异的信息。明确地说,运动补偿通常涉及使用运动向量取得最佳匹配且接着从输入块中减去最佳匹配以产生残差的动作。可对残差执行例如熵编码等额外编码步骤以进一步压缩位流。
发明内容
本发明描述可在视频编码中使用的高效变换技术。明确地说,在计算与第二视频数据块的变换相关联的计算的中间结果时,再次使用与第一视频数据块的变换相关联的计算的中间结果。可在运动估计过程期间使用高效变换技术,其中搜索空间的视频块被变换,但本发明不必在此方面受限。根据本发明,搜索空间可拆分为多个不同的4乘4像素块,且所述不同的4乘4像素块可彼此重叠。
可对4乘4像素块的多个行执行一维变换以产生中间结果,且接着可对所述中间结果的一列执行一维变换。或者,可首先对多个列执行一维变换,且接着对中间结果的一行执行一维变换。在任意情况下,在已知搜索空间中的不同4乘4像素块之间的重叠的情况下,可再次使用(例如,与后面的变换共享)所述中间结果中的至少一些结果,而无需执行相同计算。还揭示一种用于实施本文中所描述的技术的高效架构。
在一个实例中,本发明提供一种包含对视频数据块执行变换的方法,其中执行变换包括在第二视频数据块的第二变换中再次使用与第一视频数据块的第一变换相关联的一个或一个以上计算。
在另一实例中,本发明提供一种装置,其包含对视频数据块执行变换的视频编码器。在执行变换时,视频编码器在第二视频数据块的第二变换中再次使用与第一视频数据块的第一变换相关联的一个或一个以上计算。
在另一实例中,本发明提供一种装置,其包含:用于对视频数据块执行变换的装置;以及用于在第二视频数据块的第二变换中再次使用与第一视频数据块的第一变换相关联的一个或一个以上计算的装置。
本文中所描述的技术可以硬件、软件、固件或其任意组合实施。如果以软件实施,那么所述软件可在数字信号处理器(DSP)或其它类型的处理器或装置中执行。执行所述技术的软件最初可存储在计算机可读媒体中,且加载在处理器或其它装置中并在其中执行,以允许使用本文中所描述的技术来进行视频编码。
因此,本发明还预期一种计算机可读媒体,其包含当在视频编码装置中执行时致使所述装置对视频数据块执行变换的指令,其中在执行变换时,所述指令致使所述装置在第二视频数据块的第二变换中再次使用与第一视频数据块的第一变换相关联的一个或一个以上计算。
此外,本发明预期一种经配置以对视频数据块执行变换的电路,其中在执行变换时,所述电路在第二视频数据块的第二变换中再次使用与第一视频数据块的第一变换相关联的一个或一个以上计算。
另外,如下文中更详细地描述,可使用管线输送技术来加速高效变换技术,且可实施换位存储器以促进高效管线输送。附图和以下描述内容中陈述各种实施例的额外细节。根据所述描述内容、附图及所附权利要求书,本发明的其它特征、目标和优势将变得显而易见。
附图说明
图1是说明可实施本发明的技术的视频编码装置的示范性视频编码器的框图。
图2和图3是说明可实施包括变换的运动估计过程的一部分的组件的框图。
图4是说明用于执行一维变换的蝶形实施方案的图。
图5是说明可将计算共享技术用于如本文所述的变换的架构的框图。
图6是说明可根据本发明而实现的计算节省的曲线图。
图7是说明作为可并行搜索的搜索点数目的函数的变换引擎数目的曲线图。
图8是说明示范性垂直引擎的框图。
图9是说明可用以变换搜索空间的第一4乘4像素块的示范性水平引擎的框图。
图10是说明可用以在由图8所示的水平引擎所执行的变换之后变换搜索空间的其余4乘4像素块的示范性水平引擎的框图。
图11是搜索空间内的块的概念图,其说明到达垂直引擎中的输入块。
图12是说明水平引擎与垂直引擎之间的数据流的图。
图13是说明可位于水平引擎与垂直引擎之间的换位寄存器中的时序和数据流的框图。
具体实施方式
本发明描述可在视频编码中有用的高效变换技术。如下文中更详细地描述,在第二视频数据块的变换中再次使用与第一视频数据块的变换相关联的计算的中间结果。所述技术可能尤其对在变换搜索空间的视频块的运动估计过程期间执行的整数变换或正向离散余弦变换有用。然而,可在与视频编码相关联的其它变换情况中使用所述技术。实际上,所述技术可对任意类型的线性变换、整数变换以及可能其它变换情况有用。
根据本发明,可将(任意大小的)搜索空间拆分为例如4乘4像素块等多个不同视频块。搜索空间内所界定的不同4乘4像素块可彼此重叠。举例来说,5乘5像素搜索空间可界定四个不同的4乘4像素块,但可使用对部分分辨率的内插来在5乘5像素搜索空间内界定更多的4乘4像素块。当将4乘4像素块从像素域变换到空间频域时,可使用搜索空间。在从一个域向另一域进行此变换期间,通常对4乘4像素块执行两遍一维变换。对多个列执行第一遍一维变换以产生水平空间频率分量(称作中间结果),且对一个或一个以上行执行第二遍一维变换以产生垂直空间频率分量。所属领域的技术人员将认识到,可轻易地对多个行执行第一遍一维变换,且可对一列执行第二遍一维变换。
可对4乘4像素块的多个列执行一维变换以产生中间结果,且接着可对所述中间结果中的一行执行一维变换。在已知搜索空间中的不同4乘4像素块之间的重叠的情况下,可再次使用中间结果中的至少一些结果,而无需执行相同计算。以此方式,可避免计算以促进效率。还揭示示范性硬件架构,其可实现本文中所描述的技术的高效实施。在此情况下,可使用管线输送技术来加速一组视频数据块的高效变换技术,且可实施换位存储器以促进高效管线输送。
图1是说明可实施本发明的技术的视频编码装置的示范性视频编码器10的框图。实际上,多种装置可实施可受益于本发明的教示的视频编码器。举例来说,视频编码器10可用于数字电视、数字直播系统、无线通信装置(例如,手持机)、个人数字助理(PDA)、膝上型计算机、桌上型计算机、数码相机、数字记录装置、蜂窝式或卫星无线电电话、视频游戏顾问、手持式游戏装置等。广播网络可使用视频编码来促进向无线订户装置广播多媒体(音频-视频)序列的一个或一个以上信道。还使用视频编码来支持视频电话(VT)应用,例如通过蜂窝式无线电电话召开视频会议,以及多种其它应用。
如图1所示,视频编码器10接收输入宏块(MB)。通常使用术语“宏块”来定义视频帧的与搜索空间进行比较并被编码的离散块。还可将宏块进一步再分为分区或子分区。ITU H.264标准支持16乘16宏块、16乘8分区、8乘16分区、8乘8分区、8乘4子分区、4乘8子分区以及4乘4子分区。其它标准可支持不同大小的块、宏块、分区和/或子分区。在任意情况下,虽然可使用术语“宏块”来描述本发明的方面,但本文中所描述的技术可在对包括宏块、分区、子分区或其它视频块大小的任意大小的视频数据块进行编码的过程中有用。
如图1所示,对于每一输入MB,产生一预测块(在图1中标记为“Pred”)。预测块有时被称作最佳匹配。经由单元12从输入MB中减去预测块以产生残差(在图1中标记为“Res”)。残差包含数据块,其指示输入MB与用以对输入MB进行编码的预测块之间的差异。预测块可由运动向量(或用于帧帧内编码的帧内向量)识别。对于帧内编码,预测块与输入MB位于相同的帧内。对于帧间编码,预测块与输入MB位于不同的帧内。运动向量(或帧内编码的帧内向量)识别编码时所使用的预测块。帧间编码可为预测性的(P),此表示预测块是基于前一帧的;或双向的(B),此表示预测块是基于视频序列的前一或后一帧的。
在创建残差(Res)后,对残差执行变换和量化。变换单元14和量化单元16分别执行变换和量化。还可执行熵编码以产生输出位流。熵编码单元18执行熵编码,此可实现进一步压缩。熵编码可包括将代码指派给位组,以及使码长与概率匹配。视频编码中众所周知且常见各种类型的熵编码。
在视频编码器10的预测回路中,逆量化单元22和逆变换单元24对残差执行逆量化和逆变换,以本质上使单元12和14所执行的变换和量化反向。通过加法器单元26将预测块加回到经重构的残差。这本质上在预测回路中重新创建输入MB。可通过去块单元28来对经重构的MB的边缘进行滤波,且将其存储在存储器30中。
量化原则上涉及减小经变换信号的动态范围。动态范围的减小影响通过熵编码产生的位的数目(速率)。此还在残差中引入损失,其可导致原始MB与经重构的MB略有不同。这些差异通常被称作量化误差或失真。量化的强度由量化参数决定。较大的量化参数导致较高的失真,但可降低编码率。
预测回路可为帧内预测回路或帧间预测回路。MPEG-4和ITU H.263通常仅支持帧间预测。ITU H.264支持帧内预测和帧间预测两者。在图1的视频编码器10中,控制信号32可选择回路为帧内预测还是帧间预测。然而,本发明的技术还可在仅支持帧内编码或帧间编码的系统中起作用。
在帧内预测中,单元34执行空间估计和空间补偿。在此情况下,单元34将经重构的MB与同一视频帧内的相邻宏块进行比较,以产生帧内预测器块。帧内预测器块本质上是经重构的MB的最佳匹配,其将导致残差中的良好压缩。帧内预测可有助于减少空间冗余。
在帧间预测中,单元36执行运动估计和运动补偿。运动估计将经重构的MB与先前或未来帧的块进行比较,以产生帧间预测器。帧间预测器是经重构的MB的最佳匹配,但不同于帧内预测器,帧间预测器来自不同的视频帧。帧间预测可有助于减少时间冗余。通常,与利用空间冗余相比,利用时间冗余可对视频序列的压缩产生较大的影响。换句话说,MB的帧间编码通常实现优于帧内编码的压缩。
本发明的技术大体与例如正向离散余弦变换等变换有关。可在运动估计过程期间实施所述技术,但本发明在此方面不受限制。为描述起见,本发明将所述技术描述为在运动估计期间执行,但还可在执行变换的其它情况下使用这些技术或类似技术。
运动估计是可由视频编码器执行的计算密集型过程。大量计算可能归因于运动估计中可能考虑的大量潜在预测器。实际上,运动估计通常涉及在包含一个或一个以上先前帧(或后续帧)的子组的搜索空间中搜索帧间预测器。可基于成本函数或量度来检查来自搜索空间的候选者,其通常通过执行差异计算来界定,例如绝对差和(SAD)、平方差和(SSD)、绝对经变换差和(SATD)或平方经变换差和(SSTD)。一旦计算出用于搜索空间中的所有候选者的量度,就可选择使所述量度减到最小的候选者作为帧间预测器。因此,影响运动估计的主要因素可为搜索空间的大小、搜索方法以及各种成本函数。成本函数本质上量化了当前帧的原始块与搜索区域的候选块之间的冗余。可在准确率和失真方面量化冗余。
图2展示基于变换的量度框架。图2中所示的块可包含由运动估计器(例如图1所示的单元36)执行的功能。图2中说明示范性位长度,但本发明的技术不限于任意特定位长度。此外,运动估计涉及将待编码的块与搜索空间内的多个候选者进行比较,以找出所述搜索空间内与待编码的块最匹配的一个块。根据本发明,可在速率和失真意义上界定最佳匹配。
为了完成运动估计,分析待编码的块与给定搜索空间块之间的残余能量。通过从相应搜索空间块的像素中减去待编码的块的对应像素的过程来获得每一残余候选者。这是差异(Diff)模块42在图2中(例如)经由SAD、SSD、SATD或SSTD技术完成的过程。接着,使用可执行正向离散余弦变换的正向变换引擎(FTE)44将残余块变换到频域中。可接着分析经变换的残余块的速率和失真特性。明确地说,速率失真估计(RDE)模块46本质上估计在给定量化参数QP下针对此给定搜索空间块将导致的速率(R)和失真(D)。RDE模块46接着基于拉格朗日原理将R和D组合成单个成本量度(=D+λR),鉴于量度至少部分地依据R和D,所述成本量度可被称作速率-失真量度。可将所有候选者搜索空间块的成本进行比较,且选择导致最小成本的任一候选者来进行编码。
应注意,上文所计算的成本量度对应于正被编码的块以及具有4乘4个像素的大小的搜索空间块。对于大于4乘4个像素的块大小,可使用多个4乘4像素块来跨越较大的块。在此情况下,通过累加跨越较大块的所有4乘4个单元块的成本量度来计算所述较大块的成本。以下描述集中于4乘4个像素的块大小,但所述技术可应用于其它大小的块。
正向变换引擎(FTE)44通常为基于变换的量度计算的任意基础模块。由于变换的线性本质,可切换差异模块42与FTE 44的级。根据本发明,切换差异模块42与FTE 44的次序可允许变换期间的计算节省。对所描绘的块的输入和输出的记法为输入的(列)×(行)×(用以表示值的位的数目)。
图3展示图2的替代方案,其中图2的差异模块42与FTE 44的次序被切换。图3的组件形成运动估计器单元的一部分。出于示范性目的而说明位长度,但可使用其它位长度。在图3中,两个不同的FTE 52A和52B(例如)经由整数变换或正向离散余弦变换来变换待编码的块(“编码块”)以及正被考虑的搜索空间块。在此情况下,在变换之后由差异单元54来执行差异计算。RDE模块56接着估计在给定量化参数QP下针对此给定搜索空间块将导致的速率(R)和失真(D)。RDE模块56可基于拉格朗日原理,将R和D组合成单个成本(=D+λR)。接着可在运动估计单元(例如,图1的单元36)中,比较所有候选者搜索空间块的成本,且可选择导致最小成本的任一候选者来进行编码。
运动估计的基本问题是从搜索空间(s)中找出待编码的块(编码块,e)的“最佳匹配”。可将编码块(e)和搜索空间(s)定义为:
e = e 00 e 01 e 02 e 03 e 10 e 11 e 12 e 13 e 20 e 21 e 22 e 23 e 30 e 31 e 32 e 33 , s = s 00 s 01 s 02 s 03 s 04 s 10 s 11 s 12 s 13 s 14 s 20 s 21 s 22 s 23 s 24 s 30 s 31 s 32 s 33 s 34 s 40 s 41 s 42 s 43 s 44 - - - ( 1 )
如可看到,可相对于s中的四个搜索点来匹配e,其可描绘为:
s = s ( 0,0 ) s ( 0,1 ) s ( 1,0 ) s ( 1,1 ) - - - ( 2 )
其中
s ( 0,0 ) = s 00 s 01 s 02 s 03 s 10 s 11 s 12 s 13 s 20 s 21 s 22 s 23 s 30 s 31 s 32 s 33 - - - ( 3 )
s ( 0,1 ) = s 01 s 02 s 03 s 04 s 11 s 12 s 13 s 14 s 21 s 22 s 23 s 24 s 31 s 32 s 33 s 34 - - - ( 4 )
s ( 1,0 ) = s 10 s 11 s 12 s 13 s 20 s 21 s 22 s 23 s 30 s 31 s 32 s 33 s 40 s 41 s 42 s 43 - - - ( 5 )
s ( 1,1 ) = s 11 s 12 s 13 s 14 s 21 s 22 s 23 s 24 s 31 s 32 s 33 s 34 s 41 s 42 s 43 s 44 - - - ( 6 )
注意,(搜索)点(例如,s(0,0)、s(0,1)、s(1,0)或s(1,1))被描绘为具有相等的水平与垂直维度的块。s(0,0)可被称作块00,s(0,1)可称作块01,s(1,0)可称作块10,且s(1,1)可称作块11。搜索点还可描绘具有不相等的水平与垂直维度的块。图11展示具有出于说明性目的而展示的与此实例一致的一些所界定的搜索点和块的8×8搜索区域。为在s中找出e的最佳匹配,可将残余块r(x,y)计算为:
r(x,y)=e-s(x,y)  x,y∈0,1         (7)
接着,经由变换矩阵将残余块r(x,y)变换为空间频域。
R ′ 0 v ( x , y ) R ′ 1 v ( x , y ) R ′ 2 v ( x , y ) R ′ 3 v ( x , y ) = 1 1 1 1 2 1 - 1 - 2 1 - 1 - 1 1 1 - 2 2 - 1 r 0 v ( x , y ) r 1 v ( x , y ) r 2 v ( x , y ) r 3 v ( x , y ) , v ∈ 0,1,2,3 - - - ( 8 )
R h 0 ( x , y ) R h 1 ( x , y ) R h 2 ( x , y ) R h 3 ( x , y ) = 1 1 1 1 2 1 - 1 - 2 1 - 1 - 1 1 1 - 2 2 - 1 R ′ h 0 ( x , y ) R ′ h 1 ( x , y ) R ′ h 2 ( x , y ) R ′ h 3 ( x , y ) , h ∈ 0,1,2,3 - - - ( 9 )
在等式8中,变量v表示垂直列,且在等式9中,变量h表示水平行。变换矩阵由整阵列成,在一些情况下,其被称作整数变换,且在其它情况下,其被称作离散余弦变换。离散余弦变换(DCT)可为整数变换或“实数”变换。所属领域的技术人员将认识到,变换矩阵可由整数或实数形成。可注意到,可使用4点一维(1-D)变换来产生视频块的空间频域分量。可首先对所有列应用4点1-D变换以产生第一遍中间结果,且接着可在第二遍中对中间结果的所有行应用4点1D变换。图4中展示1-D变换的“蝶形实施方案”,其使用一组加法器以不同方式组合输入从而产生不同输出。蛮力法将针对R(0,0)、R(0,1)、R(1,0)或R(1,1)的计算使用八个单独的1-D变换。在蛮力法中,独立地处理每一搜索点,且不存在对中间结果R′(0,0)、R′(0,1)、R′(1,0)、R′(1,1)的再次使用。对于高分辨率电视(HDTV),如果仅使用一个垂直引擎和一个水平引擎来搜索整个帧,那么通过量可能过慢而无法促进视频帧的实时呈现。因此,如下文中更详细地描述,对于HDTV或其它应用,为了加快搜索速度,可并行使用多个垂直引擎和水平引擎。
如图4所示,可将一个1-D四输入变换视为具有若干个级。变量x0、x1、x2和x3表示变换的输入,且y0、y1、y2和y3表示变换的四个经变换的输出。值“a”和“c”为乘法常数。因此,上方具有“c”的箭头表示所述箭头的输出是使输入值(箭头左侧)与值“c”相乘的结果。值“p”表示字长,即,进入各级中的位的数目。
如果如图3所示使用经修改的框架,那么可再次使用变换的中间结果。明确地说,与等式(7)、(8)和(9)形成对比,可如下获得经二维变换的R(x,y)。
R(x,y)=E-S(x,y)  x,y∈0,1          (10)
其中
S ′ 0 v ( x , y ) S ′ 1 v ( x , y ) S ′ 2 v ( x , y ) S ′ 3 v ( x , y ) = 1 1 1 1 2 1 - 1 - 2 1 - 1 - 1 1 1 - 2 2 - 1 s 0 v ( x , y ) s 1 v ( x , y ) s 2 v ( x , y ) s 3 v ( x , y ) , v ∈ 0,1,2,3 - - - ( 11 )
S h 0 ( x , y ) S h 1 ( x , y ) S h 2 ( x , y ) S h 3 ( x , y ) = 1 1 1 1 2 1 - 1 - 2 1 - 1 - 1 1 1 - 2 2 - 1 S ′ h 0 ( x , y ) S ′ h 1 ( x , y ) S ′ h 2 ( x , y ) S ′ h 3 ( x , y ) , h ∈ 0,1,2,3 - - - ( 12 )
E ′ 0 v E ′ 1 v E ′ 2 v E ′ 3 v = 1 1 1 1 2 1 - 1 - 2 1 - 1 - 1 1 1 - 2 2 - 1 e 0 v e 1 v e 2 v e 3 v , v ∈ 0,1,2,3 - - - ( 13 )
E h 0 E h 1 E h 2 E h 3 = 1 1 1 1 2 1 - 1 - 2 1 - 1 - 1 1 1 - 2 2 - 1 E ′ h 0 E ′ h 1 E ′ h 2 E ′ h 3 , h ∈ 0,1,2,3 - - - ( 14 )
因此,变换可由r(x,y)的变换变为s(x,y)的变换。此允许利用s(0,0)(等式3)与s(0,1)(等式4)的列重叠,且利用s(1,0)(等式5)与s(1,1)(等式6)的列重叠。可再次使用S′(0,0)的第一遍中间结果(即,与列相关联的结果)以避免对S′(0,1)的第一遍中间结果(即,与列相关联的结果)的重复计算。类似地,可再次使用S′(1,0)的第一遍中间结果(即,与列相关联的结果)以避免对S′(1,1)的第一遍中间结果(即,与列相关联的结果)的重复计算。下文更详细地阐释对中间结果的此再次使用(也称作共享)。
为了说明再次使用(例如,共享)概念,作为实例考虑,可将经二维变换的s(0,0)计算为:
S ′ 0 v ( 0 , 0 ) S ′ 1 v ( 0 , 0 ) S ′ 2 v ( 0 , 0 ) S ′ 3 v ( 0 , 0 ) = 1 1 1 1 2 1 - 1 - 2 1 - 1 - 1 1 1 - 2 2 - 1 s 0 v ( 0 , 0 ) s 1 v ( 0 , 0 ) s 2 v ( 0 , 0 ) s 3 v ( 0 , 0 ) , v ∈ 0,1,2,3 - - - ( 15 )
S h 0 ( 0 , 0 ) S h 1 ( 0 , 0 ) S h 2 ( 0 , 0 ) S h 3 ( 0 , 0 ) = 1 1 1 1 2 1 - 1 - 2 1 - 1 - 1 1 1 - 2 2 - 1 S ′ h 0 ( 0 , 0 ) S ′ h 1 ( 0 , 0 ) S ′ h 2 ( 0 , 0 ) S ′ h 3 ( 0 , 0 ) , h ∈ 0,1,2,3 - - - ( 16 )
此外,可将S(0,1)计算为:
S ′ 0 v ( 0,1 ) S ′ 1 v ( 0,1 ) S ′ 2 v ( 0,1 ) S ′ 3 v ( 0,1 ) = 1 1 1 1 2 1 - 1 - 2 1 - 1 - 1 1 1 - 2 2 - 1 s 0 v ( 0,1 ) s 1 v ( 0,1 ) s 2 v ( 0,1 ) s 3 v ( 0,1 ) , v ∈ 0,1,2,3 - - - ( 17 )
S h 0 ( 0,1 ) S h 1 ( 0,1 ) S h 2 ( 0,1 ) S h 3 ( 0,1 ) = 1 1 1 1 2 1 - 1 - 2 1 - 1 - 1 1 1 - 2 2 - 1 S ′ h 0 ( 0,1 ) S ′ h 1 ( 0,1 ) S ′ h 2 ( 0,1 ) S ′ h 3 ( 0,1 ) , h ∈ 0,1,2,3 - - - ( 18 )
根据等式(3)和(4)可注意到:
sv(n)(0,0)=sv(n-1)(0,1) v∈0,1,2,3 n∈1,2,3     (19)
因此,得出:
S′v(n)(0,0)=S′v(n-1)(0,1) v∈0,1,2,3 n∈1,2,3 (20)
此表示对于n∈1,2,3,可再次使用与S′(0,0)相关联的第一遍中间结果来计算与S′(0,1)相关联的第一遍中间结果。可注意到,再次使用可消除原本在计算S′(0,1)时所需要的八个1-D列变换中的三个1-D列变换。因此,在第一遍期间可实现1-D变换的至多达37.5个百分比的节省。应指出,还可通过使s(0,0)的行与s(1,0)的行重叠来处理视频块,在所述情况下,可在第一遍时对行应用1-D行变换,之后对第一遍所得到的列进行第二遍1-D列变换。换句话说,可不考虑水平变换与垂直变换的次序而应用本发明的技术。
一般来说,为了在N×M搜索空间中搜索4×4块的最佳匹配,总共存在(N-3)×(M-3)个搜索点。其中N表示水平方向上的总像素计数,且M表示垂直方向上的总像素计数。为了确保能够针对实时视频编码及时完成搜索最佳匹配的任务,可设计并同时运行多个1D引擎。假定并行使用“j+1”((0≤j≤N-3))个水平引擎单元以加速搜索,且如果经垂直变换的数据被高效地共享,那么仅需要“k+1”个垂直引擎单元。其中k=(j+3)/4的整数。在设计视频编码架构时,功率消耗和硅面积是变换引擎的性能的重要折衷因素。
图5是说明可使用本文所述的计算再次使用技术进行变换以及管线输送技术的架构的框图。可使用图5所示的架构实例来实现FTE 52B。此处,使用四个水平引擎(j=3),且因此为了具有在此设计架构中共享的高效数据,可使用两个垂直引擎(k=2)。如图5所示,FTE 60包括随机存取存储器(RAM)62、两个垂直引擎(VE(0)64A和VE(1)64B)、两个换位存储器TM 65A和TM 65B以及四个水平引擎(HE(0)66A、HE(1)66B、HE(2)66C和HE(3)66D)。
FTE 60可在垂直和水平方向上实施4乘4正向变换。通常,首先执行垂直变换还是水平变换无关紧要。换句话说,可在其它实施方案中切换变换的序列(垂直和水平)。因此,在其它实施方案中,可在垂直变换之前执行水平变换。在图5中,垂直变换是第一变换运算,接着是水平变换。
如图5所示,所述架构利用四个水平引擎66A到66D以及两个垂直引擎64A和64B。RAM 62可含有供应到垂直引擎64A和64B的搜索空间像素。垂直引擎64A和64B连接到换位存储器65A和65B,且换位存储器65A和65B向水平引擎66A到66D供应数据。可以1D脉动阵列的形式对水平引擎66A到66D进行配置。在下文更详细描述的一些实例中,可基于4×4变换来设计水平引擎和垂直引擎。然而,变换大小可为任意大小(例如,N×N),且不同大小的变换可改变硬件引擎设计,但仍实现与再次使用中间计算相关联的优势。
如上文中所注意,本文中所描述的技术能够在所执行的1D变换的数目方面实现至多达37.5个百分比的缩减。然而,图5所示的架构可实现仅25个百分比的缩减。随着水平引擎的数目增加,因为可能发生更多共享,因此计算缩减量可改进。为了维持十六个水平引擎,可能需要五个垂直引擎。在此情况下,计算缩减量可变为1-[(5+16)/(16+16)]=34.4%。一般来说,对于N个水平引擎,可能需要1+Ceil((N-1)/4)个垂直引擎。Ceil()向正无穷大(+∞)舍入。可通过下式给出计算缩减的通用式:
1-[(垂直引擎的数目+水平引擎的数目)/
(水平引擎的数目+水平引擎的数目)]
图6是说明可根据本发明而实现的计算节省的曲线图。明确地说,图6用曲线表示可基于(在x轴上)并行搜索的点的数目而(在y轴上)实现的计算节省的百分比。一般来说,搜索点的数目可等于水平引擎的数目(假定首先执行垂直变换,且接着执行水平变换)。举例来说,16个水平引擎应覆盖16个搜索点。因此,在图6的x轴上的值16处,此对应于曲线图上的34.4%节省。
图7是说明作为可并行搜索的搜索点数目的函数的变换引擎的数目的曲线图。图7用曲线表示针对可(在x轴上)并行搜索的搜索点的不同数目的水平引擎的数目(y轴上)、垂直引擎的数目(y轴上)以及水平引擎与垂直引擎的组合数目(y轴上)。
此外,可在FTE中使用多个水平引擎以改进变换通过量和数据共享。为了确保FTE引擎可促进相对较小的区域内的高效数据共享和低功率消耗,可以不同方式设计FTE的垂直引擎和水平引擎。明确地说,为了节省时钟功率,通过以像素时钟速率的二分之一或四分之一进行计时来设计引擎中的大多数数据寄存器。表1、表2和表3(下文)说明可使用的计时方案。
图8说明示范性垂直变换引擎80(也称作垂直引擎)。垂直引擎80包括各种寄存器R0(81A)、R1(81B)、P0(81C)、P1(81D)、P2(81E)和Rf(81F);多路复用器82A、82B、82C、82D、82E和82F;以及加法器85A和85B。垂直引擎80直接从RAM 62(图5)接收像素数据。可用垂直引擎80来实施技术,其中垂直引擎80对输入像素数据进行重新定序、重新布置内部数据路径,且将所广播的像素输入数据锁存到指定的寄存器。
表1展示垂直引擎80的针对搜索点s(0,0)以及搜索点s(1,0)的一部分(其变换在时钟周期十六处开始)的示范性数据流和时序。明确地说,在已知连续时钟周期内的输入(I/P)的情况下,表1展示这些不同寄存器的内容。输出(O/P)可对应于寄存器Rf(81F)的内容。此外,可使用“被划分的”时钟信号,在所述情况下,垂直引擎80的等效计时能力在每个时钟周期期间处理3个寄存器。
一般来说,对于搜索点s(i,j),来自RAM 62的像素数据如下被重新定序:s(i,j+l),s(i+3,j+l),s(i+1,j+l),s(i+2,j+l);l∈0,1,2,3。在时钟2n周期处启用寄存器R0(81A),以锁存像素数据s(i,j+l),s(i+1,j+l),l∈0,1,2,3。寄存器R1(81B)每两个时钟周期锁存输入像素数据。在时钟2n+1周期处启用寄存器R0(81A)时钟,以锁存像素数据s(i+3,j+l),s(i+2,j+l),l∈0,1,2,3。对于用以保存中间变换数据的寄存器P081C、P181D、P281E,在周期4n+1处启用P0(81C)时钟,以锁存s(i,j+l),s(i+3,j+l),P1(81D)在周期4n+2处锁存s(i,j+l)-s(i+3,j+l),且P2(81E)在周期4n+3处锁存s(i+1,j+l)+s(i+2,j+l),在周期4n+4处锁存s(i+1,j+l)-s(i+2,j+l),此处n=0、1、2、...,l∈0,1,2,3。使用寄存器Rf(81F)来保存最终变换结果,且在每个时钟周期启用寄存器Rf(81F)。对于搜索点s(i,j),经垂直变换的输出序列为S′(i,j+l),S′(i+2,j+l),S′(i+1,j+l),s(i+3,j+l),l∈0,1,2,3。
表1
在表1中,第四列中所说明的方波表示系统时钟。垂直引擎80中的所有数据可寄存在此系统时钟的上升沿处。
为了使水平引擎可高效地共享经垂直变换的数据,其必须以循序次序取用经4×4垂直变换的数据,使高效数据共享起作用的不同次序只有少数几种,此处所示的实例仅为其中一种。为了使功率消耗减到最小,期望水平引擎立即消耗经垂直变换的数据。换位寄存器TM 65A、65B经设计以临时存储并改组经垂直变换的数据。图12描绘垂直和水平引擎的输入和输出序列。图13描绘对水平引擎的经垂直变换的数据进行重新定序所需的最少TM寄存器。
为了水平引擎(例如图5的引擎66A到66D)中的高效处理,期望使对存储器的存取减到最少。此外,期望在弃用所有被存取的数据之前对其进行处理。为了高效地适应这些目标,可使用两种不同类型的水平引擎HE(0)90和HE(j)100。HE(0)90可对应于水平引擎66A(图5),且HE(j)100可对应于引擎66B到66D中的每一者。
每一水平引擎取用四个数据串,其为数据序列0、数据序列1、数据序列2和数据序列3。如下描绘所述序列:
序列0:S′(i,j),S′(i+1,j),S′(i+2,j),S′(i+3,j)
序列1:S′(i,j+1),S′(i+1,j+1),S′(i+2,j+1),S′(i+3,j+1)
序列2:S′(i,j+2),S′(i+1,j+2),S′(i+2,j+2),S′(i+3,j+2)
序列3:S′(i,j+3),S′(i+1,j+3),S′(i+2,j+3),S′(i+3,j+3)
S′(i,j)表示经垂直变换的像素数据。对于水平引擎HE(0),所有四个序列数据均从垂直引擎VE(0)输入。
对于水平引擎HE(1)100,其序列0和序列1输入数据来自HE(0)90的寄存器91B和91C的数据,序列2数据来自HE(0)90的92H的共享数据输出,且HE(1)100的序列3数据直接来自垂直引擎VE(1)80。
对于水平引擎HE(2)100,其序列0数据输入来自HE(0)90的寄存器91C,序列1数据来自HE(0)的92H的共享数据输出,序列2数据来自HE(1)100的共享数据输出92H,且HE(2)的序列3数据直接来自垂直引擎VE(1)80。
对于水平引擎HE(j)100(其中j≥3),其输入数据序列0、序列1和序列2分别使用其相邻水平引擎HE(j-3)、HE(j-2)和HE(j-1)的共享数据输出多路复用器102H。HE(j)的序列3数据始终直接来自垂直引擎VE(k)的输出。其中k=(j+3)/4的整数。
下文的表2和表3展示水平引擎HE(0)90和HE(1)100的输入、输出和内部控制时序。注意,每四个时钟周期仅启用一次R0(91A)、R1(91B)、R2(91C)、R3(91D)和R0(101A),且中间寄存器P0(91E,101B)、P1(91F,101C)每两个时钟周期锁存数据。
图9说明示范性水平变换引擎HE(0)90(还称作水平引擎HE(0))。图10说明示范性水平变换引擎HE(j)100。图9的水平引擎90包括标记为R0(91A)、R1(91B)、R2(91C)、R3(91D)、P0(91E)、P1(91F)和Rf(91G)的各种寄存器;多路复用器92A、92B、92C、92D、92E、92F、92G、92H;以及加法器95A和95B。图10的水平引擎100包括标记为R0(101A)、P0(101B)、P1(101C)和Rf(101D)的各种寄存器;多路复用器102A、102B、102C、102D、102E、102F、102G、102H和102I;以及加法器105A和105B。应注意,图8、图9和图10所示的寄存器可包含每一相应引擎中的物理结构,但存储结构可彼此类似。换句话说,例如,图8中的寄存器R0(81A)与图9中的寄存器R0(91A)不同。
水平引擎HE(0)90可经设计以变换第一4乘4像素列块(来自N×M大小的搜索区域的搜索点s(0,0)、s(1,0)、...、s(M-3,0))。相比之下,可重复使用水平引擎HE(j)100(图10所示)来变换列块中的剩余部分(搜索点s(0,j)、s(1,j)、...、s(M-3,j),(1≤j≤N-3));图9的水平引擎HE(0)90可对应于图5的HE(0)66A,且图9的水平引擎HE(j)100可对应于图5的HE(1)66B、HE(2)66C和HE(3)66D中的每一者。
水平引擎HE(0)90将从垂直引擎VE(0)(图5)广播的循序像素数据锁存到四个四分之一像素计时数据寄存器R0(91A)、R1(91B)、R2(91C)和R3(91D)中,执行中间变换功能,接着将结果存储在寄存器P0(01E)和P1(91F)中。寄存器P0(01E)和P1(91F)存储数据以用于第二蝶形运算,且将结果传递到最终寄存器Rf(91G)。
锁存在水平引擎90的寄存器R0(91A)、R1(91B)、R2(91C)和R3(91D)中的数据可由接下来的三个水平引擎HE(1)、HE(2)、HE(3)(见66B到66D或图5)共享。一般来说,对于每一水平引擎HE(j)100(其中j=1、2或3),输入数据来自对HE(0)的输出、VE(1)的输出和“先前”HE(j)引擎的多路复用。
表2展示时序以及如何在水平引擎HE(0)到HE(3)之间共享数据。明确地说,表2展示对搜索点s(0,0)、s(1,0)、s(2,0)、...等起作用的水平引擎HE(0)66A的时序信息。在周期0处开始的像素数据S′00是与搜索点s(0,0)相关联的4乘4块的第一像素。在周期16处开始的数据S′10指代搜索点s(1,0)的4乘4块的第一像素,等等。通过将类似的时序关系应用于表2所呈现的搜索点,表2可轻易地延伸到结束搜索点s(M-3,0)。
表2
表3显示搜索点s(0,1)的4×4匹配区域的HE(1)引擎的16像素时序以及从周期十七开始的搜索点s(1,1)的像素时序的一部分。表3中的数据序列0、序列1和序列3是来自水平引擎HE(0)的R1、R2和R3寄存器值的拷贝,其在水平引擎HE(1)到HE(3)之间共享。表3中列出寄存器值以说明HE(0)与HE(1)之间的时序关系和数据流。值得注意的是,通过使用“被划分的”像素时钟频率,可通过使用更多寄存器来实现等效的计时能力。举例来说,HE(1)在一种设计中可具有四个物理寄存器,其中计时能力等效于2.25个寄存器,且HE(0)可具有七个寄存器,其中计时能力等效于三个寄存器。
表3
水平引擎HE(1)输出时序表
表4展示VE(0)、VE(1)、HE(0)、HE(1)、HE(2)和HE(3)之间的示范性时序关系。明确地说,表4说明垂直引擎VE(k)与水平引擎HE(j)(k=0、1。j=0、1、2、3)之间的输入时序关系以及如何在水平引擎HE(j)之间共享经垂直变换的数据。表4仅提供搜索点s(i,j)的时序信息,其中i=0、1、2、...、4;j=0、1、...、3。可轻易地针对所有s(i,j)搜索点开发出类似的时序图案,其中i=0、1、2、...、M-3;j=0、1、...、N-3。
表4
FTE变换架构不仅由引擎决定,而且由在垂直引擎与水平引擎之间流动的数据决定。由于所述架构可包含像素速率管线式设计,因此引擎之间的任意偏斜数据流均可使管线停止。为了避免此问题,可在引擎之间使用换位存储器65A和65B来缓冲并解决数据的时序。
本发明的技术允许以管线方式相对于一组视频数据块而执行变换。明确地说,水平引擎与垂直引擎可针对变换的至少一部分同时操作,使得数据被管线输送通过FTE 60(图5)。举例来说,如图5所示,数据可由垂直引擎64A和64B处理,且输出可存储在换位存储器65A和65B中。在处理与第一视频块相关联的所有垂直数据后,垂直引擎64A和64B可接着处理与第二视频块相关联的垂直数据(在适当时再次使用中间结果)。换位存储器65A和65B允许垂直引擎64A和64B的输出在需要时存储,之后此数据可由水平引擎66A到66D中的一者处理。以此方式,数据被管线输送通过FTE 60。
一般来说,垂直引擎64A或64B中的一者的数据产生与一个或水平引擎66A到66D的消耗之间的时序偏斜的最大量界定所需的换位存储器(TM)的最小量。为了在转换之间具有最少TM,通常建议:
1.使馈送器引擎(产生器)与接受器(消耗)引擎之间的数据时序偏斜减到最小,且
2.尽快消耗所产生的馈送器引擎数据。
实施TM的一种方式是使用随机存取存储器(RAM)。基于RAM的设计的缺点是:
1.RAM的地址大小(等于时序偏斜且小于16个时钟周期)较小,且RAM的形状在物理设计中可能并不高效。值得注意的是,在两个4乘4变换之间,最大时序偏斜可能为15个时钟周期。
2.在每一4乘4变换的16个时钟周期期间,可在同一时钟周期期间多次从存储器读取和写入到存储器。这意味着RAM必须以像素时钟速率的两倍运行,除非使用两端口RAM。
3.对于较小的基于RAM的设计,存储器测试逻辑抵消了其面积优势。
在已知这些因素的情况下,当硅上的物理实施方案不遭遇困难时,可考虑在垂直引擎与水平引擎之间使用RAM作为换位存储器。
另一TM设计方法是基于寄存器的设计。可不考虑使用换位存储器还是换位寄存器而使用相同的管线输送技术。图11说明可如何在搜索空间中界定输入块。图12说明垂直引擎与水平引擎之间的输入和输出数据流。以图12所示的方式跟踪索引,以便促进相对于水平引擎输入数据重新排序垂直引擎输入数据和垂直引擎输出数据可改进变换过程的效率。具有s00、s30、s10、s20、...、s01、...、s23序列中的像素输入的垂直引擎设计可使用最少的组件。在此情况下,VE变换输出遵循S′00、S′20、S′10、S′30、...、S′33格式。这可通过跟踪索引到阵列中以记住输入垂直引擎数据到输出垂直引擎数据的重新排序,以纯逻辑方式完成。跟踪索引允许数据存储在一个位置中而无需更新存储器,且消除了不必要的写入操作。所属领域的技术人员还将认识到,还可完成通过将数据重新写入到存储器中来进行重新排序。
为了共享输入数据,期望水平引擎输入呈循序格式。在此情况下,可使用管线输送技术,藉此水平引擎与垂直引擎相对于视频数据的管线并行起作用。对于高效的管线式数据处理,只要垂直引擎产生的第一数据可用,水平引擎就可输入所述第一数据。因此,水平输入可呈S′00、S′01、S′02、S′03、...、S′33序列格式。将图12中的垂直引擎输出序列(垂直O/P序列)与水平引擎输入序列(水平I/P序列)进行比较,最大对应差异为13-4=9,其指示在此情况下可能需要九个换位寄存器。所属领域的技术人员将认识到,较大的块大小可能需要不同数目的换位寄存器。所述数目与数据可用于处理的最早时间有关。通过选择合适数目的换位寄存器,可以高效方式支持管线输送,使得额外寄存器被避免。在此情况下,九个换位寄存器可能足以存储所有必要数据达足够时间,以允许此数据尽快在数据处理管线中使用,而无需额外或过量的存储器或寄存器。
图13描绘可在垂直引擎与水平引擎之间使用的换位寄存器(TR)的数目。图13的左侧的数字为时标。因此,在此实例中,垂直引擎在时间T1输出S′00,其在T2输出S′20,...,依此类推。图13中的阴影区域表示垂直引擎(馈送器)输出在被水平(接受器)引擎消耗之前,在TR中存储多久。此处,水平引擎从时间T10开始消耗垂直引擎的输出,且在时间T25完成。图12的右侧的数字表示每一时标处所需的TR的数目,其等于灰色区域的总量。图13所估计的总TR也是九个。注意,时间13处的像素数目被直接馈入水平引擎中,而无需锁存到TR中。
已描述许多技术和实例。所描述的技术可以硬件、软件、固件或其任意组合实施。如果以软件实施,那么本文中所描述的技术可包含于包含指令的计算机可读媒体中,所述指令当在装置中执行时执行上文所描述的技术中的一者或一者以上。举例来说,所述指令在被执行时可致使视频编码装置对视频数据块执行变换,其中执行变换包括在第二视频数据块的第二变换中再次使用与第一视频数据块的第一变换相关联的计算。
计算机可读媒体可包含例如同步动态随机存取存储器(SDRAM)的随机存取存储器(RAM)、只读存储器(ROM)、非易失性随机存取存储器(NVRAM)、电可擦除可编程只读存储器(EEPROM)、快闪存储器、磁性或光学数据存储媒体等。所述指令可由一个或一个以上处理器或其它机器执行,例如一个或一个以上数字信号处理器(DSP)、通用微处理器、一个或一个以上专用集成电路(ASIC)、一个或一个以上现场可编程逻辑阵列(FPGA)或其它等效的集成或离散逻辑电路。在一些实施例中,可在经配置以用于对音频或多媒体信息进行编码和解码的专用软件模块或硬件单元内提供本文中所描述的功能性,或将其并入组合式多媒体编码器-解码器(CODEC)中。
如果以硬件电路实施,那么本发明可针对一种经配置以对视频数据块执行变换的电路,其中在执行变换时,所述电路在第二视频数据块的第二变换中再次使用与第一视频数据块的第一变换相关联的一个或一个以上计算。举例来说,所述电路可包含集成电路或形成芯片组的电路组。所述电路可包含ASIC、FPGA、各种逻辑电路、集成电路或其组合。
这些和其它实施例在所附权利要求书的保护范围内。

Claims (6)

1.一种在电子装置内对视频数据块进行变换的方法,其包含:
通过所述电子装置执行第一变换,所述第一变换变换来自视频数据块的第一视频数据块,以及
通过所述电子装置执行第二变换,所述第二变换变换来自视频数据块的第二视频数据块,其中执行所述第二变换包括在所述第二视频数据块的所述第二变换中再次使用与所述第一视频数据块的所述第一变换相关联的计算的中间结果,其中所述第一视频数据块与所述第二视频数据块重叠,其中所述第一视频数据块包括至少一部分不会被包括在所述第二视频数据块中的视频数据,且其中所述第二视频数据块包括至少一部分不会被包括在所述第一视频数据块中的视频数据。
2.根据权利要求1所述的方法,
其中所述视频数据块包含4乘4像素块,
其中所述第一变换包含对所述4乘4像素块的多个行进行的1维变换以产生第一中间结果,以及对所述第一中间结果的一列进行的1维变换,
其中所述第二变换包含对所述4乘4像素块的多个行进行的1维变换以产生第二中间结果,以及对所述第二中间结果的一列进行的1维变换,且
其中被再次使用的与所述第一视频数据块的所述第一变换相关联的计算的中间结果包含所述第一中间结果中的至少一些中间结果。
3.根据权利要求1所述的方法,
其中所述视频数据块包含4乘4像素块,
其中所述第一变换包含对所述4乘4像素块的多个列进行的1维变换以产生第一中间结果,以及对所述第一中间结果的一行进行的1维变换,
其中所述第二变换包含对所述4乘4像素块的多个列进行的1维变换以产生第二中间结果,以及对所述第二中间结果的一行进行的1维变换,且
其中被再次使用的与所述第一视频数据块的所述第一变换相关联的计算的中间结果包含所述第一中间结果中的至少一些中间结果。
4.一种在电子装置内对视频数据块进行变换的装置,其包含
用于通过所述电子装置执行第一变换的装置,所述第一变换变换来自视频数据块的第一视频数据块,以及
用于通过所述电子装置执行第二变换的装置,所述第二变换变换来自视频数据块的第二视频数据块,其中执行所述第二变换包括在所述第二视频数据块的所述第二变换中再次使用与所述第一视频数据块的所述第一变换相关联的计算的中间结果,其中所述第一视频数据块与所述第二视频数据块重叠,其中所述第一视频数据块包括至少一部分不会被包括在所述第二视频数据块中的视频数据,且其中所述第二视频数据块包括至少一部分不会被包括在所述第一视频数据块中的视频数据。
5.根据权利要求4所述的装置,
其中所述视频数据块包含4乘4像素块,
其中所述第一变换包含对所述4乘4像素块的多个行进行的1维变换以产生第一中间结果,以及对所述第一中间结果的一列进行的1维变换,
其中所述第二变换包含对所述4乘4像素块的多个行进行的1维变换以产生第二中间结果,以及对所述第二中间结果的一列进行的1维变换,且
其中被再次使用的与所述第一视频数据块的所述第一变换相关联的计算的中间结果包含所述第一中间结果中的至少一些中间结果。
6.根据权利要求4所述的装置,
其中所述视频数据块包含4乘4像素块,
其中所述第一变换包含对所述4乘4像素块的多个列进行的1维变换以产生第一中间结果,以及对所述第一中间结果的一行进行的1维变换,
其中所述第二变换包含对所述4乘4像素块的多个列进行的1维变换以产生第二中间结果,以及对所述第二中间结果的一行进行的1维变换,且
其中被再次使用的与所述第一视频数据块的所述第一变换相关联的计算的中间结果包含所述第一中间结果中的至少一些中间结果。
CN200880104691.2A 2007-09-26 2008-09-26 用于视频编码的高效变换技术 Active CN102067606B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/861,804 2007-09-26
US11/861,804 US8654833B2 (en) 2007-09-26 2007-09-26 Efficient transformation techniques for video coding
PCT/US2008/077988 WO2009042943A2 (en) 2007-09-26 2008-09-26 Efficient transformation techniques for video coding

Publications (2)

Publication Number Publication Date
CN102067606A CN102067606A (zh) 2011-05-18
CN102067606B true CN102067606B (zh) 2014-09-17

Family

ID=40471543

Family Applications (1)

Application Number Title Priority Date Filing Date
CN200880104691.2A Active CN102067606B (zh) 2007-09-26 2008-09-26 用于视频编码的高效变换技术

Country Status (7)

Country Link
US (1) US8654833B2 (zh)
EP (1) EP2198621A2 (zh)
JP (1) JP5512524B2 (zh)
KR (2) KR101235132B1 (zh)
CN (1) CN102067606B (zh)
TW (1) TW200926830A (zh)
WO (1) WO2009042943A2 (zh)

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100846870B1 (ko) * 2006-07-06 2008-07-16 한국전자통신연구원 다수의 기본 블록들의 다차원 구성을 통한 다단계 변환장치 및 그 방법
US20080204598A1 (en) * 2006-12-11 2008-08-28 Lance Maurer Real-time film effects processing for digital video
KR101403338B1 (ko) * 2007-03-23 2014-06-09 삼성전자주식회사 영상의 부호화, 복호화 방법 및 장치
US8208065B2 (en) * 2008-07-30 2012-06-26 Cinnafilm, Inc. Method, apparatus, and computer software for digital video scan rate conversions with minimization of artifacts
US9110849B2 (en) * 2009-04-15 2015-08-18 Qualcomm Incorporated Computing even-sized discrete cosine transforms
US9069713B2 (en) * 2009-06-05 2015-06-30 Qualcomm Incorporated 4X4 transform for media coding
US8762441B2 (en) * 2009-06-05 2014-06-24 Qualcomm Incorporated 4X4 transform for media coding
US9075757B2 (en) * 2009-06-24 2015-07-07 Qualcomm Incorporated 16-point transform for media data coding
US9118898B2 (en) * 2009-06-24 2015-08-25 Qualcomm Incorporated 8-point transform for media data coding
US9081733B2 (en) * 2009-06-24 2015-07-14 Qualcomm Incorporated 16-point transform for media data coding
US8451904B2 (en) 2009-06-24 2013-05-28 Qualcomm Incorporated 8-point transform for media data coding
JP5375676B2 (ja) * 2010-03-04 2013-12-25 富士通株式会社 画像処理装置、画像処理方法、および画像処理プログラム
US9824066B2 (en) 2011-01-10 2017-11-21 Qualcomm Incorporated 32-point transform for media data coding
AU2012326873B2 (en) * 2011-10-17 2015-12-24 Kt Corporation Method and apparatus for encoding/decoding image
WO2013109838A1 (en) * 2012-01-20 2013-07-25 Sony Corporation Chroma quantization parameter extension
US9554152B2 (en) 2013-07-12 2017-01-24 Qualcomm Incorporated Concurrent processing of horizontal and vertical transforms
EP3083609B1 (en) 2013-12-19 2018-08-15 Merck Sharp & Dohme Corp. Hiv protease inhibitors
US10356440B2 (en) * 2014-10-01 2019-07-16 Qualcomm Incorporated Scalable transform hardware architecture with improved transpose buffer
CN104811696B (zh) * 2015-04-17 2018-01-02 北京奇艺世纪科技有限公司 一种视频数据的编码方法和装置
US10567800B2 (en) * 2016-11-29 2020-02-18 Qualcomm Incorporated Transform hardware architecture for video coding

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6414992B1 (en) * 1999-01-27 2002-07-02 Sun Microsystems, Inc. Optimal encoding of motion compensated video
CN1564602A (zh) * 2004-03-18 2005-01-12 华中科技大学 视频编码的整数变换矩阵选择方法及相关的整数变换方法
CN1889690A (zh) * 2006-07-12 2007-01-03 浙江大学 运用于图像编码和视频编码的离散余弦变换方法

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS60179481A (ja) * 1984-02-24 1985-09-13 Nitto Electric Ind Co Ltd 金属粉末結合用組成物
IT8921420V0 (it) * 1989-07-13 1989-07-13 Telettra Spa Sistema e circuito per il calcolo di trasformata discreta bidimensionale.
JPH07200539A (ja) 1993-12-28 1995-08-04 Matsushita Electric Ind Co Ltd 二次元dct演算装置
GB2305798B (en) * 1995-09-28 1999-10-20 Sony Uk Ltd Spatial frequency-domain video signal processing
US5894430A (en) 1996-05-20 1999-04-13 Matsushita Electric Industrial Co., Ltd. Orthogonal transform processor
US5796434A (en) * 1996-06-07 1998-08-18 Lsi Logic Corporation System and method for performing motion estimation in the DCT domain with improved efficiency
JP2000222578A (ja) 1999-02-02 2000-08-11 Matsushita Electric Ind Co Ltd パターンマッチング方法および動きベクトル検出方法
US20040028127A1 (en) 2002-08-06 2004-02-12 Raghavan Subramaniyan Method and apparatus for reducing computational complexity in video encoders
US7756351B2 (en) 2003-12-19 2010-07-13 Stmicroelectronics, Inc. Low power, high performance transform coprocessor for video compression
EP2373033A3 (en) * 2004-01-30 2011-11-30 Panasonic Corporation Picture coding and decoding method, apparatus, and program thereof
EP1730846A4 (en) 2004-03-10 2010-02-24 Sindhara Supermedia Inc METHODS AND DEVICES FOR COMPRESSING DIGITAL IMAGE DATA WITH MOTION PREDICTION
US8595281B2 (en) * 2006-01-11 2013-11-26 Qualcomm Incorporated Transforms with common factors
US8849884B2 (en) * 2006-03-29 2014-09-30 Qualcom Incorporate Transform design with scaled and non-scaled interfaces
US20080107176A1 (en) * 2006-11-02 2008-05-08 General Instrument Corporation Method and Apparatus for Detecting All Zero Coefficients

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6414992B1 (en) * 1999-01-27 2002-07-02 Sun Microsystems, Inc. Optimal encoding of motion compensated video
CN1564602A (zh) * 2004-03-18 2005-01-12 华中科技大学 视频编码的整数变换矩阵选择方法及相关的整数变换方法
CN1889690A (zh) * 2006-07-12 2007-01-03 浙江大学 运用于图像编码和视频编码的离散余弦变换方法

Also Published As

Publication number Publication date
US8654833B2 (en) 2014-02-18
EP2198621A2 (en) 2010-06-23
KR20120066681A (ko) 2012-06-22
JP5512524B2 (ja) 2014-06-04
CN102067606A (zh) 2011-05-18
JP2011509538A (ja) 2011-03-24
US20090080515A1 (en) 2009-03-26
TW200926830A (en) 2009-06-16
WO2009042943A3 (en) 2010-12-29
KR20100068470A (ko) 2010-06-23
KR101235132B1 (ko) 2013-02-20
WO2009042943A2 (en) 2009-04-02

Similar Documents

Publication Publication Date Title
CN102067606B (zh) 用于视频编码的高效变换技术
CN102893604B (zh) 用于视频的数据压缩
CN105052140A (zh) 用于下一代视频的模式和参考类型数据的内容自适应熵编码
CN100542287C (zh) 用于手持设备的编码的方法
CN101335893A (zh) 数据帧序列的有效编码/解码
KR20090105365A (ko) 움직임 추정 장치 및 이를 구비하는 동영상 부호화 장치
Celebi et al. Bit plane matching based variable block size motion estimation method and its hardware architecture
CN101729893B (zh) 基于软硬件协同处理的mpeg多格式兼容解码方法及其装置
Seidel et al. Energy-efficient SATD for beyond HEVC
Ruiz et al. An efficient VLSI architecture of fractional motion estimation in H. 264 for HDTV
Cai et al. Algorithms for transform selection in multiple-transform video compression
Tsai et al. Effective search point reduction algorithm and its VLSI design for HDTV H. 264/AVC variable block size motion estimation
Ismail et al. High performance architecture for real-time HDTV broadcasting
AlQaralleh et al. Low-complexity motion estimation design using modified XOR function
CN101227616B (zh) H.263/avc整象素向量搜索方法
Viitamäki et al. High-level synthesized 2-D IDCT/IDST implementation for HEVC codecs on FPGA
Asif et al. Optimized implementation of motion compensation for H. 264 decoder
Cho et al. An embedded merging scheme for H. 264/AVC motion estimation
Li et al. A VLSI architecture design of an edge based fast intra prediction mode decision algorithm for H. 264/AVC
Chen et al. VLSI architecture design of fractional motion estimation for H. 264/AVC
Ismail et al. An efficient adaptive high speed manipulation architecture for fast variable padding frequency domain motion estimation
Nan et al. A DST hardware structure of HEVC
Yahi et al. A speed FPGA hardware accelerator based FSBMA-VBSME used in H. 264/AVC
CN101217665A (zh) 一种视频系数的并行扫描方法
Kim et al. A Highly Utilized Hardware-Based Merge Mode Estimation with Candidate Level Parallel Execution for High-Efficiency Video Coding

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant