用于快速执行子像素内插的方法和系统的制作方法

文档序号:6650603阅读:194来源:国知局
专利名称:用于快速执行子像素内插的方法和系统的制作方法
技术领域
本公开总的来说涉及视频压缩系统,并且更具体来说,涉及用于快速执行子像素内插(interpolation)的方法和系统。
背景技术
图像压缩系统在各种应用中变得越来越有用。例如,视频压缩经常用于压缩视频信息以存储在数字通用光盘(DVD)或硬盘驱动器(HDD)上。作为另一个例子,在诸如互联网、数字用户线(DSL)、直播卫星(DBS)系统、分组网络上的多媒体服务(MSPN)和有线电视(CATV)网络的网络或通信信道上进行视频信息的实时流式传输的过程中经常使用视频压缩。另外,视频压缩用于许多其它应用,比如计算机游戏、视频游戏、视频会议系统、视频电话、交互式存储媒体(ISM)和远程视频监视系统(RVS)。
过去的二十年已经发展了几种视频压缩标准。其中最新的标准是国际电信联盟-电信(ITU-T)H.264标准。H.264标准也被称为先进的视频编码(AVC)或运动图像专家组4(MPEG-4)的第10部分。H.264标准与以前的标准相比提供了很多的优点,包括改进的速率失真和更低的比特率。在它的特征中,H.264标准支持子像素运动补偿。
子像素运动补偿经常在计算上是复杂而且在计算上是密集的。因为这个原因,作为H.264标准或其它标准的一部分,子像素运动补偿的应用经常需要大量的处理时间和资源。结果,它的应用一般使视频压缩和/或解压缩系统的性能变慢。

发明内容
本公开提供一种用于快速执行子像素内插的方法和系统。
在第一实施方式中,该方法包括接收包含全像素的视频信息。该方法还包括执行子像素内插以并行地产生半像素和四分之一像素。在子像素内插期间多个半像素和多个四分之一像素同时产生。
在第二实施方式中,子像素内插器包括可以存储由全像素形成的视频信息的输入存储器。子像素内插器还包括至少一个可以执行子像素内插以并行地产生半像素和四分之一像素的内插单元。在子像素内插期间多个半像素和多个四分之一像素同时产生。另外,子像素内插器包括可以存储全像素、半像素和四分之一像素中的至少一些的输出存储器。
在第三实施方式中,一种系统包括包含全像素的视频信息的源和子像素内插器。子像素内插器包括可以存储全像素的输入存储器。子像素内插器还包括至少一个可以执行子像素内插以并行地产生半像素和四分之一像素的内插单元。在子像素内插期间多个半像素和多个四分之一像素同时被产生。另外,子像素内插器包括可以存储全像素、半像素和四分之一像素中的至少一些的输出存储器。
根据下面的附图、描述和权利要求,其它的技术特征对于本领域的技术人员来说可以是明显的。


为了更完整的理解本公开及其特点,现在将下面的说明与附图结合在一起进行参考,其中图1举例说明了依照本公开的一种实施方式的示例性视频系统;图2举例说明了依照本公开的一种实施方式的示例性子像素内插器;图3举例说明了依照本公开的一种实施方式的示例性水平半像素内插器;图4A和4B举例说明了依照本公开的一种实施方式的示例性垂直半像素内插器和垂直半像素内插器排列;图5举例说明了依照本公开的一种实施方式的示例性四分之一像素内插器;图6举例说明了依照本公开的一种实施方式的包括图像宏块的示例性半像素内插;图7举例说明了依照本公开的一种实施方式的包括图像宏块的示例性四分之一像素内插;图8举例说明了依照本公开的一种实施方式的包括图像宏块的示例性半像素和四分之一像素内插;图9举例说明了依照本公开的一种实施方式的包括图像宏块的示例性八分之一像素内插;以及图10举例说明了依照本公开的一种实施方式的用于快速执行子像素内插的一种示例性方法。
具体实施例方式
图1举例说明了依照本公开的一种实施方式的示例性视频系统100。在该举例说明的示例中,系统100包括视频编码器102、视频解码器104和显示设备106。在图1中所示的视频系统100仅用于举例说明。视频系统100的其它实施方式可以在不脱离本公开的范围的条件下使用。
在一种操作情况中,视频编码器102压缩视频信息,并且视频解码器104接收并解压缩视频信息。例如,视频编码器102和视频解码器104可以各自支持国际电信联盟-电信(ITU-T)H.264标准。为实现H.264标准或其它压缩方案,视频编码器102和视频解码器104可以执行子像素内插。子像素内插允许视频编码器102和视频解码器104对被压缩或解压缩的图像在子像素或部分像素上进行识别和操作。使用包含在被压缩或解压缩的图像内的像素来识别该子像素或部分像素。
在一些实施方式中,视频编码器102和视频解码器104各自包括一个或多个子像素内插单元和存储器装置。内插单元通过使用原始图像像素执行内插而产生子像素,存储器装置存储不同的像素和子像素的值。内插单元可以并行操作,这有助于减少执行内插处理所需的时间量。另外,存储器装置有助于减少在内插处理期间的加载和存储操作的次数,这还有助于减少执行内插处理所需的时间量。
在举例说明的示例中,视频编码器102产生压缩的视频信息。在本文件中,短语“视频信息”指的是表示视频图像序列的信息。视频编码器102表示用于产生或另外提供压缩的视频信息的任何适当的装置、系统或机械装置。例如,视频编码器102可以表示可以通过诸如互联网、数字用户线(DSL)、无线网络、直播卫星(DBS)系统、分组网络上的多媒体服务(MSPN)和有线电视网络(CATV)的数据网络108发送流式视频到视频解码器104的流式视频发送器。视频编码器102还可以表示数字通用光盘(DVD)刻录机(burner)或其它可以在DVD或其它光盘110上存储压缩的视频信息的光盘刻录机。视频编码器102还可以表示可以压缩用于存储在硬盘驱动器(HDD)112上的视频信息的数字视频录像机。视频编码器102包括用于压缩视频信息的任何硬件、软件、固件或它们的组合。
视频解码器104解压缩由视频编码器102提供的压缩的视频信息。视频解码器104表示用于解压缩视频信息的任何适当的装置、系统或机械装置。例如,视频解码器104可以表示可以通过网络108从视频编码器102接收流式视频的流式视频接收器。视频解码器104还可以表示可以从光盘110检索(retrieve)压缩的视频信息的DVD播放器或其它光盘播放器。视频解码器104还可以表示可以解压缩存储在硬盘驱动器112上的视频信息的数字视频录像机。视频解码器104包括用于解压缩视频信息的任何硬件、软件、固件或它们的组合。
在举例说明的示例中,视频解码器104解压缩压缩的视频信息并且提供解压缩的视频信息给显示设备106以显示给观众。显示设备106表示用于显示视频信息给一个或多个观众的任何适当的设备、系统或结构。显示设备106例如可以表示电视机、计算机显示器或投影仪。视频解码器104可以提供解压缩的视频信息给任何其它或另外的目标,例如视频磁带录像机(VCR)或其它记录设备。
尽管在图1中作为分离的部件被示出,但是视频编码器102和视频解码器104可以运行在单个设备或装置内。例如,视频编码器102和视频解码器104可以运行在数字视频录像机或其它设备内。视频编码器102可以接收并压缩视频信息来存储在硬盘驱动器112上,而视频解码器104可以检索并解压缩视频信息来显示。
在举例说明的实施方式中,视频编码器102包括视频源114。视频源114提供包含将被视频编码器102压缩的视频信息的视频信息信号116。视频数据源114表示可以产生或另外提供未压缩的视频信息的任何设备、系统或结构。视频数据源114例如可以包括电视接收机、VCR、摄影机、可以存储未加工的视频数据的存储设备或者任何其它适当的视频信息源。尽管图1中举例说明了视频数据源114构成视频编码器102的一部分,但是视频数据源114也可以存在于视频编码器102之外。
合并器118被耦合到视频数据源114中。在本文件中,术语“耦合”及其派生词指的是任何在两个或更多元件之间的直接或间接的通信,无论那些元件在物理上是否相连。合并器118从视频数据源114接收包含未压缩的视频信息的视频信息信号116。合并器118还从视频编码器102中的其它部件中接收反馈视频信号148。反馈视频信号148与已经被视频编码器102压缩的视频信息相关联。合并器118识别视频信息信号116与反馈视频信号148之间的任何差异。然后合并器118把识别后的差异作为残留信号120输出。合并器118表示用于合并信号的任何硬件、软件、固件或它们的组合,例如减法器。
残留信号120提供给变换/量化单元122。变换/量化单元122执行处理残留信号120的各种功能。例如,变换/量化单元122可以执行变换功能以使残留信号120(在空间域)变换为离散余弦变换(DCT)系数(在频率域)。变换/量化单元122还可以量化DCT系数并且输出量化的DCT系数124。在一些实施方式中,变换/量化单元122在来自被压缩的图像的像素的块(例如16×16的宏块)上进行操作并且产生量化的DCT系数124的块。变换/量化单元122包括用于变换和量化视频信息的任何硬件、软件、固件或它们的组合。
量化的DCT系数124提供给熵编码器126。熵编码器126编码量化的DCT系数124(以及其它信息)以产生压缩的视频信息128。熵编码器126可以实现任何适当的编码技术,比如基于上下文自适应的算法编码(CABAC)和/或上下文自适应的可变长度编码(CAVLC)。熵编码器126包括用于编码量化的DCT系数124和其它信息的任何硬件、软件、固件或它们的组合。
量化的DCT系数124提供给逆变换/量化单元130。逆变换/量化单元130处理量化的DCT系数124并且试图逆转由变换/量化单元122执行的处理。例如,逆变换/量化单元130可以实现逆量化功能以产生DCT系数。逆变换/量化单元130还可以实现逆DCT变换以产生重构的残留信号132。该重构的残留信号132可以匹配于原始的残留信号120,或者重构的残留信号132可以是与残留信号120相似但有一些差别。逆变换/量化单元130包括用于执行逆变换和逆量化功能的任何硬件、软件、固件或它们的组合。
重构的残留信号132提供给合并器134。合并器134还接收反馈视频信号148。然后合并器134合并重构的残留信号132和反馈视频信号148以产生合并的信号136。合并器134表示用于合并信号的任何硬件、软件、固件或它们的组合,例如加法器。
合并的信号136提供给解块过滤器(filter)138。解块过滤器138减少被解压缩的图像中的分块伪像,例如位于沿着不同16×16的宏块的边界的分块伪像。这将产生过滤后的视频信息140。解块过滤器138表示用于减少分块伪像的任何硬件、软件、固件或它们的组合。
过滤后的视频信息140提供给运动估计器142和运动补偿器144。运动估计器142还接收原始视频信息信号116和反馈视频信号148。运动估计器142使用接收到的信息来识别被压缩的视频图像内的运动。例如,运动估计器142可以执行基于场或基于帧的运动估计以识别运动。然后运动估计器142输出运动矢量146,其代表图像内被识别的运动。运动矢量146提供给熵编码器126用于作为压缩的视频信息128的一部分进行编码并且提供给运动补偿器144。运动估计器142包括用于估计视频图像中的运动的任何硬件、软件、固件或它们的组合。
运动补偿器144接收过滤后的视频信息140和运动矢量146。运动补偿器144使用运动矢量146来改变过滤后的视频信息140并且将运动重新引入到过滤后的视频信息140中。这会产生反馈视频信号148,它可以精确地匹配于原始的视频信息信号116,但是也可以不这样。运动补偿器144包括用于改变视频信息以将运动引入到视频图像中的任何硬件、软件、固件或它们的组合。
在举例说明的示例中,当使用内部预测模式时,使用内部预测单元150来处理视频信息。内部预测模式在H.264中定义,并以4×4的块或分区的方式分析16×16的宏块。在一些实施方式中,当使用内部预测模式时,变换/量化单元122在4×4的分区上实现内部预测机制。当视频编码器102以内部预测模式操作时,内部预测单元150执行这一处理的逆处理并且产生反馈视频信号148。
视频解码器104可以包括许多和图1中所示的视频编码器102相似的部件。例如视频解码器104可以包括逆变换/量化单元130、合并器134、解块过滤器138、运动补偿器144和内部预测单元150。视频解码器104还可以包括逆熵编码器,该逆熵编码器执行由熵编码器126使用的编码功能的逆功能。逆熵编码器可以接收压缩的视频信息128,提供量化的DCT系数124给逆变换/量化单元130,并且提供运动矢量146给运动补偿器144。这样,视频解码器104解压缩视频信息128,并恢复视频信息信号116以显示给观众。
在一种操作情况中,视频编码器102和视频解码器104执行子像素内插。例如,在视频编码器102和视频解码器104中的运动补偿器144可以执行子像素运动补偿,这个操作就使用了子像素内插。子像素内插一般在计算上是复杂而且在计算上是密集的。如在下面将更加详细的说明的那样,视频编码器102和/或视频解码器104包括一个或多个子像素内插单元和存储器装置,这有助于降低子像素内插的复杂性和提高子像素内插的速度。
在特定的实施方式中,视频编码器102和视频解码器104执行H.264压缩方案。H.264压缩方案支持几种先进的视频编码技术,例如方向空间预测、多帧参考、加权预测、解块过滤、可变块尺寸和四分之一取样精确运动补偿。H.264压缩方案还支持一种小的、基于块的、整数的和分级的变换,以及CABAC和CAVLC编码。
H.264标准使用树型结构运动补偿方法。该方法支持从4×4到16×16范围内的可变运动补偿块或分区尺寸。对亮度取样来说,每个16×16的宏块是由一个或多个16×16、16×8、8×16、或8×8的块形成的。每个8×8的块能够进一步分割成8×4、4×8或4×4的块。这就在运动补偿块的选择上提供更多的灵活性并且允许很多可变块尺寸的组合用于匹配在视频图像中的不同物体的形状。
在互编码的(inter-coded)宏块中的每个块或分区由运动矢量146来描述。在当前帧中的分区的运动矢量146从参考帧中相同尺寸的区域来预测。两个运动矢量146之间的偏移量被编码并与分区的选择一起被发送。在H.264标准中,两个运动矢量146之间的偏移量具有四分之一像素的分辨率。该分辨率允许运动矢量146用更高的精度来计算,提高了编码效率。
尽管图1举例说明了视频系统100的一个示例,但是,还可以对图1做出各种变化。例如,图1举例说明了压缩的视频信息可以通过网络108、使用光盘110或在硬盘驱动器112上提供给视频解码器104。视频编码器102可以将压缩的视频信息放在任何适当的存储媒体上或者以任何适当的方式传送该信息给视频解码器104。而且,图1举例说明了视频编码器102的一个示例性实施方式。视频编码器102的其它实施方式可以使用。另外,视频编码器102和视频解码器104可以合并到单个设备或装置中。
图2举例说明了依照本公开的一种实施方式的示例性子像素内插器200。图2中所示的子像素内插器200仅用于举例说明。子像素内插器200的其它实施方式可以在不脱离本公开的范围的条件下使用。而且,为便于说明,图2的子像素内插器200被描述为在图1的系统100内部运行。子像素内插器200可以在任何其他系统或设备中使用。
子像素内插器200支持子像素内插并因此支持在图1的视频编码器102和/或视频解码器104内的子像素运动补偿。子像素内插器200例如可以用在图1的视频编码器102或视频解码器104中的运动补偿器144之内。
在这个示例中,子像素内插器200包括用于接收并且存储将被处理的视频信息的输入缓冲器202。例如,输入缓冲器202可以从图1的解块过滤器138接收16×16宏块。该16×16宏块包含表示图像中的像素的16×16块的数据值。原始图像像素可以被称作“全”像素(与“部分”像素相对,例如半像素和四分之一像素)。图2中示出的输入缓冲器202的尺寸仅用于举例说明。输入缓冲器202可以存储任何其它适当数量的信息,例如多个16×16宏块或其它数据块。输入缓冲器202表示任何适当的存储设备或设备。
存储在输入缓冲器202中的数据的子集或一部分被传递到矢量寄存器204的组。矢量寄存器204存储来自存储在输入缓冲器202中的宏块的全像素值的子集。例如,矢量寄存器204可以表示九组的六个寄存器,其中每组存储六个来自在输入缓冲器202中的宏块的单个行的全像素值。这样,矢量寄存器204可以包含五十四个在子像素内插处理期间使用的全像素值。矢量寄存器204表示任何适当的存储设备或设备。
存储在矢量寄存器204中的全像素值提供给水平半像素内插单元206。水平半像素内插单元206使用全像素值来内插半像素的值,该半像素值水平定位于图像中的全像素对之间。在一些实施方式中,水平半像素内插单元206针对输入宏块的多行并行地内插半像素值,这有助于减少产生半像素值所需的时间。水平半像素内插单元206包括用于在水平方向上内插半像素值的任何硬件、软件、固件或它们的组合。水平半像素内插单元206的一部分的一个示例在图3中示出,下面将说明它。
水平半像素内插单元206提供已识别的半像素值给垂直半像素内插单元208a。矢量寄存器204提供全像素值给垂直半像素内插单元208b。垂直半像素内插单元208a-208b用这些像素值来内插垂直地定位于全像素对之间或半像素对(由水平半像素内插单元206产生的)之间的半像素值。在一些实施方式中,垂直半像素内插单元208a-208b并行地对输入宏块的多列内插半像素值,这有助于减少识别半像素值所需的时间。垂直半像素内插单元208a-208b中的每一个包括用于在垂直方向上内插半像素值的任何硬件、软件、固件或它们的组合。垂直半像素内插单元208a-208b的一部分的一个示例在图4A和4B中示出,下面将说明它。
来自水平半像素内插单元206和垂直半像素内插单元208a-208b的半像素值存储在中间缓冲器210中。来自矢量寄存器204的全像素值也存储在中间缓冲器210中。中间缓冲器210表示任何可以存储像素数据的适当的存储设备或设备。
存储在中间缓冲器210中的全像素值和半像素值被提供给四分之一像素内插单元212。四分之一像素内插单元212使用该像素值来内插用于四分之一像素的值。四分之一像素水平地、垂直地和对角地定位于全像素和半像素之间或半像素之间。在一些实施方式中,四分之一像素内插单元212并行地对输入宏块的多个行和列内插四分之一像素值,这有助于减少识别四分之一像素值所需的时间。四分之一像素内插单元212包括用于内插四分之一像素值的任何硬件、软件、固件或它们的组合。四分之一像素内插单元212的一部分的一个示例在图5中示出,下面将说明它。
存储在中间缓冲器210中的全像素值和半像素值被提供给输出缓冲单元214。来自四分之一像素内插单元212的四分之一像素值也提供给输出缓冲器214。输出缓冲器214存储用于子像素内插器200外部的部件进行检索的像素数据。例如,输出缓冲器214可以存储像素数据以便运动补偿器144可以检索和分析像素数据。输出缓冲器214表示任何可以存储像素数据的适当的存储设备或设备。
图2中示出的子像素内插器200有助于降低子像素内插的复杂性和提高子像素内插的速度。例如,矢量寄存器204和缓冲器202、210、214可以存储(全、半和/或四分之一)像素值的组。这有助于减少在内插处理期间所需的加载和存储操作的数量。同样,执行H.264标准的常规设备通常在水平内插之后执行转置操作,以便将数据从行转移到列,用于垂直内插。子像素内插器200使用矢量寄存器204来消除对转置操作的需要,这也有助于减少执行内插处理所需的时间。此外,来自矢量寄存器204的数据直接供应给内插单元206、208b,并且来自内插单元206的数据直接供应给内插单元208a。而且,象下面更详细说明的那样,子像素内插器200的结构以流水线方式被设计,以允许在最初的等待时间后的每个时钟周期产生多个子像素。
另外,垂直和水平内插二者可以同时执行。在这个实施方式中,子像素内插器200处理九个像素行,并且并行地产生四组输出。例如,这允许子像素内插器200产生第一半像素集合、第二半像素集合和第三半像素集合。子像素内插器200还使用第一半像素集合来产生第一四分之一像素集合,其中第一四分之一像素集合与第二半像素集合同时产生。子像素内插器200还使用第二半像素集合产生第二四分之一像素集合,其中第二四分之一像素集合与第三半像素集合同时产生。在特定的实施方式中,半像素和四分之一像素内插是在适当的位置执行的,并且每个周期计算十七个半像素和四十八个四分之一像素。这有助于增加子像素内插器200的吞吐量。在本文件中,术语“同时”及其派生词和短语“并行地”指的是在两个或多个动作的实施时的重叠,无论该重叠是完整的还是部分的。
在特定的实施方式中,每个16×16输入宏块通过子像素内插器200来处理,然后子像素内插器200输出十五个16×16宏块。该十五个16×16输出宏块包含全像素、半像素和四分之一像素。同样,在特定的实施方式中,在图2中示出的子像素内插器200可以实现为一个协处理器来和执行视频压缩或解压缩的处理器一起使用。协处理器可以表示四路超长指令字(VLIW)处理器,其可以每个指令执行一个加载、一个存储和两个运算操作。该指令可以表示单指令多数据(SIMD)指令。
尽管图2举例说明了子像素内插器200的一个示例,但还是可以对图2做各种的变化。例如,输入宏块的尺寸(16×16)和矢量寄存器204的组的尺寸(9×6)仅用于举例说明。
图3举例说明了依照本公开的一种实施方式的水平半像素内插器300的一个示例。图3中示出的水平半像素内插器300的实施方式仅用于举例说明。水平半像素内插器300的其它实施方式可以在不脱离本公开的范围的条件下使用。同样,为便于说明,水平半像素内插器300被描述为形成图2的子像素内插器200中的水平半像素内插单元206的一部分。水平半像素内插器300可以用在任何其它系统或设备中。
在这个示例中,水平半像素内插器300包括六个输入寄存器302a-302f。输入寄存器302a-302f可以存储六个不同的像素值,例如从矢量寄存器204接收到的全像素值。输入寄存器302a-302f形成分级-移位寄存器304,其中全像素值从一个寄存器移位到另一个。第一输入寄存器302a从矢量寄存器204之一接收全像素值。剩下的每个输入寄存器302b-302f分别从它前面的输入寄存器302a-302e中接收全像素值。输入寄存器302a-302f包括任何可以存储像素值的结构。
水平半像素内插器300还包括八个加法器306a-306h和四个移位器308a-308d。加法器306a-306h中的每个包括用于将两个或多个输入值相加的任何硬件、软件、固件或它们的组合。移位器308a-308d中的每个包括用于以一个或多个方向将值移位一个或多个比特位的任何硬件、软件、固件或它们的组合。
加法器306a-306c中的每个从输入寄存器302a-302f中的两个接收两个全像素值并对它们求和。加法器306d接收加法器306a的输出和常数值310并对它们求和。加法器306e接收加法器306b的输出和移位器308a的输出并对它们求和。移位器308a将加法器306b的输出向左移动两个比特位(相当于将加法器306b的输出乘以4)。实际上,加法器306e输出等于加法器306b的输出的五倍的值。
加法器306f接收移位器308b-308c的输出并对它们求和。移位器308b-308c分别将加法器306c的输出向左移位四个比特位(相当于将加法器306c的输出乘以16)和两个比特位。实际上,加法器306f输出等于加法器306c的输出的二十倍的值。
加法器306g接收加法器306e和加法器306f的输出。加法器306g从加法器306f的输出中减去加法器306e的输出。加法器306h接收加法器306d和306g的输出并对它们求和。移位器308d将加法器306h的输出向右移位五个比特位(相当于将加法器306h的输出除以32)。移位器308d的输出表示用存储在输入寄存器302a-302f中的六个全像素值计算得出的一个半像素值。
在举例说明的实施方式中,加法器306a-306h和移位器308a-308d形成四级流水线结构。第一级由加法器306a-306c表示。第二级由加法器306d-306f和移位器308a-308c表示。第三级由加法器306g表示。第四级由加法器306h和移位器308d表示。因为这里有四级,所以,水平半像素内插器300有三个周期的等待时间,并在这之后每个时钟周期产生一个半像素。这个水平半像素内插器300的实施方式不需要使用乘法器,使用乘法器可能使水平半像素内插器300的操作变慢。
在图2中示出的子像素内插器200的实施方式中,九个水平半像素内插器300可以用在水平半像素内插单元206中。在这个实施方式中,这九个水平半像素内插器300从矢量寄存器204中的九个不同的行接收全像素值。然后这九个水平半像素内插器300同时计算九个不同的水平半像素值。使用其它数量的水平半像素内插器300的水平半像素内插单元206的其它实施方式可以使用。
尽管图3举例说明了水平半像素内插器300的一个示例,还是可以对图3做各种的变化。例如,提供与在图3中示出的水平半像素内插器300的功能相同的功能的其它结构可以使用。
图4A和4B举例说明了依照本公开的一种实施方式的垂直半像素内插器400和垂直半像素内插器400的排列450的示例。图4A中示出的垂直半像素内插器400和图4B中示出的排列450仅用于举例说明。垂直半像素内插器400的其它实施方式和其它排列450可以在不脱离本公开的范围的条件下使用。同样,为便于说明,垂直半像素内插器400和排列450被描述为形成图2的子像素内插器200中的垂直半像素内插单元208a-208b的一部分。垂直半像素内插器400和排列450可以用在任何其它系统或设备中。
在图4A中,垂直半像素内插器400包括六个输入寄存器402a-402f。输入寄存器402a-402f可以存储六个用于产生半像素值的不同的像素值。例如,如果垂直半像素内插器400在图2的垂直半像素内插单元208a中使用,则存储在输入寄存器402a-402f中的像素值表示由水平半像素内插单元206产生的半像素值。如果垂直半像素内插器400在图2的垂直半像素内插单元208b中使用,存储在输入寄存器402a-402f中的像素值表示来自矢量寄存器204的全像素值。输入寄存器402a-402f包括可以存储像素值的任何结构。
垂直半像素内插器400还包括八个加法器404a-404h和四个移位器406a-406d。加法器404a-404h中的每个包括用于将两个或多个输入值相加的任何硬件、软件、固件或它们的组合。移位器406a-406d中的每个包括用于以一个或多个方向将数值移位一个或多个比特位的任何硬件、软件、固件或它们的组合。
加法器404a-404c中的每个从输入寄存器402a-402f中的两个接收像素值并对它们求和。加法器404d接收加法器404a的输出和常数值408并对它们求和。加法器404e接收加法器404b的输出和移位器406a的输出并对它们求和,移位器406a将加法器404b的输出向左移位两个比特位。加法器404f接收移位器406b-406c的输出并对它们求和,移位器406b-406c分别将加法器404c的输出向左移位四个比特位和两个比特位。加法器404g接收加法器404e和加法器404f的输出并从加法器404f的输出中减去加法器404e的输出。加法器404h接收加法器404d和404g的输出并对它们求和。移位器406d将加法器404h的输出向右移位五个比特位。移位器406d的输出表示用存储在输入寄存器402a-402f中的六个像素值(全像素值或半像素值)计算得出的一个半像素值。
在举例说明的实施方式中,加法器404a-404h和移位器406a-406d形成四级流水线结构。垂直半像素内插器400有三个周期的等待时间,并在这之后每个时钟周期产生一个半像素。这个垂直半像素内插器400的实施方式也不需要使用乘法器。
在图2中示出的子像素内插器200的实施方式中,四个垂直半像素内插器400可以在垂直半像素内插单元208a-208b的每一个中使用,从而有总共八个垂直半像素内插器400。这允许垂直半像素内插单元208a-208b同时计算八个不同的垂直半像素。使用其它数量的垂直半像素内插器400的垂直半像素内插单元208a-208b的其它实施方式可以使用。
在图4B中,举例说明了一种排列450,该排列可以用在垂直半像素内插单元208b中。象下面说明的一样,类似的排列可以用在垂直半像素内插单元208a中。
在这个示例中,排列450包括四个垂直半像素内插单元400(VHIU0-VHIU3)。其中的每个可以具有象图4A中示出的相同或相似的结构。排列450还包括矢量寄存器204的列502,在之前图2中的示例中其包括九个矢量寄存器。排列450还包括置换(permutation)单元504,该置换单元504从矢量寄存器204的列502发送数据到垂直半像素内插单元400。
在图2中示出的示例中,矢量寄存器204包括六行和九列寄存器。用R0到R53表示五十四个矢量寄存器204。在这个示例中,第一行包括R0-R5,第二行包括R6-R11,最后一行包括R48-R53。来自矢量寄存器204的数据按行提供给水平半像素内插单元206,并且来自矢量寄存器204的数据按列提供给垂直半像素内插单元208b。
为能够按列提供数据给垂直半像素内插器400,排列450使用了置换单元504。置换单元504表示嵌入在垂直半像素内插单元208b中的单指令多数据(SIMD)置换单元。置换单元504为四个垂直半像素内插器400中的每一个选择适当的输入。特别的是,第一个和最后一个寄存器值R1和R49每个提供给单独的垂直半像素内插器。第二个和第八个寄存器值R7和R43每个提供给两个垂直半像素内插器。第三个和第七个寄存器值R13和R37每个提供给三个垂直半像素内插器。第四个、第五个和第六个寄存器值R19、R25和R31每个提供给四个垂直半像素内插器。单个SIMD指令用于激活垂直半像素内插单元208b,并且从寄存器的502列提供数据给垂直半像素内插器400。于是并行地计算出四个半像素。
图4B中示出的矢量寄存器的502列表示在矢量寄存器204的组中的第二列。在一个随后的时钟周期期间,置换单元504可以从在矢量寄存器204的组中的第三列检索并提供数据。在其它随后的时钟周期期间,置换单元504可以从矢量寄存器204的组中的其它列检索和提供数据。这样,垂直半像素内插单元208b避免了使用转置操作。
象上文指出的那样,类似的排列可以用在垂直半像素内插单元208a中。如图4B所示,提供给垂直半像素内插单元208b的数据来自矢量寄存器204。如图2所示,提供给垂直半像素内插单元208a的数据来自水平半像素内插单元206。结果,相同或类似的置换单元504可以用在具有不同的输入数据源的垂直半像素内插单元208a中。
尽管图4A和4B举例说明了垂直半像素内插器400和垂直半像素内插器400的排列450的一个示例,但还是可以对图4A和4B做各种的变化。例如,提供与在图4A中示出的垂直半像素内插器400的功能相同的功能的其它装置可以使用。同样,可以使用其它发送像素数据到垂直半像素内插器400的排列。
图5举例说明了依照本公开的一种实施方式的示例性四分之一像素内插器500。图5中示出的四分之一像素内插器500的实施方式仅用于举例说明。四分之一像素内插器500的其它实施方式可以在不脱离本公开的范围的条件下使用。同样,为便于说明,四分之一像素内插器500被描述为形成在图2的子像素内插器200中的四分之一像素内插单元212的一部分。四分之一像素内插器500可以用在任何其它系统或设备中。
在这个示例中,四分之一像素内插器500包括两个输入寄存器502a-502b。输入寄存器502a-502b可以存储两个不同的像素值。该像素值可以表示全像素值和半像素值或两个半像素值。输入寄存器502a-502b包括任何可以存储像素值的结构。
四分之一像素内插器500还包括两个加法器504a-504b和移位器506。加法器504a-504b中的每一个包括用于将两个或多个象素值相加的任何硬件、软件、固件或它们的组合。移位器506包括用于以一个或多个方向将值移位一个或多个比特位的任何硬件、软件、固件或它们的组合。
加法器504a从输入寄存器502a-502b接收像素值并对它们求和。加法器504b接收加法器504a的输出和常数值508并对它们求和。移位器506将加法器504b的输出向右移位一个比特位(相当于将加法器504b的输出除以2)。移位器506的输出表示用存储在输入寄存器502a-502b中的两个像素值计算得到的一个四分之一像素值。
在举例说明的实施方式中,加法器504a-504b和移位器506形成二级流水线结构。四分之一像素内插器500有一个周期的等待时间,并在此之后每个时钟周期产生一个四分之一像素。四分之一像素内插器500的这个实施方式不需要使用乘法器。
在图2中示出的子像素内插器200的实施方式中,四十八个四分之一像素内插器500可以用在四分之一像素内插单元212中。这允许四分之一像素内插单元212同时计算四十八个不同的四分之一像素。使用其它数量的四分之一像素内插器500的四分之一像素内插单元212的其它实施方式也可以被使用。
总的来说,子像素内插器200每个时钟周期最多产生九个水平半像素、八个垂直半像素和四十八个四分之一像素。如果作为输入接收到16×16宏块,则子像素内插器200的输出可以组织为64×64宏块。令64×64输出块的左上角的像素为O0,0,右下角的像素为O63,63。表1举例说明了子像素内插器200执行子像素内插的过程。在这个表中,输出值Ov,h首先通过其垂直下标v然后通过其水平下标h来索引。

表1如表1中所示和上文中讨论的,在产生第一半像素值之前有三个周期的等待时间。此后,每个时钟周期可以产生九个水平半像素和八个垂直半像素,以及要用十五个周期来处理在16×16宏块的每一条线中剩余的像素。同样,需要两个额外的时钟周期来完成四分之一像素计算。结果,对于16×16宏块的每一条线的四分之一像素的计算要用二十一个时钟周期。因为16×16宏块的四条线可以同时处理,对于16×16宏块的所有部分像素的计算要用八十四个时钟周期。
尽管图5举例说明了四分之一像素内插器500的一个示例,但还是可以对图5做各种的变化。例如,提供与在图5中示出的四分之一像素内插器500的功能相同的功能的其它结构可以使用。
图6举例说明了依照本公开的一种实施方式的包括图像宏块的示例性半像素内插600。特别是,图6举例说明了由图2的子像素内插器200中的水平半像素内插单元206和垂直半像素内插单元208a-208b执行的示例性半像素内插600。图2的子像素内插器200可以以不脱离本公开的范围的任何适当的方式操作。
在子像素内插器200中的矢量寄存器204存储九行的六个全像素值。在这个示例中,在图6中,全像素被表示为灰色的像素,例如像素602。在图6中,通过子像素内插器200在第一个迭代/时钟周期期间内插的半像素被表示为有阴影线的像素,例如像素604。在图6中,通过子像素内插器200在第二迭代/时钟周期期间内插的半像素被表示为黑色的像素,例如像素606。
以第二迭代为例。在内插单元206中的每个水平半像素内插器300接收在图6中的一行中的六个全像素602的值。使用这些全像素602,九个水平半像素内插器300产生在图6的列608中示出的半像素606。
在内插单元208b中的每个垂直半像素内插器400接收在图6的列610中的九个全像素602中的六个。这些垂直半像素内插器400随后产生在图6的列610中示出的四个半像素606。同样,在内插单元208a中的每个垂直半像素内插器400接收在图6的列612中的九个半像素604中的六个。列612中的半像素604是由水平半像素内插单元206在第一迭代期间产生的。这些垂直半像素内插器400随后产生在图6的列612中示出的四个半像素606。
这样,水平半像素内插单元206和垂直半像素内插单元208a-208b可以并行地产生十七个半像素值。这种结构有助于减少与子像素内插处理相关联的延时并且增加子像素内插器200的吞吐量。
尽管图6举例说明了包括图像宏块的半像素内插600的一个示例,但还是可以对图6做各种的变化。例如,半像素内插可以以任何其它适当的方式出现,比如当每个迭代产生更多或更少半像素时。
图7举例说明了依照本公开的一种实施方式的包括图像宏块的示例性四分之一像素内插700。特别是,图7举例说明了由图2的子像素内插器200中的四分之一像素内插单元212执行的示例性四分之一像素内插700。图2的子像素内插器200可以以不脱离本公开的范围的任何适当的方式操作。
在这个示例中,在图7中,全像素还被表示为灰色的像素,例如像素702。在图7中,通过子像素内插器200(垂直和水平)内插的半像素被表示为有阴影线的像素,例如像素704。在图7中,通过子像素内插器200内插的四分之一像素被表示为有交叉阴影的像素,例如像素706。
如图7中所示出的,每个四分之一像素706水平地、垂直地或对角地定位于全像素702和半像素704之间或两个半像素704之间。每个四分之一像素706通过使用这两个在其周围的像素值来确定。
四分之一像素内插单元212在四分之一像素内插单元212的每个时钟周期/迭代期间可以计算四十八个不同的四分之一像素值。这可以并行地通过半像素内插单元206、208a-208b实现。例如,半像素内插单元206、208a-208b可以产生十七个半像素。四分之一像素内插单元212接收所述半像素并产生四十八个四分之一像素。在四分之一像素内插单元212产生所述四分之一像素时,半像素内插单元206、208a-208b可以产生另外十七个半像素,它们稍后被四分之一像素内插单元212接收。这样,内插单元206、208a-208b、212可以同时运行以快速地产生部分像素。
如图7中示出的,子像素内插器200为图像中的每个全像素702计算三个半像素704和十二个四分之一像素706。对16×16宏块来说,这意味着子像素产生器200为每个宏块输出3,840(16*16*15)个全像素和部分像素。这些半像素704和四分之一像素706可以用于在压缩/解压缩视频信息时提供改良的运动补偿。使用在图2-5中示出的结构,可以用比常规的H.264和其它视频编码器/解码器更少的延时和更低的计算开销来产生这些半像素704和四分之一像素706。
尽管图7举例说明了包括图像宏块的四分之一像素内插700的一个示例,但还是可以对图7做各种的变化。例如,四分之一像素内插可以以任何其它适当的方式出现,例如在每个迭代产生更多或更少四分之一像素时。
图8举例说明了依照本公开的一种实施方式的包括图像宏块的半像素和四分之一像素内插800的一个示例的附加的细节。图8使用与图7相同的明暗法来区别全像素、半像素和四分之一像素。
在图8中,大写字母表示全像素(例如亮度像素),而小写字母表示半像素和四分之一像素。半像素,例如像素b和h,是通过水平半像素内插器300和垂直半像素内插器400来计算的。在图3和4示出的实施方式中,每个内插器300、400充当一个六抽头有限冲击响应(FIR)过滤器。在H.264标准中,六抽头FIR过滤器的系数是(1、-5、20、20、-5、1)/32。水平半像素内插器300使用在一行中的六个全像素值来计算每个半像素。垂直半像素内插器400使用在一列中的六个全像素值或六个半像素值来计算每个半像素。
在这种实施方式中,半像素b和h的值可以用下面的公式表示b=(E-5F+20G+20H-5I+J+16)/32 (1)h=(A-5C+20G+20M-5R+T+16)/32. (2)每一个结果四舍五入到最近的整数。半像素aa、bb、s、gg和hh的值用和b同样的方法计算。cc、dd、m、ee和ff的值用和h同样的方法计算。半像素j的值通过水平地(使用cc、dd、h、m、ee和ff)或垂直地(使用aa、bb、b、s、gg和hh)应用六抽头过滤器来计算,其用下面地公式表示j=(cc-5dd+20h+20m-5ee+ff+16)/32 (3)j=(aa-5bb+20b+20s-5gg+hh+16)/32. (4)一旦半像素值可用,四分之一像素内插器500就计算四分之一像素值。该四分之一像素值是使用线性内插法计算的,并且结果四舍五入到最接近的整数。例如,四分之一像素a、d和e的值可以用下面的公式表示a=(G+b+1)/2 (5)d=(G+h+1)/2 (6)e=(b+h+1)/2. (7)剩余的四分之一像素的值可以用类似的方式来计算。
尽管图8举例说明了包括图像宏块的半像素和四分之一像素内插的一个示例的附加的细节,但还是可以对图8做各种的变化。例如,更多或更少的半像素和四分之一像素可以被产生并被用在子像素内插器200的每个迭代中。
图9举例说明了依照本公开的一种实施方式的包括图像宏块的一个示例性八分之一像素内插900。在一些实施方式中,图2的子像素内插器200可能需要确定八分之一像素值,例如当使用4:2:0取样以及四分之一象素亮度值需要八分之一象素色度值时。
在这个示例中,在图9中,全像素还被表示为灰色的像素,例如像素902。在图9中,八分之一像素被表示为有交叉阴影的像素,例如像素904。在这个示例中,八分之一像素904使用包括四个周围全像素902的线性内插来计算。然而,八分之一像素904可以以任何其它适当的方式来计算。例如,八分之一像素904可以使用邻近的半像素或四分之一像素或全像素、半像素和/或四分之一像素的组合来计算。
尽管图9举例说明了包括图像宏块的一个示例性的八分之一像素内插900,但还是可以对图9做各种的变化。例如,八分之一像素904可以以任何其它适当的方式产生。
图10举例说明了依照本公开的一种实施方式的用于快速执行子像素内插的一个示例性方法1000。为便于说明,通过图2的子像素内插器200来描述方法1000。该方法1000可以由任何其它的设备并在任何其它的系统中被使用。
子像素内插器200在步骤1002接收包含视频信息的宏块。这个步骤可以包括,例如,子像素内插器200接收16×16宏块,并把该宏块存储在输入缓冲器202中。该16×16宏块可以包含256个全像素值。
子像素内插器200在步骤1004中选择在宏块中的全像素值的子集。这个步骤可以包括,例如,子像素内插器200把来自宏块的九行中的每一行的六个全像素值存储在矢量寄存器204中。
子像素内插器200在步骤1006使用全像素的子集来产生水平半像素。这个步骤可以包括,例如,在内插单元206中的每一个水平半像素内插器300接收来自矢量寄存器204的全像素值。这也可以包括水平半像素内插器300的各个级将值相加和移位以产生水平半像素。这个步骤还可以包括在中间缓冲器210中存储水平半像素。
子像素内插器200在步骤1008使用全像素的子集产生垂直半像素。这个步骤可以包括,例如,在内插单元208b中的每一个垂直半像素内插器400接收来自矢量寄存器204的全像素值。这也可以包括垂直半像素内插器400的各个级将值相加和移位以产生垂直半像素。这个步骤还可以包括在中间缓冲器210中存储垂直半像素。
子像素内插器200在步骤1010使用水平半像素产生垂直半像素。这个步骤可以包括,例如,在内插单元208a中的每一个垂直半像素内插器400接收来自内插单元206的水平半像素。这也可以包括垂直半像素内插器400的各个级将值相加和移位以产生垂直半像素。这个步骤还可以包括在中间缓冲器210中存储垂直半像素。
子像素内插器200在步骤1012使用全像素和半像素产生四分之一像素。这个步骤可以包括,例如,在内插单元212中的每一个四分之一像素内插器500接收来自中间缓冲器210的全像素和半像素或两个半像素。这也可以包括四分之一像素内插器500的各个级将值相加和移位以产生四分之一像素。
子像素内插器200在步骤1014存储不同的全像素、半像素和四分之一像素。这个步骤可以包括,例如,将全像素、半像素和四分之一像素存储在输出缓冲器214中。在这时,在输出缓冲器214中的像素数据可以被检索并以任可适当的方式被使用。例如,像素数据可以被检索并用于执行运动补偿。不过,像素数据可以被用于任何其它适当的目的。
子像素内插器200在步骤1016判断宏块的处理是否完成。如果没有完成,子像素内插器200回到步骤1004以便从当前的宏块中选择另一个像素的子集。否则,宏块的处理完成,并且该方法1000结束。在这时,任何适当的动作都可以发生,例如对新的宏块重复所述方法1000。
尽管图10举例说明了一种用于快速实现子像素内插的方法1000的一个示例,但还是可以对图10做各种的变化。例如,尽管图10举例说明了方法1000连续发生的步骤,但是,在图10中示出的各个步骤可以并行地执行。作为一个特定的示例,步骤1006-1010可以在子像素内插器200的每个迭代期间使用先前的半像素集合而并行地被执行,以产生新的半像素集合并且产生四分之一像素的集合。
阐明在本专利文件中使用的某些词和短语的定义可能是有利的。术语“包括”和“包含”及其派生词意味着非限制性的包括。术语“或”是包括性的,意味着和/或。术语“每个”指的是所标识的项的至少一个子集中的每一个。短语“与...相关联的”和“与之相关联的”及其派生词可以是指包括、被包括在内、与...互连、包含、被包含在内、连接到...或与...相连、耦合到...或与...耦合、与...通信、与...协作、交织、并列、与...接近、一定或与...密切关联的、具有、有某种性质的、等等。术语“控制器”是指控制至少一种操作的任何设备、系统或其一部分。控制器可以在硬件、固件或软件中实现,或者在其至少两个的组合中实现。应指出的是,与任何特定的控制器相关联的功能性可以是集中的或分布式的,本地地或远程地。
尽管本公开描述了某些实施方式和通常关联的方法,但是,这些实施方式和方法的替换和改变对本领域的技术人员来说是显而易见的。因此,示例性实施方式的上述描述没有限定或约束本公开。在不脱离如权利要求中所定义的本公开的精神和范围的条件下,其它改变、置换和替换也是可能的。
权利要求
1.一种方法,包括接收包含全像素的视频信息;执行子像素内插以并行地产生半像素和四分之一像素,其中多个半像素和多个四分之一像素在子像素内插期间同时产生;并且使用半像素和四分之一像素中的至少一些来执行运动补偿。
2.按权利要求1所述的方法,其中执行子像素内插的步骤包括使用全像素中的至少一些来产生水平半像素,每个水平半像素水平地位于两个全像素之间;使用全像素中的至少一些来产生第一垂直半像素,每个第一垂直半像素垂直地位于两个全像素之间;并且使用水平半像素中的至少一些来产生第二垂直半像素,每个第二垂直半像素垂直地位于两个水平半像素之间。
3.按权利要求2所述的方法,其中第一和第二垂直半像素同时产生。
4.按权利要求2所述的方法,其中执行子像素内插的步骤还包括使用全像素和半像素中的至少一些来产生四分之一像素,每个四分之一像素水平地、垂直地或对角地位于一个全像素和一个半像素之间或两个半像素之间。
5.按权利要求1所述的方法,其中执行子像素内插的步骤包括产生第一半像素集合、第二半像素集合和第三半像素集合;使用第一半像素集合产生第一四分之一像素集合,该第一四分之一像素集合在产生第二半像素集合的同时产生;并且使用第二半像素集合产生第二四分之一像素集合,该第二四分之一像素集合在产生第三半像素集合的同时产生。
6.按权利要求5所述的方法,其中产生半像素和四分之一像素的步骤包括使用多个加法器和多个移位器而不使用任何乘法器来产生半像素和四分之一像素。
7.按权利要求1所述的方法,其中;视频信息包含16×16宏块;并且执行子像素内插的步骤包括同时产生十七个半像素和四十八个四分之一像素,其中每个全像素产生三个半像素和十二个四分之一像素。
8.一种子像素内插器,包括输入存储器,可存储包含全像素的视频信息;至少一个内插单元,可执行子像素内插以并行地产生半像素和四分之一像素,其中多个半像素和多个四分之一像素在子像素内插期间同时产生;和输出存储器,可存储全像素、半像素和四分之一像素中的至少一些。
9.按权利要求8所述的子像素内插器,其中至少一个内插单元包括水平半像素内插单元,可使用全像素中的至少一些来产生水平半像素,每个水平半像素水平地位于两个全像素之间;第一垂直半像素内插单元,可使用全像素中的至少一些来产生第一垂直半像素,每个第一垂直半像素垂直地位于两个全像素之间;第二垂直半像素内插单元,可使用水平半像素中的至少一些来产生第二垂直半像素,每个第二垂直半像素垂直地位于两个水平半像素之间;和四分之一像素内插单元,可使用全像素和半像素中的至少一些来产生四分之一像素,每个四分之一像素水平地、垂直地或对角地位于一个全像素和一个半像素之间或两个半像素之间。
10.按权利要求9所述的子像素内插器,其中每个内插单元包括多个内插器,每个内插器包括多个输入寄存器,可存储多个像素值;和多个加法器和一个或多个移位器,形成多级流水线,可处理存储在输入寄存器中的多个像素值。
11.按权利要求10所述的子像素内插器,其中多个加法器和一个或多个移位器可产生半像素,该半像素由以下公式定义半象素=(A-5B+20C+20D-5E+F+16)/32其中A、B、C、D、E和F表示存储在输入寄存器中的多个像素值。
12.按权利要求10所述的子像素内插器,其中多个加法器和一个或多个移位器可产生四分之一像素,该四分之一像素由以下公式定义四分之一象素=(A+B+1)/2其中A和B表示存储在输入寄存器中的多个像素值。
13.按权利要求9所述的子像素内插器,还包括寄存器组,可存储来自输入存储器的全像素的子集,该寄存器组还可提供全像素中的至少一些给水平半像素内插单元,以及提供全像素中的至少一些给第二垂直半像素内插单元。
14.按权利要求13所述的子像素内插器,还包括中间存储器,可接收来自寄存器组的全像素和来自半像素内插单元的半像素,该中间存储器还可提供全像素和半像素给四分之一像素内插单元。
15.按权利要求14所述的子像素内插器,其中输入存储器包括缓冲器,其可存储全像素的16×16宏块;寄存器组包括9×6的寄存器组;水平半像素内插单元包括九个半像素内插器;第一垂直像素内插单元包括四个半像素内插器;第二垂直像素内插单元包括四个半像素内插器;四分之一像素内插单元包括四十八个四分之一像素内插器;中间存储器包括缓冲器;并且输出存储器包括缓冲器,其可存储全像素、半像素和四分之一像素的64×64块。
16.一种系统,包括包含全像素的视频信息的源;和子像素内插器,其包括输入存储器,可存储全像素;至少一个内插单元,可执行子像素内插以并行地产生半像素和四分之一像素,其中多个半像素和多个四分之一像素在子像素内插期间同时产生;和输出存储器,可存储全像素、半像素和四分之一像素中的至少一些。
17.按权利要求16所述的系统,其中至少一个内插单元包括水平半像素内插单元,可使用全像素中的至少一些来产生水平半像素,每个水平半像素水平地位于两个全像素之间;第一垂直半像素内插单元,可使用全像素中的至少一些来产生第一垂直半像素,每个第一垂直半像素垂直地位于两个全像素之间;第二垂直半像素内插单元,可使用水平半像素中的至少一些来产生第二垂直半像素,每个第二垂直半像素垂直地位于两个水平半像素之间;和四分之一像素内插单元,可使用全像素和半像素中的至少一些来产生四分之一像素,每个四分之一像素水平地、垂直地或对角地位于一个全像素和一个半像素之间或两个半像素之间。
18.按权利要求17所述的系统,其中每个内插单元包括多个内插器,每个内插器包括多个输入寄存器,可存储多个像素值;和多个加法器和一个或多个移位器,形成多级流水线,可处理存储在输入寄存器中的多个像素值。
19.按权利要求17所述的系统,其中子像素内插器还包括寄存器组,可存储来自输入存储器的全像素的子集,该寄存器组还可提供全像素中的至少一些给水平半像素内插单元,以及提供全像素中的至少一些给第二垂直半像素内插单元。
20.按权利要求16所述的系统,其中视频信息的源包含解块过滤器,该解块过滤器在视频编码器和视频解码器中的一个里;并且视频编码器或视频解码器还包括逆量化/变换单元,可接收量化的离散余弦变换(DCT)系数,并且使用该DCT系数执行逆量化和逆DCT变换功能以产生第一信号;合并器,可合并第一信号和第二信号以产生包含全像素的视频信息,并且提供该视频信息给解块过滤器;和运动补偿器,可接收运动矢量与半像素和四分之一像素,该运动补偿器还可产生第二信号。
全文摘要
一种子像素内插器包括可存储由全像素形成的视频信息的输入存储器。该子像素内插器还包括至少一个可执行子像素内插以并行地产生半像素和四分之一像素的内插单元。多个半像素和多个四分之一像素在子像素内插期间同时产生。另外,该子像素内插器包括可存储全像素、半像素和四分之一像素中的至少一些的输出存储器。在一些实施方式中,至少一个内插单元包括水平半像素内插单元、两个垂直半像素内插单元和四分之一像素内插单元,所有这些单元可以并行地操作。在特定的实施方式中,该内插单元由加法器和移位器形成,而且不包括任何乘法器。
文档编号G06T3/40GK1835585SQ20051012176
公开日2006年9月20日 申请日期2005年12月21日 优先权日2004年12月21日
发明者菲利普·P.·党 申请人:St微电子公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1