视频编码中具有多种成本计算方法的运动细化引擎及方法转让专利

申请号 : CN200710307623.3

文献号 : CN101325710B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : A·拉马钱德兰E·鸿邱刚

申请人 : VIXS系统公司

摘要 :

本发明涉及视频编码中具有多种成本计算方法的运动细化引擎及其方法。一种用于在对包括被分割为多个宏块的图像序列的视频输入信号进行编码的视频编码器中使用的运动补偿模块。该运动补偿模块包括运动搜索模块,其基于累计差值和(SAD)成本,对于多个宏块中的一个宏块的多个分割生成用于多个子块的运动搜索运动矢量。运动细化模块,当运动细化模块被使能时,其基于多个宏块中的所述宏块的多个子块中的每一个子块的运动搜索运动矢量并且基于累计变换差值和(SAD)成本,对于多个宏块中的所述宏块的多个分割生成用于多个子块的细化运动矢量。模式判决模块基于运动细化模块是被使能还是禁用而对SAD成本或SATD成本进行操作。

权利要求 :

1.一种用在视频编码器中的运动补偿模块,所述视频编码器对包括被分割为多个宏块的图像序列的视频输入信号进行编码,所述运动补偿模块包括:运动搜索模块,其基于累计差值和成本,对于多个宏块中的一个宏块的多个分割生成用于多个子块的运动搜索运动矢量;

耦合到所述运动搜索模块的运动细化模块,当该运动细化模块被使能时,其基于用于多个宏块中的所述宏块的多个子块中的每一个子块的运动搜索运动矢量并且基于累计变换差值和成本,对于多个宏块中的所述宏块的多个分割生成用于多个子块的细化运动矢量;

耦合到所述运动细化模块和所述运动搜索模块的模式判决模块,当所述运动细化模块对于多个宏块中的所述宏块被使能时,所述模式判决模块基于与用于多个宏块中的所述宏块的多个分割的多个子块中的每一个子块的细化运动矢量相关的累计变换差值和成本,选择所述多个分割中的选定分割;当所述运动细化模块对于多个宏块中的所述宏块被禁用时,所述模式判决模块基于与用于多个宏块中的所述宏块的多个分割的多个子块中的每一个子块的运动搜索运动矢量相关的累计差值和成本,选择所述多个分割的选定分割,并且对于与多个宏块中的所述宏块的选定分割相对应的多个子块中的每一个子块确定最终运动矢量;以及耦合到所述模式判决模块的重建模块,其生成与用于多个宏块中的所述宏块的多个子块的最终运动矢量相对应的残余像素值。

2.如权利要求1所述的运动补偿模块,其中,所述运动细化模块基于特定应用被选择性地禁用。

3.如权利要求1所述的运动补偿模块,其中,所述运动搜索模块和所述运动细化模块能够在与多种压缩标准相对应的多种选定模式下操作,并且其中,所述运动细化模块基于特定的压缩标准被选择性地禁用。

4.如权利要求1所述的运动补偿模块,其中,所述运动细化模块对于所述宏块被选择性地禁用。

5.如权利要求1所述的运动补偿模块,其中,基于与所述宏块的多个分割中的至少一个分割相关的总成本与跳过细化成本阈值之间的比较,所述运动细化模块对于所述宏块被选择性地禁用。

6.如权利要求1所述的运动补偿模块,其中,在所述运动细化模块对于多个宏块中的所述宏块被使能时,所述模式判决模块基于与用于多个宏块中的所述宏块的多个分割的多个子块中的每一个子块的细化运动矢量相关的累计变换差值和成本,为所述宏块选择帧模式和场模式中的一种模式,并且在所述运动细化模式对于多个宏块中的所述宏块被禁用时,所述模式判决模块基于与用于多个宏块中的所述宏块的多个分割的多个子块中的每一个子块的运动搜索运动矢量相关的累计差值和成本,为所述宏块选择帧模式和场模式中的一种模式。

7.如权利要求1所述的运动补偿模块,其中,所述运动搜索模块和所述运动细化模块能够在多种选定模式下操作,包括与第一压缩标准相对应的第一模式、与第二压缩标准相对应的第二模式以及与第三压缩标准相对应的第三模式。

8.如权利要求7所述的运动补偿模块,其中,第一压缩标准包括H.264标准。

9.如权利要求7所述的运动补偿模块,其中,第二压缩标准包括运动图像专家组(MPEG)标准。

10.如权利要求7所述的运动补偿模块,其中,第三压缩标准包括电影与电视工程师学会(SMPET)标准。

11.一种用在视频编码器中的方法,所述视频编码器对包括被分割为多个宏块的图像序列的视频输入信号进行编码,所述方法包括:基于累计差值和成本,对于多个宏块中的一个宏块的多个分割生成用于多个子块的运动搜索运动矢量;

当被使能时,基于多个宏块中的所述宏块的多个子块中的每一个子块的运动搜索运动矢量并且基于累计变换差值和成本,对于多个宏块中的所述宏块的多个分割生成用于多个子块的细化运动矢量;

当生成细化运动矢量的步骤对于多个宏块中的所述宏块被使能时,基于与用于多个宏块中的所述宏块的多个分割的多个子块中的每一个子块的细化运动矢量相关的累计变换差值和成本,选择所述多个分割中的选定分割;

当生成细化运动矢量的步骤对于多个宏块中的所述宏块被禁用时,基于与用于多个宏块中的所述宏块的多个分割的多个子块中的每一个子块的运动搜索运动矢量相关的累计差值和成本,选择所述多个分割中的选定分割;

对于与多个宏块中的所述宏块的选定分割相对应的多个子块中的每一个子块确定最终运动矢量;以及生成与用于多个宏块中的所述宏块的多个子块的最终运动矢量相对应的残余像素值。

12.如权利要求11所述的方法,其中,生成细化运动矢量的步骤基于特定的应用被选择性地禁用。

13.如权利要求11所述的方法,其中,所述方法能在与多种压缩标准相对应的多种选定模式下操作,其中,生成细化运动矢量的步骤基于特定的压缩标准被选择性地禁用。

14.如权利要求11所述的方法,其中,生成细化运动矢量的步骤对于所述宏块被选择性地禁用。

15.如权利要求11所述的方法,其中,生成细化运动矢量的步骤基于与所述宏块的多个分割中的至少一个分割相关的总成本与跳过细化成本阈值之间的比较,对于所述宏块被选择性地禁用。

16.如权利要求11所述的方法,还包括:

当生成细化运动矢量的步骤对于多个宏块中的所述宏块被使能时,基于与用于多个宏块中的所述宏块的多个分割的多个子块中的每一个子块的细化运动矢量相关的累计变换差值和成本,为所述宏块选择帧模式和场模式中的一种模式;

当生成细化运动矢量的步骤对于多个宏块中的一个宏块被禁用时,基于与用于多个宏块中的所述宏块的多个分割的多个子块中的每一个子块的运动搜索运动矢量相关的累计差值和成本,为所述宏块选择帧模式和场模式中的一种模式。

17.如权利要求11所述的方法,其中,所述方法能够在多种选定模式下操作,包括与第一压缩标准相对应的第一模式、与第二压缩标准相对应的第二模式以及与第三压缩标准相对应的第三模式。

18.如权利要求17所述的方法,其中,第一压缩标准包括H.264标准。

19.如权利要求17所述的方法,其中,第二压缩标准包括运动图像专家组(MPEG)标准。

20.如权利要求17所述的方法,其中,第三压缩标准包括电影与电视工程师学会(SMPET)标准。

21.一种用在视频编码器中的运动补偿模块,所述视频编码器对包括被分割为多个宏块的图像序列的视频输入信号进行编码,所述运动补偿模块包括:运动搜索模块,其基于累计差值和成本,对于多个宏块中的一个宏块的多个分割生成用于多个子块的运动搜索运动矢量;

耦合到所述运动搜索模块的运动细化模块,当所述运动细化模块被使能时,其基于用于多个宏块中的所述宏块的多个子块中的每一个子块的运动搜索运动矢量并且基于累计变换差值和成本,对于多个宏块中的所述宏块的多个分割生成用于多个子块的细化运动矢量;

耦合到所述运动细化模块和所述运动搜索模块的模式判决模块,当所述运动细化模块对于多个宏块中的所述宏块被使能时,所述模式判决模块基于与用于多个宏块中的所述宏块的多个分割的多个子块中的每一个子块的细化运动矢量相关的累计变换差值和成本,选择所述多个分割中的选定分割并选择帧模式和场模式中的一种模式,当所述运动细化模块对于多个宏块中的所述宏块被禁用时,所述模式判决模块基于与用于多个宏块中的所述宏块的多个分割的多个子块中的每一个子块的运动搜索运动矢量相关的累计差值和成本,选择所述多个分割中的选定分割并选择帧模式和场模式中的一种模式,并且对于与多个宏块中的所述宏块的选定分割相对应的多个子块中的每一个子块确定最终运动矢量;以及耦合到所述模式判决模块的重建模块,其生成与用于多个宏块中的所述宏块的多个子块的最终运动矢量相对应的残余像素值;

其中,所述运动搜索模块和所述运动细化模块能够在与多种压缩标准相对应的多种选定模式下操作,并且其中,所述运动细化模块基于特定的压缩标准被选择性地禁用。

22.如权利要求21所述的运动补偿模块,其中,多种压缩标准包括H.264标准、运动图像专家组(MPEG)标准和电影与电视工程师学会(SMPET)标准中的至少一个。

23.如权利要求1所述的运动补偿模块,其中,所述运动细化模块基于与所述宏块的多个分割中的至少一个分割相关的总成本与跳过细化成本阈值之间的比较,对于所述宏块被选择性地禁用。

说明书 :

视频编码中具有多种成本计算方法的运动细化引擎及方法

[0001] 相关申请的交叉引用
[0002] 本申请涉及同时提交并共同转让的下述美国专利申请:
[0003] MOTION REFINEMENT ENGINE FOR USE IN VIDEO ENCODINGIN ACCORDANCE WITH A PLURALITY OF COMPRESSIONSTANDARDS AND METHODS FOR USE THEREWITH,序号为______;
[0004] MOTION REFINEMENT ENGINE WITH SELECTABLEPARTITIONINGS FOR USE IN VIDEO ENCODING AND METHODS FORUSE THEREWITH,序号为______;
[0005] MOTION REFINEMENT ENGINE WITH A PLURALITY OF COSTCALCULATION METHODS FOR USE IN VIDEO ENCODING ANDMEHTODS FOR USE THEREWITH,序号为_______;
[0006] 以上申请的全部内容以引用的方式结合于本文中。

技术领域

[0007] 本发明涉及在诸如视频编码器/编解码器的装置中使用的编码。

背景技术

[0008] 对于现代视频处理装置来说视频编码已经成为一个重要的问题。鲁棒编码算法允许视频信号以更小的带宽传输并在更小的存储器中存储。但是,这些编码方法的精确度需要面对正逐渐习惯于更高分辨率和更高图片质量的用户的苛求。已经公布用于多种编码方法的标准包括H.264标准,该H.264标准也被称为MPEG-4 part 10或高级视频编码(AVC)。虽然该标准提出了很多功能强的技术,但进一步的改进也可以提高实施这些方法的性能和速度。
[0009] 通过这样的系统与本发明的比较,常规和传统方法的其它限制和缺点对于本领域普通技术人员来说将是显而易见的。

附图说明

[0010] 图1-3呈现根据本发明实施例的各种视频处理装置的实物图形表示。
[0011] 图4呈现根据本发明实施例的视频处理装置125的方框图表示。
[0012] 图5呈现根据本发明实施例的包括运动搜索模块204、运动细化模块206和模式判决模块212的视频编码器102的方框图表示。
[0013] 图6呈现根据本发明实施例的示例性的顶帧与底帧宏块(250,252)和示例性的顶场与底场宏块(254,256)之间关系的图示。
[0014] 图7呈现根据本发明实施例的示例性的宏块分割的图示。
[0015] 图8呈现了视频输入信号的多个宏块的图示,其示出了在特定宏块的运动补偿或编码中使用的邻近宏块的例子。
[0016] 图9呈现根据本发明实施例的包括运动细化引擎175的视频编码器102的方框图表示。
[0017] 图10呈现根据本发明实施例的方法的流程图表示。
[0018] 图11呈现根据本发明实施例的方法的流程图表示。
[0019] 图12呈现根据本发明的实施例的方法的流程图。
[0020] 图13呈现根据本发明实施例的方法的流程图表示。
[0021] 图14呈现根据本发明实施例的方法的流程图表示。
[0022] 图15呈现根据本发明实施例的方法的流程图表示。
[0023] 图16呈现根据本发明实施例的方法的流程图表示。
[0024] 图17呈现根据本发明实施例的方法的流程图表示。
[0025] 图18呈现根据本发明实施例的方法的流程图表示。
[0026] 图19呈现根据本发明实施例的方法的流程图表示。

具体实施方式

[0027] 图1-3呈现根据本发明实施例的不同的视频处理装置的示意图。具体来说,带内置数字视频记录器功能或独立的数字视频记录器的机顶盒10、计算机20和便携式计算机30示出了结合包括本发明的一个或多个特征或功能的视频处理装置125的电子装置。虽然示出了这些特定的装置,但根据结合图4-19和所附权利要求描述的方法和系统,视频处理装置125还包括能够对视频内容进行编码的任何装置。
[0028] 图4呈现根据本发明实施例的视频处理装置125的方框图表示。具体来说,视频处理装置125包括接收模块100,例如,电视接收机、有线电视接收机、卫星广播接收机、宽带调制解调器、3G收发机或其它能够接收接收到的信号98并通过时分复用、频分复用或其它复用技术来提取一个或多个视频信号110的信息接收机或收发机。视频编码模块102被耦合到接收模块100以将视频信号编码或转码成与视频显示装置104相对应的格式。
[0029] 在本发明一个实施例中,接收到的信号98是广播视频信号,例如,电视信号、高清晰度电视信号、增强高清晰度电视信号或者其它直接地或通过一个或多个卫星或其它中继站或者通过有线网络、光网络或其它传输网络通过无线介质传输的广播视频信号。另外,接收到的信号98还可由存储的视频文件生成,从诸如磁带、磁盘或光盘的记录介质中回放,并且可以包括通过诸如局域网、广域网、城域网或因特网的公用网络或专用网络传输的流视频信号。
[0030] 视频信号110可包括模拟视频信号,其以多种视频格式中的任一种被格式化,包括:美国国家电视系统委员会制式(NTSC)、逐行倒相制式(PAL)或顺序传送彩色与记忆制式(SECAM)。处理后的视频信号112包括诸如H.264即MPEG-4 Part 10高级视频编码(AVC)的数字视频编解码器标准或其它数字格式,例如运动图像专家组(MPEG)格式(例如,MPEG1、MPEG2或MPEG4)、Quicktime格式、Real Media格式、Windows Media Video(WMV)或音视频交错格式(AVI)),或另一种标准的或专有的数字视频格式。
[0031] 视频显示装置104可包括电视机、监视器、计算机、手持装置或其它视频显示装置,其基于将处理后的视频信号112解码为流视频信号或通过存储的数字视频文件的回放,例如通过投影,直接或间接地创建光学图像流。
[0032] 视频编码器102包括根据本发明运行的运动补偿模块150,具体来说,包括下面结合图5-19描述的许多可选功能和特征。
[0033] 图5呈现根据本发明实施例的包括运动搜索模块204、运动细化模块206和模式判决模块212的视频编码器102的方框图表示。具体来说,视频编码器102根据H.264标准、MPEG-4标准、VC-1(SMPTE标准421M)或其它标准的一些功能和特征进行操作以对经由信号接口198被转换为数字格式的视频输入信号110进行编码。
[0034] 视频编码器102包括可使用单个处理装置或多个处理装置执行的处理模块200。该处理装置可以是微处理器、协处理器、微控制器、数字信号处理器、微型计算机、中央处理单元、现场可编程门阵列、可编程逻辑器件、状态机、逻辑电路、模拟电路、数字电路、和/或任何基于存储在诸如存储模块202的存储器中的可操作指令来操作信号(模拟和/或数字)的装置。存储模块202可以是一个单独的存储装置或多个存储装置。该存储装置可包括硬盘驱动器或其它盘驱动器、只读存储器、随机访问存储器、易失性存储器、非易失性存储器、静态存储器、动态存储器、闪存、缓存和/或任何存储数字信息的装置。注意,当处理模块通过状态机、模拟电路、数字电路和/或逻辑电路执行其功能的一种或多种时,存储相应可操作指令的存储器可被嵌入在包括状态机、模拟电路、数字电路和/或逻辑电路的电路内部或其外部。
[0035] 处理模块200和存储模块202通过总线220连接到信号接口198和多个其它模块,例如,运动搜索模块204、运动细化模块206、直接模式模块208、帧内预测模块210、模式判决模块212、重建模块214、熵编码模块216、邻居管理模块218、正向变换和量化模块220以及去方块效应滤波模块222。视频编码器102的各模块可以根据处理模块200的具体实施方案用软件、固件或硬件来实现。还需要注意的是,本发明的软件实现可被存储在诸如磁盘或光盘、只读存储器或随机访问存储器的有形存储介质上,并且还可以被生产为制品。虽然示出了一个具体的总线结构,但同样可以根据本发明实现使用一个或多个模块和/或附加总线之间的直接连接的可选结构。
[0036] 运动补偿模块150包括运动搜索模块204,其基于将来自视频输入信号110的帧和/或场的行和列分割成诸如16像素*16像素大小的像素值的宏块,处理来自视频输入信号110的图片。在本发明的一个实施例中,运动搜索模块为视频信号的场和/或帧的每个宏块或宏块对确定一个或多个运动矢量(取决于将宏块分割成多个子块,如结合图7进一步描述的那样),所述运动矢量表示将宏块(或子块)从视频信号的参考帧或参考场移动到当前帧或场的位移。在操作中,运动搜索模块在搜索范围内操作,以在诸如1像素分辨率的整数像素精度等级上查找当前帧或场中的宏块(或子块)。基于用于确定具有最有利(如最低)成本的位置和相应运动矢量的成本公式来估计候选位置。
[0037] 在本发明的一个实施例中,成本公式是基于参考宏块和候选宏块像素值之间的绝对差值和(SAD)与加权比率项(weighted rate term)的和,该加权比率项表示对候选运动矢量和预测运动矢量(PMV)之间或者候选运动矢量和估计预测运动矢量之间的差进行编码所需要的位数,其中,预测运动矢量是基于当前宏块右边的邻近宏块以及基于视频输入信号的前一行中的相邻的当前宏块的运动矢量而确定的,估计预测运动矢量是基于视频输入信号的前一行中的相邻的当前宏块的运动矢量而确定的。此外,成本计算避免了在当前宏块内的邻近子块的使用。照这样,运动搜索模块204能够对宏块进行操作以同时为宏块中的每个子块确定运动搜索运动矢量。
[0038] 运动细化模块206基于运动搜索运动矢量生成用于多个宏块中的每个宏块的细化运动矢量。在本发明的一个实施例中,运动细化模块为视频输入信号110的场和/或帧的每个宏块或宏块对确定表示将宏块从视频信号的参考帧或参考场移动到当前帧或场的位移的细化运动矢量。在操作中,运动细化模块将当前帧或场中的宏块的位置细化为诸如1/4像素分辨率的更高像素精度等级。同样基于用于确定具有最有利(例如,最低)成本的位置和细化运动矢量的成本公式来估计候选位置。在运动搜索模块的情形中,成本公式是基于参考宏块和候选宏块像素值之间的绝对差值和(SAD)与加权比率项的和,该加权比率项表示对候选运动矢量和预测运动矢量(PMV)之间或候选运动矢量和估计预测运动矢量之间的差进行编码所需要的位数,其中,预测运动矢量是基于当前宏块右边的邻近宏块以及基于视频输入信号的前一行中的相邻的当前宏块的运动矢量而确定的,估计预测运动矢量是基于视频输入信号的前一行中的相邻的当前宏块的运动矢量而确定的。此外,成本计算避免了在当前宏块内的邻近子块的使用。照这样,运动细化模块206能够对宏块进行操作,以同时为宏块中的每个子块确定运动搜索运动矢量。
[0039] 此外,如果跳过模式成本(skip mode cost)比跳过模式阈值更有利,则运动搜索模块202或运动细化模块204可通过估计与固定运动矢量相关的成本,以及通过跳过运动搜索和/或运动细化的若干部分,来确定视频输入信号110的P片段的跳过模式成本。
[0040] 需要注意的是,当估计的预测运动矢量被使用时,成本公式避免了来自当前行的运动矢量的使用,并且运动搜索模块204和运动细化模块206均能以流水线方式且在视频输入信号110的整个行上以并行的方式操作以同时为行中的每个宏块确定细化运动矢量。
[0041] 直接模式模块208基于与像素宏块相邻的多个宏块,生成用于多个宏块中的每个宏块的直接模式运动矢量。在本发明的一个实施例中,直接模式模块208例如以H.264标准定义的方式操作来确定直接模式运动矢量并基于对视频输入信号110的B片段的直接模式运动矢量的成本确定与直接模式运动矢量相关的成本。
[0042] 虽然以上模块侧重于运动矢量的帧间预测,但帧内预测模块210生成用于多个宏块中的每个宏块的最佳帧内预测模式。具体来说,帧内预测模块210基于从邻近宏块确定的运动矢量来确定最佳帧内预测模式和相关的成本,以诸如H.264标准定义的方式来估计多个帧内预测模式。
[0043] 模式判决模块212基于与细化运动矢量、直接模式运动矢量和最佳帧内预测模式相关的成本,为多个宏块中的每个宏块确定最终运动矢量,具体来说,该方法实现最有利(最低)成本,不然则是可接受的成本。重建模块214通过针对多个宏块中的每个宏块生成与最终运动矢量相对应的残余亮度和/或色度像素值完成运动补偿。
[0044] 视频编码器102的正向变换和量化模块220通过将编码和量化的残余像素值变换为量化的变换后的系数,从而生成处理后的视频信号112,该量化的变换后的系数可诸如通过熵编码模块216中的熵编码被进一步编码,通过去方块效应滤波模块222被滤波,并被传输和/或存储为处理后的视频信号112。
[0045] 如上所述,运动补偿模块150中的许多模块基于为邻近宏块所确定的运动矢量而运作。当对多个宏块中的至少一个邻近宏块操作时,邻居管理模块218生成并存储用于多个宏块中的至少一个宏块的邻居数据,以供运动搜索模块204、运动细化模块206、直接模式模块208、帧内预测模块210、熵编码模块216和去方块效应滤波模块222中的至少一个模块检索。在运动矢量(或在宏块分割的情况下的多个运动矢量,结合图7和8进一步论述)和其它编码数据被最终化时,邻近数据被存储用在还未被处理、但仍需要使用该数据的邻近宏块的处理中。此外,邻近数据还被存储用于未来图片的处理,例如,视频输入信号110的未来帧和/或场。
[0046] 在本发明的一个实施例中,诸如链接表、数组或一个或多个寄存器的数据结构被用来关联和存储每个宏块的邻居数据。邻居数据包括运动矢量、参考指标、量化参数、编码块模式、宏块类型、帧内/帧间预测模块类型的邻近像素值和/或来自相邻宏块和/或子块的其它数据,这些数据被本发明的一个或多个模块或过程用来计算当前宏块的结果。例如,为了供运动搜索模块204和运动细化模块206确定预测运动矢量,需要邻居的运动矢量和参考指标。除了这些数据之外,直接模式模块208需要前面的参考图片的协同找到的宏块(co-locatedmacroblock)的运动矢量。去方块效应滤波模块222根据使用邻居的运动矢量、量化参数、参考指标和编码块模式等确定的一组滤波强度而进行操作。对于熵编码模块216中的熵编码,则需要运动矢量差(MVD)、宏块类型、量化参数变量δ、帧间预测类型等。
[0047] 考虑一个例子,其中,特定的宏块MB(x,y)需要来自宏块MB(x-1,y-1)、MB(x,y-1)、MB(x+1,y-1)和MB(x-1,y)的邻居数据。在现有技术的编解码器中,邻居数据的准备需要计算相关邻居子块的位置。但是,该计算并不是像在传统视频编码标准中一样直接。例如,在H.264编码中,支持多分割类型使得子块的大小和形状显著变化。此外,支持宏块自适应帧和场(MBAFF)编码允许宏块处于帧模式或场模式。对于每种模式,在H.264中定义了一种邻居导出方法。因此,计算需要相应地考虑每种模式。此外,为了得到所需要的所有邻居数据(neighbor data),该推导需要被调用四次,这是因为存在四个有关的邻居——MB(x-1,y-1)、MB(x,y-1)、MB(x+1,y-1)、和MB(x-1,y)。因此,直到四个邻居的位置已经被确定并且它们的数据都从存储器中取出,才可以开始当前宏块MB(x,y)的编码。
[0048] 本发明避免了以上问题。具体来说,当每个宏块都被处理并且最终的运动矢量和编码数据被确定时,邻居数据被存储在用于将需要该数据的每个邻近宏块的数据结构中。因为邻居数据被预先准备,所以在当前宏块MB(x,y)准备被处理时其可立即开始处理。精确确认邻居的负担实际上被重新分配给其之前的宏块。因此宏块的编码会更流畅和迅速。
换句话说,当对于MB(x-1,y-1)确定了最终运动矢量时,邻居数据被存储用于还未被处理的每个邻近宏块,包括MB(x,y)以及其他邻近宏块,例如MB(x,y-1)、MB(x-2,y)、MB(x-1,y)。类似地,当对于MB(x,y-1),MB(x+1,y-1)和MB(x-1,y)确定了最终运动矢量时,邻居数据被存储用于与那些还未被处理的宏块(包括MB(x,y))中的每个宏块相对应的每个邻近宏块。照这样,当MB(x,y)准备被处理时,邻居数据已经被存储在与该宏块相对应的数据结构中以便快速检索。
[0049] 然后可利用检索到的数据进行运动补偿。具体来说,运动搜索模块204和/或运动细化模块可利用检索到的邻居数据生成用于多个宏块中的每个宏块的至少一个预测运动矢量(例如,标准PMV或估计的预测运动矢量)。此外,直接模式模块208可利用检索到的邻居数据生成用于多个宏块中的每个宏块的至少一个直接模式运动矢量,并且帧内预测模块210可利用检索到的邻居数据生成用于多个宏块中的每个宏块的最佳帧内预测模式,并且编码模块216可将检索到的邻居数据用在熵编码中,分别如在H.264标准、MPEG-4标准、VC-1(SMPTE标准421M)中所述的那样或通过其它标准或其它方法。
[0050] 虽然未清楚地示出,但视频编码器102可包括存储器缓存、存储器管理模块、梳状滤波器或其它视频滤波器,和/或支持将视频输入信号110编码为处理后的视频信号112的其它模块。
[0051] 图6呈现根据本发明实施例的示例性的顶帧与底帧宏块(250,252)和示例性的顶场和底场宏块(254,256)之间关系的图示。在这个实施例中,运动搜索模块204通过同时估计宏块对生成用于多个宏块中的每个宏块的运动搜索运动矢量,其中,该宏块对包括视频输入信号110的一帧中的顶帧宏块250和底帧宏块252以及视频输入信号110的相应场中的顶场宏块254和底场宏块256。
[0052] 考虑所示的例子,每个宏块都是16像素×16像素大小。通过将包括顶帧宏块250和底帧宏块252的当前帧的候选帧宏块对与参考帧的宏块对相比较,以全像素分辨率或其它分辨率(更粗或更细的分辨率)执行运动搜索。此外,来自候选帧宏块对的第一奇偶线(例如,奇数线)被分组形成顶场宏块254。类似地,来自候选帧宏块对的第二奇偶线(例如,偶数线)被分组形成底场宏块256。运动搜索模块204计算与多条线相关的成本,并且基于对所述多条线中的多条顶线所累计的成本而生成与顶帧宏块250相关的成本,基于对所述多条线中的多条底线所累计的成本而生成与底帧宏块252相关的成本,基于对所述多条线中的多条第一奇偶线所累计的成本与顶场参考或底场参考相比较而生成与顶场宏块254相关的成本,并且基于对所述多条线的多条第二奇偶线所累计的成本并且基于顶场参考或底场参考而生成与底场宏块256相关的成本。照这样,可以同时生成用于宏块对的六个成本:与参考的顶帧相比较的顶帧;与参考的底帧相比较的底帧;与参考的顶场相比较的顶场;与参考的底场相比较的底场;与参考的底场相比较的顶场;与参考的顶场相比较的底场。
[0053] 这些成本中的每一个可基于当前帧或场与参考帧或场之间的像素值的绝对差值和(SAD)来生成。这些SAD可在单个通道中基于每条线的累计结果被同时计算。对于特定宏块(顶帧或底帧,顶场或底场)的总的SAD可通过对组成该特定宏块的线的SAD求和来确定。可选地,基于诸如4×1段的更小的段,可在单个通道中计算这些SAD,上述更小的段可以累计成子块,而这些子块又可以累计成总的宏块总和。该可选的安排特别可用于基于将宏块分割为更小的子块而工作的运动搜索模块,这一点将结合图7进行进一步论述。
[0054] 运动搜索模块204特别适当地适于结合宏块自适应帧和场处理进行操作。用于当前宏块对的帧模式成本可按照如上所述的方式被生成。此外,运动搜索模块204可选地基于在当前底场宏块和底场宏块参考之间、当前底场宏块和顶场宏块参考之间、当前顶场宏块和底场宏块参考之间、以及当前顶场宏块和顶场宏块参考之间累计的差(例如,SAD)生成场判决。场判决包括确定哪种组合(顶/顶,底/底)或(顶/底,底/顶)具有更低的成本。类似地,基于帧模式成本是比场模式成本更有利(例如,更低)还是更不利(例如,更高),基于场模式判决,运动搜索模块204可以任意地选择帧模式或场模式用于特定的宏块对。此外,对帧和场进行操作的运动补偿模块150的其它模块可以类似地操作。
[0055] 具体来说,邻居管理模块218生成邻居数据,该邻居数据包括当在帧模式下处理时供在至少一个宏块下方的一行中的邻近宏块检索的帧下方邻居数据以及当在场模式下处理时供在至少一个宏块下方的一行中的邻近宏块检索的场下方邻居数据。此外,邻居数据包括当在场模式下处理时供在至少一个宏块右边的邻近宏块检索的帧右侧邻居数据以及当在场模式下处理时供在至少一个宏块右边的邻近宏块检索的场右侧邻居数据。照这样,利用邻居数据操作并可以在帧模式或场模式下操作的运动补偿模块150的运动搜索模块和其它模块可直接访问用于在所关心的宏块上方的帧模式邻居的帧模式邻居数据、用于在所关心的宏块上方的场模式邻居的场模式邻居数据、用于在所关心的宏块左边的帧模式邻居的帧模式邻居数据和/或用于在所关心的宏块左边的场模式邻居的场模式邻居数据。如前所述,该信息在前面的宏块的处理中被保存,不管宏块本身是在帧模式下还是在场模式被处理,并且可以通过从存储器中直接检索,而不需要查找表或进一步处理,就可以在所关心的宏块的处理过程中访问该信息。
[0056] 图7呈现将视频输入信号的宏块分割为多个子块的图示。具体来说,虽然以上结合图5所描述的模块可例如根据H.264标准对具有例如16像素*16像素大小的宏块进行操作,但是宏块可被分割为更小尺寸的子块,如在一个边上是4像素,其中参照宏块描述的功能和特征适用于每个子块,子块的各个像素位置用圆点表示。例如,运动搜索模块204可生成用于每个宏块中的每个子块的单独的运动搜索运动矢量等。
[0057] 宏块302表示根据H.264标准分割成子块的一个例子。宏块300、304和306表示其它可能的分割成子块的例子。具体来说,宏块300是被分割为一个8×16子块和两个8×8子块的16×16宏块。宏块302是被分割为三个8×8子块和四个4×4子块的16×16宏块。宏块304是被分割为一个8×16子块、一个8×8子块和两个4×8子块的16×16宏块。宏块306是被分割为一个8×8子块、三个4×8子块、两个8×4子块、和两个4×4子块的16×16宏块。由于需要多种补偿方法,将宏块分割成更小的子块增加了运动补偿的复杂性,例如运动搜索不仅要确定用于每个子块的运动搜索运动矢量,还要确定在特定宏块的所有可能分割的集合范围内的最佳运动矢量。然而,结果可以达到更精确的运动补偿并且降低在解码的视频图像中的压缩伪像。
[0058] 图8呈现视频输入信号的多个宏块的图示,其示出了在特定宏块的运动补偿或编码中使用的邻近宏块的例子。三个宏块MB n-1、MB n和MB n+1被显示为在帧或场模式下的视频输入信号的三行:行i-1、行i和行i+1。为了清楚而省略了表示个体像素位置的圆点。
[0059] 例如,考虑视频编码器102正在对宏块MB(n,i)进行操作。进一步考虑,运动细化模块206、运动搜索模块204、直接模式模块208、帧间预测模块210和编码模块216可能需要为MB(n-1,i-1)中的4×4子块D0、MB(n,i-1)中的子块B0、MB(n+1,i-1)中的子块C0和MB(n-1,i)中的子块A0而确定的最终运动矢量。当MB(n-1,i-1)被处理时,D0的运动矢量连同用于其它邻居的(例如,MB(n,i-1)、MB(n-2,i)和MB(n-1,i))的邻居数据一起被存储在与MB(n,i)相关的数据结构中。当MB(n,i-1)被处理时,B0的运动矢量连同用于其它邻居的其它邻居数据一起被存储在与MB(n,i)相关的数据结构中。当MB(n+1,i-1)被处理时,C0的运动矢量连同用于其它邻居的其它邻居数据一起被存储在与MB(n,i)相关的数据结构中。并且当MB(n-1,i)被处理时,D0的运动矢量连同用于其它邻居的其它邻居数据一起被存储在与MB(n, i)相关的数据结构中。照这样,当MB(n,i)被处理时,必要的邻居数据中的任一个都可以容易地从数据结构中检索到。
[0060] 虽然以上讨论涉及如结合图6讨论的帧或场模式下的处理,但帧模式和场模式的邻居数据均可以被保存,以供随后在邻近宏块的处理中根据需要进行检索。此外,虽然以上讨论集中在单独的宏块,但基于宏块对的处理的邻居数据也可与例如由从直接在宏块对的处理中生成的、从宏块对内的顶宏块导出的底宏块所使用的邻居数据一起被存储。
[0061] 图9呈现根据本发明实施例的包括运动细化引擎175的视频编码器102的方框图。除了之前已经描述过的由相同的附图标记所指示的模块之外,运动细化引擎175包括一个共享存储器205,其可以单独地由存储器模块202实现或者是该存储器模块202的一部分。此外,运动细化引擎175可以用专用硬件配置实现,其具有能够使用不同的参考图片处理子像素搜索的非常通用的设计——不管帧或场并且不管时间上向前、时间上向后、或向前和向后之间的混合。运动细化引擎175可在多种压缩模式下操作以在优化的单个框架中支持多种不同的压缩算法,例如H.264、MPEG-4、VC-1等。可以只针对色度、只针对亮度、或同时针对色度和亮度进行重建。
[0062] 例如,这些压缩模式的性能可以包括:
[0063] H.264:
[0064] 1.当MBAFF为ON时,对于向前/向后和混合方向,对所有分割成大小为(16×16)、(16×8)、(8×16)、(8×8)的子块的大分割进行运动搜索和细化。这还包括场和帧MB类型。
[0065] 2.当MBAFF为OFF时,对于向前/向后和混合方向,对分割成(16×16)、(16×8)、(8×16)、(8×8)的子块的所有分割、以及细分成大小为(8×8)、(8×4)、(4×8)、(4×4)的子块的子分割进行运动搜索和细化。
[0066] 3.计算MBAFF ON和OFF时的直接模式和/或跳过模式成本。
[0067] 4.模式判决是基于在MBAFF ON和OFF下的所有以上分割。当调用亮度运动重建时,隐含地执行相应分割的色度重建。
[0068] 5.运动细化和补偿包括使用H.264标准的6抽头滤波算法的四分之一像素精度最终运动矢量。
[0069] VC-1:
[0070] 1.在场和帧模式下,对于向前、向后和混合方向,对于16×16和8×8分割的运动搜索和细化。
[0071] 2.模式判决是基于以上分割中的每一个。这包括亮度和相应色度重建。
[0072] 3.运动细化和补偿包括VC-1标准的双线性半像素精度最终运动矢量。
[0073] MPEG-4;
[0074] 1.在场和帧模式下,对于向前、向后和混合方向,对于16×16和8×8分割的运动搜索和细化。
[0075] 2.模式判决是基于所有以上分割。重建只涉及亮度。
[0076] 3.运动细化和补偿包括VC-1标准的双线性半像素精度MV。
[0077] 此外,运动细化引擎175可在下述两种基本工作模式下运行:(1)运动细化模块206的操作由包括在存储器模块202中并且由处理模块200执行的软件/固件算法触发和/或指挥;(2)运动细化模块206的操作由运动搜索模块204触发,而很少有或没有软件/固件干涉。第一模式根据可能按本文修改的一个或多个标准来运行。第二操作模式能以自动方式被动态控制并被快速执行,而没有质量损失。
[0078] 共享存储器205可以单独地、独立地并同时地被运动搜索模块204和运动细化模块206访问,以协助第一或第二操作模式。具体来说,共享存储器205包括存储器的一部分,例如存储由运动搜索模块204执行的计算产生的结果(例如,运动矢量和成本)的成本表。该成本表可包括共享存储器中的多个固定位置,其中,这些计算结果被存储以供运动细化模块206随后检索,尤其用在第二操作模式中。除了成本表之外,共享存储器205还可存储附加信息(例如,提示表),该附加信息也是基于由运动搜索模块204执行的计算结果,告知运动细化模块206和在任一模式下使用的判决的固件。例子包括:识别哪些分割是好的,其它的是不好的和/或可被丢弃的;识别帧模式或场模式哪个更好和好到什么程度;以及识别向前、向后和混合方向中哪个方向好和好到什么程度等。
[0079] 运动搜索模块可基于它获得的结果提早终止其计算。在任何情况下,运动搜索可通过从运动搜索模块204发送到运动细化模块206的触发信号来直接触发运动细化的开始。运动细化模块206可以基于存储在提示表和/或成本表中的数据可选择只细化特定的分割、特定的模式(帧或场)和/或特定的方向(向前、向后或混合方向),其中运动搜索模块204或运动细化模块206基于成本阈值或其它性能标准确定上述特定的分割、特定的模式(帧或场)和/或特定的方向(向前、向后或混合方向)是好的。可选的是,运动细化模块能够以更统一的方法基于软件/固件算法直接进行。照这样,运动细化引擎175能够动态和选择性地操作以流水线式地和并行地完成运动搜索和运动细化,使得基于由运动搜索模块204执行的计算,对于向前、向后和混合方向或对于仅一个特定方向,对选定分割、单个分割的所有子块、分割组或基于帧和场、只基于帧或场模式的整个MB/MB对执行细化。
[0080] 在操作中,运动搜索模块204针对多个MB/MB对的一个宏块的多个分割同时生成用于多个子块的运动搜索运动矢量。当运动细化模块206被使能时,其基于用于多个宏块的所述宏块的多个子块中的每一个子块的运动搜索运动矢量,针对多个宏块的MB/MB对的多个分割同时生成用于多个子块的细化运动矢量。模式判决模块基于与用于多个宏块的所述宏块的多个分割的多个子块中的每一个子块的细化运动矢量相关的成本,选择多个宏块的所述宏块的多个分割中的选定分割,并为与多个宏块的所述宏块的选定分割相对应的多个子块中的每一个子块确定最终运动矢量。重建模块214生成与用于多个宏块的所述宏块的多个子块的最终运动矢量相对应的色度和/或亮度的残余像素值。
[0081] 此外,运动搜索模块204和运动细化模块206可以在多种其它选定模式下操作,这些模式包括与第一压缩标准相对应的模式、与第二压缩标准相对应的模式和/或与第三压缩标准相对应的模式等,其中,可以基于选定模式进行多个分割。例如,在一种模式下,在MBAFF信号被断言时,运动搜索模块204和运动细化模块206能够在宏块自适应帧和场(MBAFF)被使能的情况下进行操作,并且当MBAFF信号被撤销断言时,运动搜索模块204和运动细化模块206能够在宏块自适应帧和场(MBAFF)被禁用的情况下进行操作,并且其中,多个分割是基于MBAFF使能信号。在一个实施例中,当MBAFF信号被断言时,宏块的多个分割将宏块分割为具有大小为16像素×16像素、16像素×8像素、8像素×16像素和8像素×8像素的第一最小尺寸的子块,其具有8像素的最小尺寸。此外,当MBAFF信号被撤销断言时,宏块中的多个分割将宏块分割为具有大小为16像素×16像素、16像素×8像素、8像素×16像素、8像素×8像素、4像素×8像素、8像素×4像素和4像素×4像素的第二最小尺寸的子块,其具有4像素的最小尺寸。在其它操作模式下,宏块的多个分割将宏块分割为大小为16像素×16像素和8像素×8像素的子块。虽然在上面描述了具体宏块尺寸,但其它尺寸也同样可能在本发明的较宽范围之内。
[0082] 除MB/MB对的分割是基于所采用的特定压缩标准外,运动搜索模块204可生成用于多个宏块的一个宏块的多个分割的多个子块的运动搜索运动矢量,并且基于组选择信号生成多个分割的选定组。此外,运动细化模块206可以基于多个宏块的一个宏块的多个子块中的每一个子块的运动搜索运动矢量,生成用于多个宏块的所述宏块的多个分割的选定组的多个子块的细化运动矢量。在这个实施例中,为了加快算法速度,组选择信号可被运动搜索模块204用来选择性地应用一个或多个阈值来限制运动细化模块206所考虑的分割数量。
[0083] 例如,当组选择信号具有第一值时,运动搜索模块204通过对于多个宏块的所述宏块的多个分割将与用于多个子块中的每一个子块的运动搜索运动矢量相关的累计成本与第一阈值进行比较,并将选定组指定为累计成本比第一阈值更有利的分割,借此确定多个分割的选定组。在这种模式下,如果发现一个生成非常好的成本的特定分割,则运动搜索模块204可对于该特定宏块提早终止,并且运动细化模块206可不对整个分割集合进行操作,而对生成比第一阈值更有利的成本的特定分割进行操作。
[0084] 此外,当组选择信号具有第二值时,运动搜索模块204通过对于多个宏块的一个宏块的多个分割比较与用于多个子块中的每一个子块的运动搜索运动矢量相关的累计成本,并将选定组指定为具有最有利的累计成本的选定的分割,借此确定多个分割的选定组。此外,运动细化模块206可不对整个分割集合进行操作,而对从运动搜索中生成最有利成本的特定分割进行操作。
[0085] 此外,当组选择信号具有第三值时,运动搜索模块204通过对于多个宏块中的一个宏块的多个分割将与用于多个子块中的每一个子块的运动搜索运动矢量相关的累计成本与第二阈值进行比较,并将选定组指定为具有比第二阈值更有利的累计成本的多个分割中的每一个分割,借此确定多个分割的选定组。在这种模式下,运动细化模块206可不对整个分割集合操作,而仅对生成比第二阈值更有利的成本的那些分割进行操作。
[0086] 如上所述,运动搜索模块204和运动细化模块206可以被流水线化并可以用来同时并行地针对多个宏块的一个宏块的多个分割生成用于多个子块的运动搜索运动矢量。此外,共享存储器205可紧密耦合到运动搜索模块204和运动细化模块206以有效地存储来自运动搜索模块204的、对于分割的选定组的结果,以供运动细化模块206使用。具体来说,运动搜索模块204将分割的选定组和相应的运动搜索运动矢量存储到共享存储器中,并将其它结果存储在成本和提示表中。运动细化模块206从共享存储器中检索分割的选定组和相应的运动搜索运动矢量。在一个具体实施例中,响应于将所述宏块的分割的选定组和相应的运动搜索运动矢量和/或其它结果存储在共享存储器中,运动搜索模块204可生成一个触发信号,并且响应于该触发信号,运动细化模块206可以开始检索共享存储器中的分割的选定组和相应的运动搜索运动矢量和/或其它结果。
[0087] 如上所述,例如当在跳过模式下,与固定运动矢量相关的成本比跳过模式成本阈值更有利时,或如果与特定分割相关的总成本比跳过细化成本阈值更有利时,可通过选择性地禁用用于特定应用、压缩标准或用于特定宏块的运动细化模块来停止对特定宏块的运动细化,其中,运动搜索运动矢量可以被用来代替细化运动矢量。在另一可选的特征中,运动搜索模块204基于一个或多个成本计算(例如之前讨论的绝对差值和(SAD)成本),对于多个宏块中的一个宏块的多个分割生成用于多个子块的运动搜索运动矢量。然而,当运动细化模块206被使能时,其基于多个宏块中的所述宏块的多个子块中的每一个子块的运动搜索运动矢量,基于累计变换差值和(SATD)成本,对于多个宏块中的所述宏块的多个分割生成用于多个子块的细化运动矢量。在这种情况下,模式判决模块212一定是基于来自运动搜索模块204的SAD成本或者基于来自运动细化模块206的SATD成本进行操作的。
[0088] 具体来说,模式判决模块212被耦合到运动细化模块206和运动搜索模块204。当运动细化模块206对于多个宏块中的一个宏块被使能时,模式判决模块212基于与用于多个宏块中的所述宏块的多个分割的多个子块中的每一个子块的细化运动矢量相关的SATD成本,选择多个分割中的一个选定分割。此外,当运动细化模块206对于多个宏块中的一个宏块被禁用时,模式判决模块212基于与用于多个宏块中的所述宏块的多个分割的多个子块中的每一个子块的运动搜索运动矢量相关的SAD成本,选择多个分割的一个选定分割,并且为与多个宏块中的所述宏块的选定分割相对应的多个子块中的每一个子块确定最终运动矢量。
[0089] 因为运动细化引擎175可在帧模式或场模式下操作,所以模式判决模块212基于与用于多个宏块中的一个宏块的多个分割的多个子块中的每一个子块的细化运动矢量相关的SATD成本,或基于与用于多个宏块中的一个宏块的多个分割的多个子块中的每一个子块的运动搜索运动矢量相关的SAD成本,为所述宏块选择帧模式或场模式中的一种模式。
[0090] 在本发明的一个实施例中,运动细化引擎175被设计为通过位于共享存储器205内的命令FIFO进行工作。由于命令FIFO的高度灵活的设计,使引擎的功能灵活性成为可能。命令FIFO具有四个32位寄存器,其中之一是用于运动细化引擎175的触发器。它可被编程为在有或没有MBAFF的情况下,对于向前、向后和混合方向能够同样容易地完成对单个分割、一组分割或整个MB/MB对的运动细化细化/补偿。需要注意的是,保留了多个位以支持本发明的其它特征。
[0091] 在一个特定实施例中,命令FIFO的结构如下表所示。
[0092]字段名 比特位置 描述
TASK 1:0 0=搜索/细化
1=直接
2=运动补偿/重建
3=解码
DIRECTION 4:2 位0:向前
位1:向后
位2:混合
WRITE_COST 5 0=不写出成本
1=写出成本
PARTITIONS 51:6 哪些分割要开始和停止。这根据
MBAFF标记进行解释
TAG 58:52 标记IndexFIFO条目-7位
DONE 59 在结束该条目时产生中断
[0093]PRED_DIFF_INDEX 63:60 要写入哪个预测和差值索引
CURR_Y_MB_INDEX 67:64 从哪个当前YMB索引读取
CURR_C_MB_INDEX 71:68 从哪个当前CMB索引读取
FWD_INDEX 75:72 解析FWD命令表索引
BWD_INDEX 79:76 解析BWD命令表索引
BLEND_INDEX 83:80 要写入BLEND命令表索引
保存 84
THRESHOLD_ENABL 85 仅对由阈值表所指示的分割执
E 行细分
BEST_MB_PARTITIO 86 仅使用最佳宏块分割。这将忽略
N 该索引FIFO条目中的
PARTITION字段
保存 87
DIRECT_TOP_FRM_F 89:88 00:无,01:帧,10:场,11:帧
LD_SEL 和场两者
DIRECT_BOT_FRM_F 91:90 00:无,01:帧,10:场,11:帧
LD_SEL 和场两者
WRITE_PRED_PIXEL 93:92 0=不写出预测像素
S 1=写出顶部MB预测像素
2=写出底部MB预测像素
3=写出顶部和底部MB预测
像素
(开始运动补偿的最后项)
WRITE_DIFF_PIXELS 95:94 0=不写出不同的像素
1=写出顶部MB不同的像素
2=写出底部MB不同的像素
3=写出顶部和底部MB预测
像素
(注意:在运动补偿模式下,这
[0094]将写出运动补偿像素并将开始
运动补偿的最后项)
CURR_MB_X 102:96 宏块的当前X坐标
保存 103
CURR_MB_Y 110:104 宏块的当前Y坐标
保存 111
LAMBDA 118:112 对于成本加权的部分
保存 121:119
BWD_REF_INDEX 124:122 向后参考索引
FWD_REF_INDEX 127:125 向前参考索引
[0095] 除了命令FIFO之外,在运动细化引擎175使用的共享存储器中还有一些片段级寄存器。这些包括诸如使用的编解码器、图片宽度、图片高度、片段类型、MBAFF标记、SATD/SAD标记等共用视频信息。通过对以上数据位的适当编程,可以解决以下灵活性/场景:
[0096] 1.任务位定义了将要由运动细化引擎175执行的操作。通过将其与寄存器中的编解码器信息适当地组合,运动细化引擎175可为以上所列的所有编解码器执行上述任务中的任一种。
[0097] 2.方向位是指需要被使用并且在编码B片段中特别有用的参考图片。这3个位的任意组合可设置用于任何任务。通过使能所有这3个位进行细化,运动细化引擎175可以在一次调用中沿所有三个方向完成对整个MB的运动细化。然而,运动细化引擎175还可以选择任意特定方向并仅对那个方向执行细化(也许在P片段中需要)。命令FIFO因此提供灵活性以解决单次全方向调用或多次单方向调用这两种情况。
[0098] 3.分割位在其设计中非常灵活,其全部满足用于所有分割和子分割的运动细化和重建。通过有效地将这些位与方向位组合,运动细化引擎175可实现极致情况,即,对于所有方向一次性对所有分割执行细化,或者在一个特定方向上对选定的分割集合执行细化/补偿。分割位还由运动细化引擎175基于寄存器中的MBAFF ON标记进行不同地动态解释。因此,使用优化的、有限的位集合,运动细化引擎175可解决分割组合的无穷情况。用于这些模式中的每种模式的分割位的结构在下表中列出,该表体现了帧(FRM)、场(FLD)和直接模式(DIRECT)结果。
[0099] MBAFF ON:
[0100]
[0101]
[0102] MBAFF OFF:
[0103]
[0104] 命令FIFO还具有提早终止策略,其可以有效地用来智能地加速运动细化。这些策略可直接结合运动搜索模块204或在处理器200的干预下使用以适应算法的需要。策略如下:
[0105] a.BEST MB PARTITION(最佳MB分割):这是一个超级快速的模式,其仅选择由运动搜索所指示的最佳模式来执行细化。运动细化仅查看基于用于BEST分割的运动搜索结果而只设置一帧或一场的阈值表中的特定分割。
[0106] b.THRESHOLD ENABLE(阈值使能):该标记用于使阈值信息能够在运动搜索MS状态寄存器中使用。如果该位为ON,则运动细化引擎175仅对在MS状态寄存器的阈值部分中的指定模式执行细化。该位如下工作。对于顶部/底部,帧/场MB中的每一个,按以下执行:
[0107] 如果在MS状态寄存器的阈值部分中使能任意分割位(16×16、16×8、8×16、8×8中任一个)(这意味着阈值已符合这些分割),则进行所有那些使能的分割而不顾命令FIFO中的PARTITION位。对于MBAFF OFF情况,当8×8位被设置时,仅对如在8×8分割中的每一个分割的提示表中指定的最佳子分割完成细化。运动细化仅查看基于满足该阈值的那些分割的运动搜索结果设置的、位于阈值表中的多个特定分割。
[0108] 图10呈现根据本发明实施例的方法的流程图。具体来说,该方法呈现用于结合与图1-9一起描述的一个或多个特征和功能。在步骤300中,通过同时估计来自视频输入信号的一帧的顶帧宏块和底帧宏块以及来自视频输入信号的相应场的顶场宏块和底场宏块,生成用于多个宏块中的每一个宏块的一个或多个运动搜索运动矢量。在步骤302中,当步骤被使能时,基于一个或多个运动搜索运动矢量,生成用于多个宏块中的每个宏块的细化运动矢量。
[0109] 在本发明的一个实施例中,步骤300基于估计的预测运动矢量计算与运动搜索运动矢量相关的成本,该估计的预测运动矢量只是基于视频输入信号的至少一个在先行中的邻近宏块。至少一个在先行可包括包含顶帧宏块的视频输入信号的一行上面的行。此外,步骤300可以估计多个宏块中的每一个宏块被分割成多个子块,并且其中,用于计算多个子块中的一个子块的成本的估计的预测运动矢量被用于残余多个子块中的每一个子块。此外,步骤300可以将与每个宏块的多个分割相关的成本与成本阈值相比较,并且如果与多个分割中的一个特定分割相关的成本比成本阈值更有利,则终止估计。
[0110] 在本发明的一个实施例中,步骤300计算与多条线有关的成本,并且基于对于多条线中的多条顶部线所累计的成本生成与顶帧宏块相关的成本,基于对于多条线中的多条底部线所累计的成本生成与底帧宏块相关的成本,基于对于多条线中的多条第一奇偶线所累计的成本生成与顶场宏块相关的成本,基于对于多条线和的多条第二奇偶线所累计的成本生成与底场宏块相关的成本。此外,步骤300可以基于底场宏块和底场宏块参考之间、底场宏块和顶场宏块参考之间、顶场宏块和底场宏块参考之间、顶场宏块和顶场宏块参考之间所累计的差值产生场判决。
[0111] 在本发明的一个实施例中,步骤300在以开始运动矢量为中心的小搜索区域内启动一个小搜索,估计与小搜索区域内的多个候选运动搜索运动矢量相关的成本,将与每个候选运动矢量相关的成本与小搜索成本阈值相比较,并且当与小搜索区域内的多个候选运动搜索运动矢量中的一个矢量相关的成本比小搜索成本阈值更有利时终止估计。此外,步骤300可生成运动搜索矢量,将与固定运动矢量相关的成本与固定成本阈值相比较,并且对于多个宏块中的一个特定宏块,当与固定运动矢量相关的成本比固定成本阈值更有利时,生成运动搜索模块的步骤禁用生成用于多个宏块中的一个特定宏块的细化运动矢量的步骤,并且将固定运动矢量指定为细化运动矢量。此外,步骤300可在以开始运动矢量为中心的比小搜索区域大的大搜索区域内启动一个大搜索,估计与大搜索区域内的多个候选运动搜索运动矢量相关的成本,将与每个侯选运动矢量相关的成本与大搜索成本阈值相比较,并且当与在大搜索区域内的多个候选运动搜索运动矢量中的一个相关的成本比大搜索成本阈值更有利时终止估计。
[0112] 图11呈现根据本发明实施例的方法的流程图。具体来说,该方法呈现用于结合与图1-10一起描述的一个或多个特征和功能。在步骤400中,对于多个宏块中的每一个宏块生成一个或多个运动搜索运动矢量。在步骤402中,基于一个或多个运动搜索运动矢量,对于多个宏块中的每个宏块生成细化运动矢量。在步骤404中,基于与像素宏块相邻的多个宏块,生成用于多个宏块中的每个宏块的直接模式运动矢量。在步骤406中,生成用于多个宏块中的每个宏块的最佳帧内预测模式。
[0113] 在步骤408中,基于与细化运动矢量、直接模式运动矢量和最佳帧内预测模式相关的成本,为多个宏块中的每个宏块确定最终运动矢量。在步骤410中,生成与用于多个宏块中的每个宏块的最终运动矢量相对应的残余像素值。在步骤412中,当对多个宏块中的至少一个邻近宏块进行操作时,生成并存储用于多个宏块中的至少一个宏块的邻居数据,以供生成运动搜索运动矢量、生成细化运动矢量、生成直接模式运动矢量以及生成最佳帧内预测模式的步骤中的至少一个步骤进行检索。
[0114] 在本发明的一个实施例中,步骤400、402、404和/或406在宏块自适应帧和场模式下操作并且基于包括视频输入信号的一个帧中的顶帧宏块和底帧宏块以及视频输入信号的相应场中的顶场宏块和底场宏块的宏块对,分析多个宏块中的每个宏块。邻居数据可以包括:当在帧模式下处理时供在至少一个宏块下方的一行中的邻近宏块检索的帧下方邻居数据;以及当在场模式下处理时供在至少一个宏块下方的一行中的邻近宏块检索的场下方邻居数据。此外,邻居数据可以包括:当在场模式下处理时供在至少一个宏块右边的邻近宏块检索的帧右侧邻居数据以及当在场模式下处理时供在至少一个宏块右边的邻近宏块检索的场右侧邻居数据。
[0115] 在一个实施例中,步骤400和/或402利用检索到的邻居数据生成用于多个宏块中的每个宏块的至少一个预测运动矢量。此外,步骤404可以利用检索到的邻居数据生成用于多个宏块中的每个宏块的至少一个直接模式运动矢量。同样,步骤406可利用检索到的邻居数据生成用于多个宏块中的每个宏块的最佳帧内预测模式。
[0116] 图12呈现根据本发明实施例的方法的流程图。具体来说,该方法呈现用于结合与图1-11一起描述的一个或多个特征和功能。在步骤600中,对于多个宏块的一个宏块的多个分割同时生成用于多个子块的运动搜索运动矢量。在步骤602中,基于用于多个宏块中的一个宏块的多个子块中的每一个子块的运动搜索运动矢量,对于多个宏块中的所述宏块的多个分割同时生成用于多个子块的细化运动矢量。在步骤604中,基于与用于多个宏块中的所述宏块的多个分割的多个子块中的每一个子块的细化运动矢量相关的成本来选择多个分割中的一个选定分割。在步骤606中,为与多个宏块中的所述宏块的选定分割相对应的多个子块中的每一个子块确定最终运动矢量。在步骤608中,生成与用于多个宏块中的所述宏块的多个子块的最终运动矢量相对应的残余像素值。
[0117] 在本发明的一个实施例中,步骤600和602可在多种选定模式下操作,包括与第一压缩标准相对应的第一模式、与第二压缩标准相对应的第二模式以及与第三压缩标准相对应的第三模式。例如,在第一模式中,在MBAFF信号被断言时,步骤600和602能够在宏块自适应帧和场被使能的情况下进行操作,并且当MBAFF信号被撤销断言时,步骤600和602能够在宏块自适应帧和场被禁用的情况下进行操作,并且其中,多个分割是基于MBAFF使能信号。第一压缩标准可以包括H.264标准,并且当MBAFF信号被断言时,宏块的多个分割将宏块分割为具有第一最小尺寸的子块。例如,当MBAFF信号被断言时,宏块的多个分割将宏块分割为大小为16像素×16像素、16像素×8像素、8像素×16像素、和8像素×8像素的子块。此外,当MBAFF信号被撤销断言时,宏块的多个分割将宏块分割为具有大小比第一最小尺寸小的第二最小尺寸的子块。例如,当MBAFF信号被撤销断言时,宏块的多个分割将宏块分割为大小为16像素×16像素、16像素×8像素、8像素×16像素、8像素×8像素、4像素×8像素、8像素×4像素、4像素×4像素的子块。
[0118] 此外,在第二模式中,例如当第二压缩标准包括运动图像专家组(MPEG)标准时,宏块的多个分割将宏块分割为大小为16像素×16像素和8像素×8像素的子块。同样,在第三模式中,例如当第三压缩标准包括电影与电视工程师学会(SMPTE)标准时,宏块的多个分割将宏块分割为大小为16像素×16像素和8像素×8像素的子块。
[0119] 图13呈现根据本发明实施例的方法的流程图。具体来说,该方法呈现用于结合与图1-12一起描述的一个或多个特征和功能。在步骤700中,对于多个宏块中的一个宏块的多个分割生成用于多个子块的运动搜索运动矢量。在步骤704中,基于组选择信号,生成多个分割的一个选定组。在步骤716中,基于多个宏块中的所述宏块的多个子块中的每一个子块的运动搜索运动矢量,对于多个宏块中的所述宏块的多个分割的一个选定组生成用于多个子块的细化运动矢量。
[0120] 在本发明一个实施例中,当组选择信号具有第一值时,步骤704通过对于多个宏块中的一个宏块的多个分割将与用于多个子块中的每一个子块的运动搜索运动矢量相关的累计成本与第一阈值进行比较,并将该选定组指定为具有比第一阈值更有利的累计成本的分割,借此确定所述多个分割的选定组。当组选择信号具有第二值时,步骤704通过对于多个宏块中的一个宏块的多个分割比较与用于多个子块中的每一个子块的运动搜索运动矢量相关的累计成本,并将该选定组指定为具有最有利的累计成本的选定分割,借此确定所述多个分割的选定组。当组选择信号具有第三值时,步骤704通过对于多个宏块中的一个宏块的多个分割将与用于多个子块中的每一个子块的运动搜索运动矢量相关的累计成本与第二阈值进行比较,并将选定组指定为具有比第二阈值更有利的累计成本的多个分割中的每一个分割,借此确定所述多个分割的选定组。
[0121] 任选的是,步骤700对于多个宏块中的一个宏块的多个分割同时生成用于多个子块的运动搜索运动矢量,并且步骤716对于多个宏块中的一个宏块的多个分割的选定组同时生成用于多个子块的细化运动矢量。
[0122] 图14呈现根据本发明实施例的方法的流程图。该方法呈现用于结合与图1-12一起描述的一个或多个特征和功能,并且具体来说它包括被公共的附图标记标注的图13的方法一个或多个组成都分。此外,该方法包括将多个分割的选定组和相应的运动搜索运动矢量存储在共享存储器中的步骤708。同样,在步骤712中,从共享存储器中检索多个分割的选定组和相应的运动搜索运动矢量。
[0123] 图15呈现根据本发明实施例的方法的流程图。该方法呈现用于结合与图1-12一起描述的一个或多个特征和功能,并且具体来说它包括被公共的附图标记标注的图13和图14的方法的一个或多个组成部分。此外,该方法包括响应于将多个分割的选定组和相应的运动搜索运动矢量存储在共享存储器中而生成触发信号的步骤710。此外,步骤712’包括响应于该触发信号从共享存储器中检索分割的选定组和相应的运动搜索运动矢量。
[0124] 图16呈现根据本发明实施例的方法的流程图。该方法呈现用于结合与图1-15一起描述的一个或多个特征和功能。具体来说,该方法呈现的是,其可以用作被公共的附图标记标注的公共组成部分的权利要求13的方法的替代方法。此外,该方法包括生成多个分割的一个选定组的步骤704’。
[0125] 图17呈现根据本发明实施例的方法的流程图。具体来说,该方法呈现用于结合与图1-16一起描述的一个或多个特征和功能。在步骤800中,基于累计差值和(SAD)成本,生成用于多个宏块中的一个宏块的多个分割的多个子块的运动搜索运动矢量。在步骤802中,该方法确定细化是否被使能。如果是,则该方法继续到步骤804,并且基于多个宏块中的所述宏块的多个子块中的每一个子块的运动搜索运动矢量和基于累计变换差值和(SATD)成本,生成用于多个宏块中的所述宏块的多个分割的多个子块的细化运动矢量。在步骤806中,当对于多个宏块中的所述宏块使能生成细化运动矢量的步骤时,基于与用于多个宏块中的所述宏块的多个分割的多个子块中的每一个子块的细化运动矢量相关的SATD成本来选择多个分割中的选定分割。
[0126] 如果细化被禁用,则作为替换,该方法继续到步骤808,其中,基于与用于多个宏块的一个宏块的多个分割的多个子块中的每一个子块的细化运动矢量相关的SAD成本来选择多个分割的一个选定分割。不论发生哪种情况,该方法继续到步骤810,其中,为与多个宏块中的所述宏块的选定分割相对应的多个子块中的每一个子块确定最终运动矢量。在步骤812,生成与多个宏块中的所述宏块的多个子块的最终运动矢量相对应的残余像素值。
[0127] 在本发明的一个实施例中,基于具体应用、基于具体压缩标准、和/或基于与一个宏块的多个分割中的至少一个分割相关的总成本与跳过细化成本阈值的比较,选择性地禁用细化。需要注意的是,可逐个宏块地禁用细化。
[0128] 此外,该方法可在多种选定模式下操作,包括与第一压缩标准相对应的第一模式,与第二压缩标准相对应的第二模式和与第三压缩标准(例如,H.264标准、运动图像专家组(MPEG)标准、电影与电视工程师学会(SMPTE)标准或其它标准)相对应的第三模式。
[0129] 图18呈现根据本发明实施例的方法的流程图。具体来说,该方法呈现用于结合与图17一起描述的一个或多个特征和功能。在步骤820中,当对于多个宏块中的一个宏块使能生成细化运动矢量的步骤时,基于与用于多个宏块中的所述宏块的多个分割的多个子块中的每一个子块的细化运动矢量相关的SATD成本,为所述宏块选择帧模式和场模式中的一种。
[0130] 图19呈现根据本发明实施例的方法的流程图。具体来说,该方法呈现用于结合与图17和18一起描述的一个或多个特征和功能。在步骤830中,当对于多个宏块中的一个宏块禁用生成细化运动矢量的步骤时,基于与用于多个宏块中的所述宏块的多个分割的多个子块中的每一个子块的运动搜索运动矢量相关的SAD成本,为所述宏块选择帧模式和场模式中的一种。
[0131] 在优选的实施例中,利用0.35微米或更小的CMOS工艺来实现多种电路元件。然而,我们认为其它电路工艺,无论集成的还是非集成的,都可在本发明的宽广范围内使用。
[0132] 虽然本发明的各种功能和特征的具体组合已在文中清楚地描述,但这些特征和功能的其它组合也是可能的,其不被文中公开的具体例子限制,而是被清楚地并入本发明的范围内。
[0133] 本领域的普通技术人员将理解,可在文中使用的术语“基本上”或“近似地”为其相应的术语和/或各项之间的相关性提供一种工业上可接受的容差。该工业上可接受的容差在小于百分之一到百分之二十的范围内变动,其对应于但不限于元件值、集成电路工艺变量、温度变量、上升和下降时间和/或热噪声。各项之间的相关性在少许百分比的差别到很大差别内变动。本领域的普通技术人员将进一步理解,可在文中使用的术语“耦合”包括通过另一部件、元件、电路或模块直接耦合和间接耦合,在这里对于间接耦合,居中的部件、元件、电路或模块并不修改信号信息,而只可调整其电流电平、电压电平和/或功率电平。本领域的普通技术人员还将理解,推断的耦合(即,其中通过推断,一个元件耦合到另一个元件)包括以和“耦合”相同的方式在两个元件之间直接和间接耦合。本领域的普通技术人员将进一步理解,可在文中使用的术语“与...相比有利地”表示在两个或多个元件、项、信号等之间的比较提供期望的关系。例如,当期望的关系是信号1具有比信号2更大的幅度时,当信号1的幅度大于信号2的幅度或当信号2的幅度小于信号1的幅度时可以实现有利的比较。
[0134] 在本发明的不同实施例的描述中使用的术语“模块”包括用硬件、软件、和/或固件实现的功能块,其执行一种或多种功能,例如处理输入信号以产生输出信号。如在文中使用的那样,模块可以包含本身就是模块的子模块。
[0135] 这样,已经在文中描述了一种设备和方法,以及包括优选实施例的多个实施例,用于实施视频编码器和运动补偿模块以及与其一起使用的运动细化引擎。文中描述的本发明的不同实施例具有使本发明区别于现有技术的特征。
[0136] 对于本领域技术人员来说将明白,公开的发明能以多种方式进行修改并可以设想不同于以上具体阐明和描述的优选形式。因此,本发明试图通过所附权利要求来覆盖落入本发明的精神和范围内的本发明的所有修改。