发明内容
一种处理视频数据的系统和/或方法,如结合至少一个附图的描述和/或充分表示在至少一个附图中,在权利要求中有更完整的阐释。
根据本发明的一个方面,提供了一种处理视频数据的方法,所述方法包括将运动估计、运动分离和运动补偿宏块功能从中央处理器中卸载到至少一个片上处理器上供处理。
作为优选,所述方法还包括,对于当前宏块,通过确定所述当前宏块的至少一部分与包括多个宏块的当前检索区的至少一部分之间的绝对误差和,经所述至少一个片上处理器,生成基准视频信息。
作为优选,所述方法还包括,从至少一个外部存储器和集成在所述片上处理器上的内部存储器中接收所存储的所述当前宏块的至少一部分。
作为优选,所述方法还包括,从至少一个外部存储器和集成在所述片上处理器上的内部存储器中接收所存储的所述当前检索区的至少一部分。
作为优选,该方法还包括,基于与所述当前宏块的所述至少一部分以及所述当前检索区的所述至少一部分相对应的像素亮度信息,确定所述绝对误差和。
作为优选,所述方法还包括,确定所述当前宏块的所述至少一部分与所述生成的基准视频信息之间的差值。
作为优选,所述方法还包括利用生成的所述基准视频信息和确定的所述差值,来估计所述当前宏块的所述至少一部分。
作为优选,所述方法还包括利用所述当前检索区的所述至少一部分,为所述基准视频信息生成半像素信息。
作为优选,所述方法还包括,如果确定的所述绝对误差和大于所述当前宏块的所述至少一部分与所述当前检索区的至少前一部分之间的前一个绝对误差和,则停止所述运动估计。
作为优选,所述方法还包括,对于下一个宏块,仅更新所述检索区的一部分,其中,所述检索区与所述当前宏块至所述下一个宏块之间的变化相对应。
根据本发明的一个方面,提供了一种可机读存储,其上存储了计算机程序,所述计算机程序具有用来处理视频数据的至少一个代码部分,所述至少一个代码部分可被机器执行到执行步骤,该执行步骤包括从中央处理器卸载运动估计、运动分离和运动补偿宏块功能到至少一个片上处理器上处理。
作为优选,所述可机读存储还包括,对于当前宏块,通过确定所述当前宏块的至少一部分与包括多个宏块的当前检索区的至少一部分之间的绝对误差和,经由所述至少一个片上处理器,生成基准视频信息的代码。
作为优选,所述可机读存储还包括代码,用来从至少一个外部存储器和集成在所述片上处理器上的内部存储器,接收存储的所述当前宏块的至少一部分。
作为优选,所述可机读存储还包括代码,用来从至少一个外部存储器和集成在所述片上处理器上的内部存储器,接收存储的所述当前检索区的至少一部分。
作为优选,所述可机读存储还包括代码,用来根据像素亮度信息,确定所述绝对误差和,其中所述像素亮度信息与所述当前宏块的至少一部分以及所述当前检索区的至少一部分相对应。
作为优选,所述可机读存储还包括代码,用来确定所述当前宏块的至少一部分与所述生成的基准视频信息之间的差值。
作为优选,所述可机读存储还包括代码,用来利用所述生成的基准视频信息和确定的所述差值,来估计所述当前宏块的至少一部分。
作为优选,所述可机读存储还包括代码,用来利用所述当前检索区的至少一部分,为所述基准视频信息生成半像素信息。
作为优选,所述可机读存储还包括代码,如果所确定的绝对误差和大于所述当前宏块的至少一部分与所述当前检索区的至少前一部分之间的前一个绝对误差和,所述代码用来终止所述运动估计。
作为优选,所述可机读存储还包括,用于下一个宏块的代码,该代码用来仅更新所述当前检索区的一部分,其中所述当前检索区与所述当前宏块至所述下一个宏块的变化相对应。
根据本发明的一个方面,提供了一种处理视频数据的系统,还包括至少一个片上处理器,所述片上处理器将运动估计、运动分离和运动补偿宏块功能从中央处理器上卸载,供处理。
作为优选,通过确定所述当前宏块的至少一部分与包括多个宏块的当前检索区的至少一部分之间的绝对误差和,所述至少一个片上处理器为当前宏块生成基准视频信息。
作为优选,所述至少一个片上处理器从至少一个外部存储器和集成在所述至少一个片上存储器上的内部存储器中,接收存储的所述当前宏块的至少一部分。
作为优选,所述至少一个片上处理器从至少一个外部存储器和集成在所述至少一个片上存储器上的内部存储器中,接收所述当前检索区的至少一部分。
作为优选,根据与所述当前宏块的所述至少一部分以及所述当前检索区的所述至少一部分相对应的像素亮度信息,确定所述绝对误差和
作为优选,所述至少一个片上处理器确定所述当前宏块的所述至少一部分与生成的所述基准视频信息之间的差值。
作为优选,所述至少一个片上处理器利用生成的所述基准信息和确定的所述差值,估计所述当前宏块的所述至少一部分。
作为优选,所述至少一个片上处理器利用所述当前检索区的所述至少一部分,为所述基准视频信息生成半像素信息。
作为优选,如果所确定的绝对误差和大于所述当前宏块的至少一部分与所述当前检索区的至少前一部分之间的前一个绝对误差和,所述至少一个片上处理器终止所述运动估计。
作为优选,对下一个宏块,所述至少一个片上处理器仅更新所述当前检索区的一部分,其中所述当前检索区与所述当前宏块至所述下一个宏块的变化相对应。
从以下的描述和附图中,本发明的各种优点、方面和新颖性特征、及其实施例的细节,都将会得到更完整的理解。
具体实施方式
本发明的某些实施例可在处理视频数据的方法和系统中找到。在本发明的典型方面,专用模块,例如运动处理加速器模块,在视频运动处理中,可用来为宏块处理运动估计、分离和补偿。以这种方式,可将视频数据处理中的运动估计、分离和补偿任务从至少一个片上视频处理器中卸载,从而增加视频数据处理的效率。在宏块的运动估计中,运动处理加速器可用来读取需要的检索区宏块数据,并自动执行估计过程。为了增加处理速度和效率,在处理当前宏块的过程中,运动处理加速器可被用来更新基准存储器中的宏块的仅一部分。
可以为基准存储器中的多个宏块计算绝对误差和(SAD)。然后,可利用所计算的SAD,确定与当前宏块相对应的基准宏块。在运动估计过程中,当累计超过已知的最佳匹配时,运动处理加速器可利用“早出”标记,并可为基准存储器中所确定的基准停止SAD的累积。在运动分离过程中,运动处理加速器可利用基准存储器中的基准宏块以及当前存储器中的当前宏块来生成德耳塔(delta)。运动处理加速器可被用来,如,通过专用端口,将结果写入变换模块。在运动补偿的过程中,运动处理加速器可通过专用端口从变换模块读取该德耳塔,例如,并且可利用该德耳塔及其基准来重组当前宏块。
图1A是可在本发明的一个方面中使用的、典型的视频编码系统的框图。参照图1A,视频编码系统100可包括预处理器102、运动分离模块104、离散余弦变换器和量化器模块106、可变长度代码(VLC)编码器108、打包器110、帧缓冲器112、运动估计器114、运动补偿器116、以及反向量化器和反向离散余弦变换器(IQIDCT)模块118。
预处理器102包括合适的电路、逻辑和/或代码,并可被用来从相机130处读取视频信息,并将所读取的相机视频信息转换成YUV格式。运动估计器114包括合适的电路、逻辑和/或代码,可被用来读取当前宏块及其运动检索区,从而从所读取的运动检索区中确定最佳运动基准,例如,供在运动分离和/或运动补偿中使用。运动分离模块104可包括合适的电路、逻辑和/或代码,并可用来读取当前宏块及其运动基准,并根据所读取的当前宏块与它的运动基准之间的差值,确定一个或多个预期误差。
离散余弦变换器和量化器模块106与IQIDCT模块118可包括合适的电路、逻辑、和/或代码,可用来将预期误差转换成频率系数并将该频率系数转换成预期误差。例如,该离散余弦变换器和量化器模块106可被用来读取一个或多个预期误差,并对所读取的预期误差进行离散余弦变换,随后进行量化,从而获得频率系数。类似地,IQIDCT模块118可被用来读取一个或多个频率系数,并对所读取的频率系数进行反向离散余弦变换,随后进行反向量化,从而获得预期误差。
运动补偿器116包括合适的电路、逻辑和/或代码,可被用来读取预期误差及其运动基准,从而根据所读取的预期误差及其运动基准,重组当前宏块。VLC编码器108和打包器110包括合适的电路、逻辑和/或代码,并可用来根据预期运动信息和/或被量化的频率系数、生成被编码的基本视频流。例如,一个或多个基准宏块的预期运动可以和相应的频率系数一起被编码,生成被编码的基本位流。在本发明的一个方面,为了提高视频编码系统100内的处理效率,可在协处理器中实现VLC编码器108,该协处理器利用一个或多个存储器模块来存储VLC编码和/或VLC编码所表现的对应视频属性。协处理器也可包括位流处理器(BSH)模块,该位流处理器模块可被用来在编码过程中管理被编码位流的生成。
在操作中,预处理器102可从相机130读取视频数据,例如QCIF视频数据,并将所读取的相机视频数据转换成YUV格式的视频数据。然后当前宏块120可被传送到运动分离模块104和运动估计器114。运动估计器114可被配置成从帧缓冲器112读取一个或多个基准宏块122,并确定与当前宏块120相应的运动基准126。然后,运动基准126被传送到运动分离模块104和运动补偿器116。
已经读取了当前宏块120及其运动基准126的运动分离模块104可根据当前宏块120与它的运动基准126之间的差值,生成预期误差。所生成的预期误差被传送到离散余弦变换器和量化器模块106,其中,通过进行离散余弦变换和量化处理,将预期误差变换成一个或多个频率系数。生成的频率系数被传送给VLC编码器108和打包器110,供编码成位流132。位流132也可包括一个或多个与被量化的频率系数相应的VLC代码。
离散余弦变换器和量化器模块106所生成的频率系数被传送给IQIDCT模块118。IQIDCT模块118将频率系数转换成一个或多个预期误差128。预期误差128及其运动基准126,被运动补偿器116用来生成重组的当前宏块124。重组的宏块124可被存储在帧缓冲器112中,并可用作预处理器102生成的后续帧中的宏块的基准。
在本发明的典型方面中,运动分离模块104、运动补偿模块116、以及运动估计模块114所执行的视频处理任务可被单个模块卸载和执行。例如,在典型的视频处理系统中,如视频编码系统100,运动估计、运动补偿和运动分离可被卸载到单个运动处理加速器模块中。运动处理加速器模块可利用绝对误差和(SAD)来为当前宏块确定多个基准宏块中的对应基准视频信息。在运动分离过程中,可根据当前宏块和所确定的基准之间的差值来确定德耳塔。在运动补偿过程中,利用基准和被确定的德耳塔,重组当前宏块。
图1B是可在本发明的一个方面中使用的、典型的视频解码系统的框图。参照图1B,视频解码系统150可包括位流解包器152、VLC解码器154、运动基准读取模块164、帧缓冲器160、IQIDCT模块156、运动补偿器158以及后处理器162。
位流解包器152和VLC解码器154可包括合适的电路、逻辑和/或代码,并可用来解码基本视频位流,并为每个宏块的预期误差生成视频信息,如运动基准向量和/或相应的量化频率系数。IQIDCT模块156可包括合适的电路、逻辑和/或代码,可被用来将一个或多个被量化的频率系数转换成一个或多个预期误差。运动补偿器158包括合适的电路、逻辑和/或代码,可用来读取预期误差及其运动基准,以重组当前宏块。在本发明的一个方面,为了提高视频解码系统150内的处理效率,可在协处理器内实现VLC解码器154,该协处理器利用一个或多个存储器模块来存储VLC编码和/或对应的属性。所述协处理器还包括位流处理器(BSH)模块,在编码过程中该位流处理器模块可被用来管理为VLC匹配从位流中提取位元。
在工作中,解包器152和VLC解码器154可解码基本视频流174,并生成各种视频信息,如每个宏块的运动基准和相应的量化频率系数。然后所生成的运动基准向量被传递给基准读取模块164和IQIDCT模块156。基准读取模块164可读取运动基准166,其中运动基准166与来自帧缓冲器160的运动矢量相应,并生成与量化频率系数相对应的基准宏块172。基准宏块172可被传递给运动补偿器158,供宏块重组。
IQIDCT模块156可将被量化的频率系数转换成一个或多个预期误差178。预期误差178可被传递给运动补偿器158。然后运动补偿器158利用预期误差178及其运动基准172,重组当前宏块168。被重组的当前宏块168可被存储在帧缓冲器160,用作后续帧的基准,并用来播放。被重组的帧170可逐行从帧缓冲器160中传递到后处理器162供播放。后处理器162可将帧170中的YUV格式的行转换成RGB格式,并将被转换后的行传送到显示器176,从而以理想的视频格式播放。
参照图1A和1B,在本发明的一个方面,在视频数据的编码和/或解码过程中,可利用一个或多个片上加速器来将计算密集型任务从CPU上卸载。例如,可利用一个加速器来处理与运动相关的计算,如运动估计、运动分离和/或运动补偿。可利用第二加速器来进行与离散余弦变换、量化、反向离散余弦变换以及反向量化相关的计算密集处理。可利用另一个片上加速器来对相机数据进行预处理,使其成为YUV格式供编码,并对被解码的YUV数据进行后处理,使其成为RGB格式供播放。另外,可利用一个或多个片上存储器(OCM)模块来改善时间和能量,所述时间和能量是在视频数据的编码和/或解码过程中、在外部存储器中存取数据所要求的时间和能量。例如,OCM模块可被用在QCIF格式的视频数据中,并可缓冲在编码和/或解码过程中所利用的一个或多个视频帧。另外,OCM模块可包括编码和/或解码过程中的中间计算结果的缓冲器,该中间计算结果是,如离散余弦变换(DCT)系数和/或预期误差信息。
在本发明的典型方面,可通过清除帧之间的时间冗余来压缩视频数据。清除所述冗余的典型程序如下。帧被分割成宏块(MB)阵列。每个MB包括16*16个像素,可表示为一个8*8色度U矩阵,一个8*8色度V矩阵和四个8*8亮度Y矩阵。U矩阵和V矩阵可以是二次取样的,因为人眼对色度不像对亮度那样敏感。如图2和图3所示,一帧一次可压缩一MB。
图2示出了根据本发明的实施例、用来处理视频运动的典型宏块检索区。参见图2,在运动估计过程中,当前帧中的当前MB 208与前一帧的检索区202的图像相比较。检索区202可包括前一帧的48*48像素区。
检索可为当前宏块208确定基准宏块204的位置。运动向量206可代表与当前宏块208相关的基准宏块204的位置。在视频编码过程中,通过对运动向量206和德尔塔(delta),或者当前宏块208与其相应的基准宏块204之间的差异进行编码,对当前宏块208编码。在这方面,可提高视频处理效率,因为德尔塔的大小比原图像更小,只需用很少的位来记录。在运动分离过程中,可从当前宏块208中减去基准宏块204,从而得到德尔塔。在运动补偿过程中,可将基准宏块204加到德尔塔中,从而恢复当前宏块208。
图3示出了根据本发明的实施例、在运动估计过程中被使用的典型区块和半像素宏块的位置。在运动估计过程中,当前宏块的亮度信息与基准存储器中的一个或多个基准宏块的亮度信息相比较。参照图2和图3,典型的运动估计基准检索可表示如下:(1)当前宏块208最初与检索区202中的32*32宏块的至少一部分相匹配,并可确定最佳匹配宏块R1;(2)然后,当前宏块与R1周围的八个半像素宏块相匹配。例如,在运动估计过程中,当宏块306是上述步骤(1)中所确定的R1时,在多个宏块302中可使用一个或多个半像素宏块(HMB)304。
因此,在宏块306的运动估计过程中,可利用八个半像素宏块304,它们由HMB(-1,-1)、HMB(0,-1)、HMB(1,-1)、HMB(-1,0)、HMB(1,0)HMB(-1,1)、HMB(0,1)以及HMB(1,1)为索引。在八个半像素宏块中,通过将水平相邻的像素平均,生成HMB(-1,0)和HMB(1,0)中的像素。通过将垂直相邻的像素平均,生成HMB(0,-1)和HMB(0,1)中的像素。通过将对角相邻的像素平均,生成HMB(-1,-1)、HMB(1,-1)、HMB(-1,1)和HMB(1,1)中的像素,这些像素可通过先将水平相邻的像素平均、再将垂直方向的水平半像素平均得到。
在后续的步骤(3)中,当前宏块中的每个区块可与宏块R1中的相应区块310周围的5*5区块矩阵308相匹配;(4)然后,在第三步骤中的最佳匹配(图3中未示出的半像素区块)周围,每个区块与8个半像素区块相匹配。在这方面,可在宏块级执行上述步骤(1)和(2),在区块级执行步骤(3)和(4),其中每个宏块包括4个区块,每个区块包括8*8像素。
可用当前宏块和基准宏块的绝对误差和(SAD)来评估当前宏块与基准宏块的匹配。在本发明的一个实施例中,利用以下典型伪代码计算SAD:
其中ref[i][j]和cur[i][j]为基准和当前存储器中的相应像素包括8位亮
MBSAD()
{ SAD=0;
for(i=0;i<16;i++)
{for(j=0;j<16;j++)
SAD=SAD+|ref[i][j]-cur[i][j]|;
}度(Y)值。
图4是根据本发明的实施例、在利用片上加速器进行视频压缩和解压缩的典型微处理器结构。参照图4,典型的微处理结构400包括中央处理器(CPU)402、可变长度代码协处理器(VLCOP)406、视频预处理和后处理(VPP)加速器408、转换和量化(TQ)加速器410、运动处理引擎(ME)加速器412、片上存储器(OCM)414、外部存储器接口(EMI)416、显示接口(DSPI)418以及相机接口(CAMI)442。可在微处理器结构400中分别使用EMI 416、DSPI 418以及CAMI 420来访问外部存储器438、显示器440以及相机442。
CPU 402包括指令端口426、数据端口428、周边设备端口422、协处理器端口424、紧密耦合存储器(TCM)404、以及直接存储器存取(DMA)模块430。在视频信息的编码和/或解码过程中,指令端口426和数据端口428可被CPU 402用来,例如,通过连接到系统总线444,获取程序和通信数据。
TCM 404可用在微处理器结构400中,来存储和访问大量数据,而不会降低CPU 402的工作效率。当CPU 402不访问TCM 404时,在工作周期中,DMA模块430同TCM 404连接用来从TCM 404传送数据或将数据传送到TCM 404。
CPU 402可利用协处理器424来与VLCOP 406通信。通过将某些可变长度编码(VLC)的编码和/或解码任务卸载,VLCOP 406可被用来协助CPU 402。例如,VLCOP 406适于利用技术,如代码表查询和/或基本位流的打包/解包,与CPU 402在逐个循环的基础上工作。在本发明的一个方面,VLCOP 406包括表查询(TLU)模块,表查询(TLU)模块带有多个片上存储器,如RAM,且VLCOP 406可用来存储一个或多个VLC定义表的入口。例如,片上存储器可被VLCOP 406用来存储VLC编码入口,另一个片上存储器可被用来存储所述编码表现出的相应描述属性。另外,位流处理器(BSH)模块也可被用在VLCOP 406中管理编码过程中被编码位流的生成、和/或在解码过程中从被编码位流中提取表征位。在本发明的另一个方面,协处理器中的TLU模块可被用来存储VLC编码入口以及多个VLC定义表的相应描述属性。因此,每个VLC编码入口和/或描述属性入口可包括VLC定义表标志符。
在压缩和/或解压缩过程中,对视频数据进行预处理和后处理时,可在微处理器结构400中使用OCM 414。例如,OCM 414可用来存储预处理相机数据,在宏块编码之前所述相机数据通过VPP 408从相机442中被传送。在VPP408将YUV格式的数据进行转换、接下来通过DSPI 418将这样的数据传送给视频显示器440供显示之后,OCM 414也可用来存储RGB格式的数据。
在本发明的典型方面,OCM 414包括一个或多个帧缓冲器,这些缓冲器可用来存储一个或多个在编码和/或解码过程中使用的基准帧。另外,OCM 414可包括缓冲器,这些缓冲器用来存储计算结果和/或编码前或解码后且输出供显示之前的视频数据,如DCT系数和/或预期误差信息。CPU 402、VPP加速器408、TQ加速器418、ME加速器412、EMI 416、DSPI 418、以及CAMI 420可通过系统总线444访问OCM 414。
CPU 402可利用周边设备端口422来与片上加速器VPP 408、TQ 410和/或ME 412通信。VPP加速器408包括合适的电路和/或逻辑,在微处理器结构400中的视频数据的编码和/或解码过程中,可用来提供视频数据预处理和后处理。例如,在编码之前,VPP加速器408可用来将相机输入数据转换成YUV格式的视频数据。另外,在将数据传送给视频显示器之前,VPP加速器408可用来将被解码的YUV格式的视频数据转换成RGB格式的视频数据。从VPP加速器408出来的、被后处理的视频数据可存储在如VPP加速器408的本地行缓冲器中。VPP本地行缓冲器中的被后处理视频数据是QCIF格式,被传送给DSPI 418或者被DSPI 418获取,接下来所述视频数据被传递给显示器440供显示。在本发明的不同方面,CPU 402可执行视频数据的后处理,被后处理过的数据可被存储在TCM 404中,供接下来通过总线444传递给DSPI418。
TQ加速器410包括合适的电路和/或逻辑,可用来执行与离散余弦变化和量化相关的视频数据处理,包括反向离散余弦变换和反向量化。ME加速器412包括合适的电路和/或逻辑,并可用来在微处理器结构400中的视频数据的编码和/或解码过程中,执行运动估计、运动分离和/或运动补偿。在本发明的一个方面,在运动估计、运动分离和/或运动补偿过程中,ME加速器412可利用片上基准存储器、片上当前存储器和/或OCM 414来分别存储基准宏块数据和当前宏块数据。通过在视频数据的编码和/或解码过程中使用VLCOP 406、VPP加速器408、TQ加速器410、ME加速器412以及OCM 414,在执行与视频数据的编码和/或解码相关的计算密集型任务中,可为CPU 402减负。
图5是根据本发明的实施例、用来进行视频运动处理的运动处理加速器的框图。参照图5,运动处理加速器500包括,例如,总线主控528、基准存储器502、当前存储器504、漏斗移位器520、半像素生成器522、加法器树506、累加器508、最佳值寄存器512、比较器510、多路复用器534、检索定序器532以及宏块定序器530。
总线主控528可包括合适的逻辑和/或逻辑,可用来获取前一帧和当前帧中的视频数据,供视频处理。例如,总线主控528可通过系统总线518获取前一帧或当前帧中的一个或多个宏块,前一帧或当前帧中的一个或多个宏块被分别存储在基准存储器502和当前存储器504中。基准存储器(RM)可被用来为运动检索区的多个宏块保存亮度(Y)信息,并保存基准存储器中的至少一个基准宏块的色度(U,V)信息。当前存储器可被用来保存当前宏块的Y、U和/或V信息。RM 502可被用来保存3*3宏块的亮度(Y)信息,在运动估计过程中可利用所述亮度信息,RM 502还为运动分离和/或运动补偿保存色度(U,V)信息。RM 502在宽度上包括48(16*3)个像素。
当前存储器(CM)504可被用来存储当前宏块的Y、U和V信息。更具体地,CM 504可存储明度(Y)信息的16*16像素、以及色度(U和V)信息的8*8像素。在运动处理后、使用特殊用途的硬件模块来处理德尔塔(delta)的变换的情况下,运动处理器加速器500可通过专用端口与特殊的硬件连接。在这方面,可通过所述专用端口将运动分离输出德尔塔传递到专用硬件。另外,可从专用德尔塔端口516获得运动补偿输入德尔塔。如果没有转换模块来支持德尔塔端口,运动处理加速器500可利用系统总线518进行德尔塔的输入和输出。
漏斗移位器520包括合适的电路和/或逻辑,可用来从RM 502的字行中提取希望的像素。例如,漏斗移位器502可从RM502中提取1*48像素行,并将所提取的像素字行传递给半像素生成器522供进一步处理。
半像素生成器522包括合适的电路和/或逻辑,可用来生成在运动估计中所使用的水平、垂直和/或对角的半像素平均值。另外,半像素生成器522包括保存当前循环结果的行缓冲器(未在图5中示出),它可用来在后续的循环中生成垂直和/或对角的平均值。
加法器树506包括合适的电路和/或逻辑,在运动估计、运动补偿和/或运动分离过程中,可用来提供支持功能。例如,在运动估计过程中,加法器树506可累计每个循环8个像素的绝对误差和(SAD)526。在运动分离过程中,加法器树506可利用单指令/多数据(SIMD)指令524,以每个循环8像素的速率从RM 502中减去在CM 504的当前宏块中在运动估计过程中确定的基准,从而确定差值或德尔塔。在运动补偿的过程中,加法器树506以每个循环8像素的速率、利用SIMD指令524从RM 502中将所确定的基准与德尔塔相加,从而获得重组的当前宏块。
在单个运动估计循环中,加法器树506为当前宏块确定SAD 526以及确定RM 502中的单基准宏块。为单运动估计循环确定的SAD 526可被存储在累加器508中。最佳值寄存器512可存储为给定的当前宏块确定的当前最佳SAD值。比较器510可用来将SAD累加器508与最佳值寄存器512的内容相比较,其中最佳值寄存器512可存储当前宏块目前已实现的、最佳的最终SAD。例如,在第一个运动估计循环中,最佳值寄存器512可存储所确定的SAD 526。对于给定的当前宏块的每一个后续运动估计循环,比较器510可将所确定的SAD值与存储在最佳值寄存器中的SAD进行比较。
如果所确定的SAD比存储在最佳寄存器512中的SAD小,那么最佳值寄存器512存储当前确定的SAD。如果所确定的SAD大于存储在最佳值寄存器512内的SAD,那么最佳值寄存器512不会被改变,新的运动估计循环开始。当累加器508超过存储在最佳值寄存器512中的最佳最终SAD值时,“早出”标记514被传送给检索定序器532,使得检索定序器532中止匹配,开始估计检索区中的下一个候选宏块,所述检索区存储在RM 502中。如果候选基准宏块的SAD未消除即已完成,该候选基准的最终SAD可被存储在最佳值寄存器512中,其位置被存储在运动向量寄存器中。
在运动分离过程中,可利用加法器树506中的SIMD指令524来确定德尔塔。例如,可从在运动估计过程中所确定的基准宏块中减去当前宏块,从而生成差值,或德尔塔。类似地,在运动补偿过程中,利用SIMD指令524的加法、将所确定的德尔塔和基准宏块相加,来重组当前宏块。
宏块定序器530包括合适的电路、逻辑和/或代码,用来为运动估计、运动分离和/或运动补偿中的一个或多个宏块匹配时间内的任务排序生成控制信号。检索定序器532包括合适的电路、逻辑和/或代码,可用来为运动估计时间生成至宏块定序器530的控制信号。
在工作中,在运动估计过程中,基准和当前视频的信息可被总线主控528通过系统总线518传送,并分别存储在RM 502和CM 504中。漏斗移位器520可从RM 502中读取像素字行,并将所提取的像素传递给半像素生成器522,供进一步处理。半像素生成器522可从漏斗移位器520中获取所提取的像素,并生成一个或多个半像素值,供运动估计计算中使用,如SAD计算。加法器树506利用所确定的半像素信息,以及分别来自RM 502和CM 504的基准视频信息和当前宏块信息,来为基准存储器502中的多个宏块计算SAD值,所述多个宏块与当前存储器504中的单个宏块相对应。累加器508、最佳值512以及比较器510可被用来为给定的当前宏块以及RM 502中相应的基准宏块确定最佳SAD。
在运动分离过程中,加法器树506可利用SIMD指令524的减法来确定运动估计过程中所确定的宏块与相应的基准宏块之间的德尔塔或差值。德尔塔可被加法器树506传递给德尔塔端口或总线主控528,供进一步处理。
在运动补偿过程中,如果通过德尔塔端口来获取德尔塔,例如,多路复用器534被用来将德尔塔传送给加法器树506,加法器树506利用SIMD指令524的加法,将德尔塔与所确定的基准宏块相加,从而重组当前宏块。
图6示出了根据本发明的实施例、利用图5中的运动处理加速器的典型基准存储器。参照图6,用于与宏块(1,1)相应的当前宏块的检索区可包括帧部分602的一部分614。该部分614可被加载到基准存储器608内,并在运动估计过程中被使用。在RM 608内的运动估计完成后,即开始下一个宏块的运动估计,例如与前一帧部分604内的宏块(2,1)相应的当前宏块。类似地,与宏块(2,1)相应的当前宏块的检索区可包括帧部分604的一部分616。
该部分616可被加载到基准存储器610中,并在运动估计过程中被使用。在这方面,两个相邻当前宏块的检索区可包括如图6所示交迭的2*3个基准宏块。当检索区从部分614变成部分616,在部分616中,可利用新的宏块行620。然后,用行620的宏块数据,在基准存储器608中更新对应的新行622。因此,只有RM 608中的第一宏块行被更新为新的宏块行622,以获得RM 610。
类似地,当检索区从部分616变成部分618,在部分618中,可利用新的宏块行624。然后,在基准存储器610中,对应的新行626被行624的宏块数据更新。因此,只有RM 610中部的宏块行被更新为新的宏块行624,从而获得RM 612。
在本发明的典型方面,为了减少检索区中引入的宏块,运动处理加速器可包括电路,所述电路允许,例如,基准存储器中的三个基准宏块行以旋转的方式设置,如图6所示。例如,可根据漏斗移位器如图5中的漏斗移位器520使用合适的宏块行旋转电路。在这方面,只需要为新的当前宏块获取1*3个基准宏块。对于靠近帧的边缘的当前宏块,检索区可位于帧外面。然后,运动处理加速器利用填充来填补帧外部的区域。在运动检索更广的宏块时,运动处理加速器可执行填充。
图7是根据本发明的实施例、用来处理视频数据的典型方法700的流程图。参照图7,在701,可确定所请求的视频处理功能是运动估计、运动补偿还是运动分离。在703,如果处理功能是运动估计,多个基准宏块会被存储在基准存储器中,当前宏块可被存储在当前存储器中。在705,根据基准存储器中至少一个基准宏块的亮度信息,为当前宏块确定一个或多个绝对误差和(SAD)的值。在707,根据所确定的SAD,生成当前宏块的基准宏块信息。如果处理功能是运动分离,在步骤709,根据当前宏块与基准宏块信息之间的差值,确定德尔塔或差值。在711,所确定的德尔塔被传送给德尔塔端口供存储。如果处理功能是运动补偿,在713,通过德尔塔端口从存储器获取所确定的德尔塔。在715,利用基准宏块信息和所确定的德尔塔,重组当前宏块。
因此,本发明可以通过硬件、软件,或者软、硬件结合来实现。本发明可以在至少一个计算机系统中以集中方式实现,或者由分布在几个互连的计算机系统中的不同部分以分散方式实现。任何可以实现所述方法的计算机系统或其它设备都是可适用的。软硬件的典型结合可以是安装有计算机程序的通用计算机系统,通过安装和执行所述程序控制计算机系统,使其按所述方法运行。
本发明还可以嵌入计算机程序产品,所述程序包含能够实现本发明方法的全部特征,当其安装到计算机系统中,可以执行本发明的方法。本文件中的计算机程序所指的是:可以采用任何程序语言、代码或符号编写的一组指令的任何表达式,该指令组使系统具有信息处理能力,以直接实现特定功能,或在进行下述一个或两个步骤之后实现特定功能:a)转换成其它语言、编码或符号;b)以不同的材料形式再现。
本发明是通过几个具体实施例进行说明的,本领域技术人员应当明白,在不脱离本发明范围的情况下,还可以对本发明进行各种变换及等同替代。另外,针对特定情形或具体情况,可以对本发明做各种修改,而不脱离本发明的范围。因此,本发明不局限于所公开的具体实施例,而应当包括落入本发明权利要求范围内的全部实施方式。
本申请引用并要求申请号为60/640,353、代理案号16232US01、申请日期为2004年12月30日、标题为“在微处理器中进行视频运动运动处理的方法和系统”的美国临时申请优先权。
本申请与以下申请相关:
美国专利申请号____(代理案号16036US01),申请日为2005年2月7日,标题为“在便携式视频通信系统的微处理器中进行图像处理的方法和系统”;
美国专利申请号____(代理案号16094US01),申请日为2005年2月7日,标题为“在微处理器中对可变长度的代码(VLC)进行编码的方法和系统”;
美国专利申请号____(代理案号16471US01),申请日为2005年2月7日,标题为“在微处理器对可变长度的代码(VLC)进行解码的方法和系统”;
美国专利申请号____(代理案号16099US01),申请日为2005年2月7日,标题为“在微处理器中进行视频压缩和解压缩(CODEC)的方法和系统”。