使用多个处理器编码视频帧的方法和系统的制作方法

文档序号:7884719
专利名称:使用多个处理器编码视频帧的方法和系统的制作方法
技术领域
本发明涉及一种用于编码视频帧的方法和系统。
背景技术
传统的视频编码系统利用多种技术来减少必须使用其可用带宽通过通信信道而传输的信息量。这些技术力图在不使所解码和显示的视频产生令人无法接受的降级的情况下减少使用其可用带宽通过通信信道而传输的信息量。为了减少使用其可用带宽通过通信信道而传输的信息量而同时避免使输出视频降级至令人无法接受的水平,这些技术利用连续视频帧之间的时间冗余。用于减少必须使用其可用带宽通过通信信道而传输的信息量的一种示例性技术被称作块匹配。传统的块匹配算法力求将传入(即当前)视频帧中的像素块识别为对应于(即匹配)先前存储的参考视频帧中的像素块。需理解的是,一个块可以是例如一个像素、像素的集合、(具有固定或可变的大小的)像素区域或大体上为视频帧的任何一部分。如本领域技术人员所认知的那样,用于执行块匹配的算法包括例如均方误差(MSE)、平均绝对差(MAD)和绝对误差和(SAD)等。识别连续视频帧之间的匹配块使得可以应用被称为运动估计的额外带宽节约技术。运动估计是这样一种技术:其将当前视频帧中的像素块与先前存储的参考视频帧中的相应像素块进行比较,从而确定在参考视频帧中当前帧中的像素块已从其位置移开多远。运动估计涉及一组运动向量的计算。该组运动向量中的每一个运动向量都代表当前视频帧中的特定像素块相对于所存储的参考视频帧中的相应像素块的位移。通过传输给定像素块的运动向量数据而非传输像素块中每个像素的完整像素数据,可节约带宽。这是因为运动向量数据大体上小于给定像素块的像素数据的事实。影响带宽和编码速度的相关问题是编码系统的物理架构。例如,在多种传统编码系统中,在同一处理器(如中央处理单元(CPU))上执行块匹配和运动估计。然而,运动估计被认作是在视频编码中执行的最计算密集型的操作。例如,当按照H.264/AVC(高级视频编码)标准执行视频编码时,运动估计计算占总编码时间的高达70%。因此,通常不希望在单个处理器上执行所有的编码压缩技术,这是因为这样做会限制处理器同时执行与视频编码无关的其它操作的能力。因此,现有的技术已将某些编码计算卸载至其它处理器。例如,一些现有的编码系统在图形处理单元(GPU)而不是CPU上执行运动估计。通过将运动估计卸载至另一个处理器(如GPU),主处理器(例如CPU)被释放以执行其它操作。虽然这种设计释放了主处理器,但它仍然有许多缺点。例如,在处理器之间对编码计算进行分割会在第一处理器(例如:CPU)和第二处理器(例如:GPU)之间沿通信信道(例如:数据总线)造成数据瓶颈。基于第二处理器无法在数据传入时尽快地处理传入数据的事实,因此会造成该数据瓶颈。因此,被发送至第二处理器以进行处理的数据必须排在队列中直到第二处理器能够处理该数据为止。而现有编码系统将所有像素块的像素数据都发送至GPU的事实则加剧了该问题。这种用于编码视频帧的技术充满了与计算复杂性和处理速度相关的低效。其它编码方法力求通过将二次抽样的像素数据从第一处理器发送至第二处理器而减少两个处理器之间的存储器流量。例如,被称为色度二次抽样的一种编码方法力求通过对色度信息实现比对亮度信息更低的分辨率(即,对色度信息进行“二次抽样”)而减少处理器之间的存储器流量。然而,这样的技术往往降低例如由第二处理器执行的运动估计的准确性。这是因为在对编码数据进行二次抽样时在确定运动估计中有较少的信息(例如:较少的色度信息)供考虑。相应地,需要一种用于编码视频帧的改进的方法和系统,其可在降低视频编码计算的复杂性的同时减少执行视频编码所花费的时间。附图简述在参考下列附图时可以更容易地理解下列说明,图中类似的参考数字代表类似的元件,其中:

图1为大致描绘出根据本发明一个实例所述的使用多个处理器编解码视频帧的系统的框图。图2为说明使用多个处理器编码视频帧的方法的一个实例的流程图。图3为大致描绘出根据本发明一个实例所述的用于编码视频帧的编码器的方块图。图4为说明使用多个处理器编码视频帧的方法的另一个实例的流程图。
具体实施例方式本发明提供了使用多个处理器编码视频帧的方法和系统。在一个实例中,公开了一种使用多个处理器编码视频帧的方法。在这个实例中,该方法包括由第一处理器提供当前帧中多个非静止像素的位置。当前帧中多个非静止像素的位置是通过将当前帧中的像素数据与前一帧中的相应像素数据进行比较而提供的,以便供第二处理器使用。第一处理器还提供大体上仅描述当前帧中的非静止像素的像素数据以供第二处理器使用。第二处理器基于非静止像素的位置信息以及大体上仅描述非静止像素的像素数据计算多个非静止像素的运动向量数据。第一处理器使用来自第二处理器的多个非静止像素的运动向量数据来编码当前帧。在上述方法的一个实例中,第一处理器响应于确定多个非静止像素的运动向量数据超过预定值而生成误差检测数据。在另一个实例中,第一处理器响应于所生成的误差检测数据而指示新的参考帧可用于计算运动向量数据。在一个实例中,通过确定在参考帧和当前帧之间的多个非静止像素的平移移位而计算运动向量数据。在另一个实例中,参考帧既包括描述当前帧中的非静止像素的像素数据也包括描述当前帧中的静止像素的像素数据。在另一个实例中,前一帧为参考帧。在另一个实例中,大体上仅描述当前帧中的非静止像素的像素数据包括仅描述当前帧中的非静止像素的像素数据。本发明还提供一种用于使用多个处理器编解码视频帧的系统。在一个实例中,该系统包括具有多个处理器的视频编码器。在这个实例中,编码器具有第一处理器,其可操作来通过将当前帧中的像素数据与前一帧中的相应像素数据进行比较而提供当前帧中的多个非静止像素的位置以供第二处理器使用。第一处理器还可操作来提供大体上仅描述当前帧中的非静止像素的像素数据以供第二处理器使用。第二处理器可操作地连接至第一处理器,且第二处理器可操作来基于非静止像素的位置信息以及大体上仅描述非静止像素的像素数据计算多个非静止像素的运动向量数据。第一处理器还可操作来使用来自第二处理器的多个非静止像素的运动向量数据来编码当前帧。在这个实例中,该系统还包括解码器,其可操作地连接至第一处理器且可操作来解码所编码的当前帧,从而提供解码的当前帧。在一个实例中,第一处理器包括误差检测模块,其可操作来响应于确定多个非静止像素的运动向量数据超过预定值而生成误差检测数据。在另一个实例中,第一处理器包括帧生成模块,其可操作来响应于接收到误差检测数据而指示新的参考帧可用于计算运动向量数据。在另一个实例中,第二处理器包括运动估计模块,其可操作来确定在参考帧和当前帧之间的多个非静止像素的平移移位,以便计算运动向量数据。在另一个实例中,第一处理器包括非静止像素检测模块,其可操作来确定当前帧中的多个非静止像素的位置并提供与当前帧相应的非静止像素位置信息以供第二处理器使用,以及提供大体上仅描述当前帧中的非静止像素的像素数据以供第二处理器使用。所公开的方法和系统尤其提供了加速的视频编码(包括运动估计)的优势。通过在多个处理器间对编码处理进行分割并减少在处理器间发送的像素数据量而实现了加速。为此,所公开的方法和系统还对由在处理器间传递编码处理操作而造成的等待时间加以改进。本领域的普通技术人员将认识到其它优势。下面实施例的描述在本质上仅仅为示例性的,且绝不旨在限制本发明公开、其应用或使用。图1为用于使用多个处理器编解码视频帧的系统100的一个实例的图示。系统100可存在于一个或多个电子装置中。例如,系统100的视频编码器102部分可存在于一个电子装置中,而视频解码器120则可存在于不同的电子装置中。或者,视频编码器102和解码器120可存在于同一电子装置中。视频编码器102和解码器120仅需彼此可操作地连接,例如,通过直接物理连接(例如:总线)或经由一个或多个通信网络(例如:互联网、蜂窝网络等)的无线连接。例如,视频编码器102/解码器120可存在于例如下列电子装置中:图像捕获装置(例如:照相机或摄像机,其具有或不具有经集成显示装置的录制的视频播放)、个人计算机(例如:台式或膝上型计算机)、联网的计算装置(例如:服务器计算机等,其中每个单独的计算装置实现系统100的一个或多个功能)、个人数字助理(PDA)、蜂窝电话、平板
计算机(例如:Apple"' iPad")或任何其它适用于执行视频编码和/或解码的电子装置。系统100包括用于编码未编码的当前(即传入的)视频帧108的视频编码器102。例如,未编码的视频帧108为原始的(即未压缩的)视频帧,其含有描述帧中每个像素的像素数据。如本领域所知的那样,像素数据可包括例如帧中每个像素的一个亮度值和两个色度值(例如:YCbCr值、YUV值、YPbPr值、Y1UV等)。此外,像素数据可包括帧中每个像素的坐标值,例如表示帧中每个像素位置的X、y和z坐标值。另外,如本文所使用的,帧可包括任意数量的场。例如,单个帧可包括描述帧图像中奇数编号的水平行的“顶场”以及描述帧图像中偶数编号的水平行的“底场”,如本领域技术人员所认识的那样。编码器102包括第一处理器104,其可操作地连接至第二处理器106。处理器104和106可包括微处理器、微控制器、数字信号处理器或其组合,其按照存储于存储组件中的可执行指令的控制而运行。在一个实例中,第一处理器104为中央处理单元(CPU)。在一个实例中,第二处理器为图形处理单元(GPU)。在另一个实例中,第二处理器为通用的GPU(GPGPU)。第一和第二处理器104和106可作为单个管芯上的单独核心或作为单独管芯上的单独核心存在。不论怎样的特定实现,本发明并不限于这些具体的实例且考虑使用能够执行所述功能的任何处理器104和106。系统100还包括解码器120,其可操作地连接至第一处理器104。如上所述,解码器120和第一处理器104可通过任何合适的物理或无线连接可操作地连接。图2为说明使用多个处理器编码视频帧的方法的一个实例的流程图。图2所示方法可通过例如图1所示系统100来执行。相应地,将参考系统100中的元件讨论该方法。在步骤200中,第一处理器104通过将当前帧108中的像素数据与前一帧中的相应像素数据进行比较而提供当前帧108中多个非静止像素的位置以供第二处理器106使用。在一个实例中,第一处理器104可操作来在将位置信息提供给第二处理器106前确定当前帧108中多个非静止像素的位置。然而,应理解的是,也可使用其它合适的逻辑同样完成该确定。例如,可通过如绝对误差和(SAD)的块匹配算法来完成当前视频帧中多个非静止像素的位置的确定。如SAD的块匹配算法通常将当前视频帧108分成宏块。每个宏块可包括任意数量的像素。例如,16X16的宏块可包括256个像素(即,每行有16个像素,且有16行)。每个宏块可被进一步分成子块,如4个8X8的子块。为了确定当前视频帧108中多个非静止像素的位置,块匹配算法将当前视频帧108中的像素数据与前一视频帧中的相应像素数据进行比较。该比较可基于多个像素(例如:宏块)而完成。也就是说,该算法可将当前视频帧108中的像素宏块与前一视频帧中的相应像素宏块进行比较,而不是将当前视频帧108中描述单个像素的像素数据与前一视频帧中描述相应像素的像素数据进行比较。在宏块到宏块的基础而非像素到像素的基础上进行比较可极大地降低计算成本,而不会显著地影响到准确性。在将来自当前视频帧108的宏块与来自前一视频帧的相应宏块进行比较时,如果确定这两个宏块相同,则确定当前视频帧108中的宏块为静止宏块(即,包括多个静止像素的宏块)。然而,如果当前视频帧108中的宏块不同于前一视频帧中的相应宏块,则确定当前视频帧108中的宏块为非静止宏块(即,包括多个非静止像素的宏块)。可通过从被分配给前一视频帧中相应宏块的值减去被分配至当前视频帧108中宏块的值来执行该比较。例如,这些值可代表组成当前视频帧108中的宏块的像素的亮度值以及组成前一视频帧中的宏块的像素的亮度值。此外,可将量化值(“Q”)引入该比较。量化值影响当前视频帧108中的宏块被识别为静止宏块或非静止宏块的可能性。例如,为了识别非静止宏块,本发明考虑采用现有的全零量化系数块的检测概念来定义静止宏块。例如,该过程可开始于检查16X16宏块的8X8子块中的系数是否在量化过程后会变为零。例如,可对组成给定的8X8子块的像素应用下列公式:
权利要求
1.一种使用多个处理器编码视频帧的方法,其包括: 由第一处理器通过将当前帧中的像素数据与前一帧中的相应像素数据进行比较而提供所述当前帧中多个非静止像素的位置以供第二处理器使用; 由所述第一处理器提供大体上仅描述所述当前帧中的非静止像素的像素数据以供所述第二处理器使用; 由所述第二处理器基于所述非静止像素的位置信息以及所述大体上仅描述非静止像素的像素数据计算所述多个非静止像素的运动向量数据;以及 由所述第一处理器使用来自所述第二处理器的所述多个非静止像素的所述运动向量数据来编码所述当前帧。
2.根据权利要求1所述的方法,其还包括: 由所述第一处理器响应于确定所述多个非静止像素的所述运动向量数据超过预定值而生成误差检测数据。
3.根据权利要求2所述的方法,其还包括: 响应于所生成的误差检测数据,由所述第一处理器指示新的参考帧可用于计算所述运动向量数据。
4.根据权利要求1所述的方法,其中计算运动向量数据包括确定在参考帧和所述当前帧之间的所述多个非静止像素的平移移位。
5.根据权利要求4所述的方法,其中所述参考帧既包括描述所述当前帧中的非静止像素的像素数据也包括描述所述当前帧中的静止像素的像素数据。
6.根据权利要求5所述的方法,其中所述前一帧包括所述参考帧。
7.根据权利要求1所述的方法,其中所述大体上仅描述所述当前帧中的非静止像素的像素数据包括仅描述所述当前帧中的非静止像素的像素数据。
8.一种用于编码视频帧的视频编码器,其包括: 第一处理器,其可操作来: 通过将当前帧中的像素数据与前一帧中的相应像素数据进行比较而提供所述当前帧中的多个非静止像素的位置以供第二处理器使用;以及 提供大体上仅描述所述当前帧中的非静止像素的像素数据以供所述第二处理器使用; 所述第二处理器,其可操作地连接至所述第一处理器,所述第二处理器可操作来基于所述非静止像素的位置信息以及所述大体上仅描述非静止像素的像素数据计算所述多个非静止像素的运动向量数据;并且 其中所述第一处理器还可操作来使用来自所述第二处理器的所述多个非静止像素的所述运动向量数据来编码所述当前帧。
9.根据权利要求8所述的视频编码器,其中所述第一处理器包括: 误差检测模块,其可操作来响应于确定所述多个非静止像素的所述运动向量数据超过预定值而生成误差检测数据。
10.根据权利要求9所述的视频编码器,其中所述第一处理器包括: 帧生成模块,其可操作 来响应于接收到误差检测数据而指示新的参考帧可用于计算所述运动向量数据。
11.根据权利要求8所述的视频编码器,其中所述第二处理器包括: 运动估计模块,其可操作来确定在参考帧和所述当前帧之间的所述多个非静止像素的平移移位,以便计算运动向量数据。
12.根据权利要求11所述的视频编码器,其中所述参考帧既包括描述所述当前帧中的非静止像素的像素数据也包括描述所述当前帧中的静止像素的像素数据。
13.根据权利要求12所述的视频编码器,其中所述前一帧包括所述参考帧。
14.根据权利要求8所述的视频编码器,其中所述第一处理器包括: 非静止像素检测模块,其可操作来确定所述当前帧中的所述多个非静止像素的所述位置并提供与所述当前帧相应的非静止像素位置信息以供所述第二处理器使用以及提供大体上仅描述所述当前帧中的非静 止像素的像素数据以供所述第二处理器使用。
15.一种用于使用多个处理器编解码视频帧的系统,其包括: 第一处理器,其可操作来: 通过将当前帧中的像素数据与前一帧中的相应像素数据进行比较而提供所述当前帧中的多个非静止像素的位置以供第二处理器使用;以及 提供大体上仅描述所述当前帧中的非静止像素的像素数据以供所述第二处理器使用; 所述第二处理器,其可操作地连接至所述第一处理器,所述第二处理器可操作来基于所述非静止像素的位置信息以及所述大体上仅描述非静止像素的像素数据计算所述多个非静止像素的运动向量数据; 其中所述第一处理器还可操作来使用来自所述第二处理器的所述多个非静止像素的所述运动向量数据来编码所述当前帧;以及 解码器,其可操作地连接至所述第一处理器,所述解码器可操作来解码所编码的当前帧以提供解码的当前帧。
16.根据权利要求15所述的系统,其中所述第一处理器包括: 误差检测模块,其可操作来响应于确定所述多个非静止像素的所述运动向量数据超过预定值而生成误差检测数据。
17.根据权利要求16所述的系统,其中所述第一处理器包括: 帧生成模块,其可操作来响应于接收到误差检测数据而指示新的参考帧可用于计算所述运动向量数据。
18.根据权利要求15所述的系统,其中所述第二处理器包括: 运动估计模块,其可操作来确定在参考帧和所述当前帧之间的所述多个非静止像素的平移移位,以便计算运动向量数据。
19.根据权利要求18所述的系统,其中所述参考帧既包括描述所述当前帧中的非静止像素的像素数据也包括描述所述当前帧中的静止像素的像素数据。
20.根据权利要求19所述的系统,其中所述前一帧包括所述参考帧。
21.一种用于使用多个处理器编码视频帧的处理器,所述处理器可操作来: 通过将当前帧中的像素数据与前一帧中的相应像素数据进行比较而提供所述当前帧中的多个非静止像素的位置以供第二处理器使用; 提供大体上仅描述所述当前帧中的非静止像素的像素数据以供所述第二处理器使用;以及 使用运动向量数据编码所述当前帧,其中所述运动向量数据是由所述第二处理器针对所述多个非静止像素而基于所述非静止像素的位置信息以及所述大体上仅描述非静止像素的像素数据所计算出 的。
全文摘要
本发明提供了使用多个处理器编码视频帧的方法和系统。在一个实例中,第一处理器通过将当前帧中的像素数据与前一帧中的相应像素数据进行比较而提供所述当前帧中多个非静止像素的位置以供第二处理器使用。所述第一处理器还提供大体上仅描述当前帧中的非静止像素的像素数据以供所述第二处理器使用。所述第二处理器基于非静止像素的位置信息以及大体上仅描述非静止像素的像素数据计算所述多个非静止像素的运动向量数据。所述第一处理器使用来自所述第二处理器的所述多个非静止像素的所述运动向量数据来编码所述当前帧。
文档编号H04N7/36GK103081466SQ201180040368
公开日2013年5月1日 申请日期2011年7月21日 优先权日2010年7月28日
发明者威廉·许 申请人:超威半导体公司
再多了解一些
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1