基于用户输入来增强运动估计的设备和方法

文档序号:7781226阅读:177来源:国知局
基于用户输入来增强运动估计的设备和方法
【专利摘要】本发明提供一种基于用户输入来增强运动估计的方法和设备。用于视频编码的运动估计设备包括可用于接收基于用户的输入的接收器以及可用于分析基于用户的输入的输入分析模块。该设备还包括一个编码器,所述编码器可用于从已分析的基于用户的输入中为视频流目标帧中的当前块计算位移坐标,并且可用于使用该位移坐标来确定参考帧中的搜索区域以用于搜索与当前块对应的最佳匹配块。所述编码器还可以包括一个可用于在参考帧的搜索区域中使用块匹配过程来确定当前块的最佳匹配块的块匹配模块。
【专利说明】基于用户输入来增强运动估计的设备和方法
【技术领域】
[0001]根据本发明的实施例主要涉及视频编码技术,尤其涉及在视频编码中使用的运动估计。
【背景技术】
[0002]采用原始未压缩形式的数字视频会占用大量的存储空间和带宽。而视频编码或视频压缩则是用于压缩(编码)和解压缩(解码)视频的处理。通过视频压缩,所传送或存储的可以是采用了较小的压缩形式的数字视频。现今,包括MPEG-2、MEPG-4以及H.264在内的众多视频压缩标准在本领域都是众所周知的,并且这些视频压缩标准提供了有效的视频数据压缩方法。
[0003]这些标准使用了包括帧间预测在内的多种压缩技术。帧间预测(或帧间编码)基于这样一个前提,那就是在大多数的视频场景中,在前景发生活动的时候背景将会保持相对稳定。由此,视频图像在短时间内的变化往往是很小的。正因如此,在图像流中有很大一部分的视频信息是可以预测并且由此是冗余的。相应地,帧间预测技术的主要目标是移除包含了一个或多个相邻帧的视频流中的冗余信息,并且只保留真实或无法预测的信息。由此,帧间预测利用了相邻帧之间的时间冗余性来获取较高的压缩率。
[0004]于是,不同于存储每一个视频帧的单独完整的图像,大多数的视频压缩标准都会使用帧间预测,其中包括提供一个或多个参考帧,以及通过注释参考帧如何变化来构造大多数的帧。举例来说,在一些较流行的视频压缩标准中,在序列的开端会对单个完整图像进行编码;这个完整的图像被描述成是帧内编码帧(I帧)。所述I帧是一个参考帧。它是在未参考其他帧的情况下压缩的,并且由此包含了整帧的视频信息。这样一来,它可以在没有任何附加信息的情况下被解码。在大多数的视频压缩标准中还使用了其他两种帧间编码帧:P帧和B帧。
[0005]预测帧(或P帧)通常是参考过去的帧(I帧或前一个P帧)编码的,并且通常会被用作后续P帧的参考。与P帧相比,B帧提供了更高的压缩率,但其需要过去和未来的参考中贞来进行编码。
[0006]通常,I帧必须要被周期性地传送,以使解码器可以同步到视频流,否则将无法获取参考图像。由于参考I帧之间的图像通常只有很小程度的变化,因此,捕获、压缩和存储的仅仅是P帧和B帧形式的图像差。视频压缩技术性能的好坏在很大程度上取决于其关于这些差的估计的精度。
[0007]当视频帧流包含运动对象时,该估计还需要包含运动补偿。为此目的,每一个帧间编码帧都被划分成块,这些块即为通常所说的宏块。通常,每一个帧都可以被细分成16x16的块或8x8的块,但是,不同的编码技术会使用不同的块划分技术。宏块则是图像像素的区域。
[0008]在常规系统中,与直接编码每个块的原始像素值不同,编码器会尝试寻找与其在先前被编码的帧上编码的块相类似的块,并且这个先前编码的帧通常是参考帧。这个处理是通过块匹配过程来完成的,其中由于块匹配过程的一致性和简易性使其相当适合由硬件实施,因此,该过程是常规系统中最常用到的运动补偿估计技术。如果编码器查找到匹配,那么所述块可以用一个指向参考帧上的匹配块的矢量来编码,该矢量即为通常所说的运动矢量。相应地,运动矢量仅仅是对象在连续视频帧之间的位移的量度,并且所述运动矢量被作为压缩方案的一部分来传输,以便在解码压缩视频帧的过程中被使用。
[0009]用于确定运动矢量的处理被称为运动估计。而通过将运动矢量应用于图像来将变换合成到下一个图像的处理则被称为运动补偿。所述运动估计与运动补偿的组合是众多知名的视频压缩协议的一个主要部分。
[0010]在大多数情况中,编码器会在参考帧上成功地查找到匹配。然而,被找到的块不太可能与其编码的块精确匹配,结果,编码器将会计算两个块之间的差。这些差即为通常所说的预测误差,并且它们会与运动矢量一起变换并被发送至解码器。解码器则会同时使用指向匹配块的运动矢量以及预测误差来恢复原始的块。
[0011]图1示出的是如何实施现有技术中的帧间预测处理。与编码目标帧360中的宏块390的原始像素值不同,编码器会在参考帧350中使用块匹配过程来尝试查找与之类似的块。当在参考帧350中发现了宏块380并将其标识为最佳匹配之后,编码器会在假设宏块390内部的所有像素都具有相同运动活动性的情况下为所述宏块产生一个运动矢量310。参考帧中的块380是通过一个以相对于来自目标帧360的块的最佳匹配选择判据为基础的搜索而被识别的。所述最佳匹配选择判据通常被设计成确保最小的估计差(或预测误差)。
[0012]然后,编码器将会计算宏块380与宏块390之间的差,并且会将计算得到的预测误差连同计算得到的运动矢量310—起传送到解码器330。于是,通过同时使用预测误差以及计算得到的运动矢量,解码器可以恢复宏块390。
[0013]常规的系统使用了多种块匹配过程来寻找产生在来自目标帧360的块390与从参考帧350内部的搜索区域中定位的块380之间最小预测误差的最佳匹配。最有效但也是效率最低且计算成本最高的搜索是完全穷举式搜索,其中处于参考帧搜索区域内的每个块都会被检查,并且将会进行相应的计算。用于完整搜索的匹配选择判据可以是绝对差和(SAD),但是包括平均绝对差、均方差等等的其他匹配选择判据也是可以使用的。
[0014]为了减少低效性及处理努力和时间,人们开发了其他搜索技术,其实例包括交叉搜索,螺旋搜索,三步搜索,四步搜索,正交搜索,分级搜索以及菱形搜索。这些过程尝试的是在不花费过多时间和计算量的情况下达到穷举搜索的质量。然而,所有此类高速运动估计方法全都存在某些缺陷。
[0015]常规运动估计方法的一个缺陷在于:这些技术使用的是块匹配过程,而块匹配过程会在参考帧中与所要编码的块(当前块)在相应目标帧中保持的位置相同的位置开始搜索最佳匹配块。此外,一些过程会在搜索参考帧内部的当前块的过程中引入与相邻的块对应的位置。然而,对在短时间内会在视频帧中进行大量变换的实时编码而言,如果耗费宝贵的计算时间在参考帧内与当前块在目标帧中保持的位置相同的位置周围搜索当前块,那么编码器有可能无法及时找到最佳匹配块。

【发明内容】

[0016]随着云计算,远程桌面计算和无线显示传输,以及其他那些需要基于因特网或内部网上的用户输入进行屏幕显示实时更新的应用的出现,由于这些应用需要传输快速变化的高度复杂的视频图像,因此需要更为有效且复杂度较低的压缩过程。例如,对于彼此通过局域网或因特网来运行渲染三维图形的视频游戏的用户而言,这些用户需要将用户输入传输到应用服务器,以及将由此产生的视频图像从应用服务器实时地下行传输到用户终端。如果使用常规的编码技术,那么用于在此类应用中编码大量视频数据的处理将会需要大量时间。
[0017]相应地,有必要开发一种可以解决上述系统存在的问题的更健壮的最佳匹配块查找技术。通过使用所描述的系统的有益方面,以及在没有其相应限制的情况下,本发明的实施例提供了 一种用于解决这些问题的新颖的解决方案。
[0018]本发明的实施例提供了在使用用户输入作为提示的实时视频编码过程中,通过使用最佳匹配块查找技术来更有效率地执行运动估计的方法和系统。更具体地说,本发明的实施例使用了用户输入作为提示来查找参考帧中的最佳匹配块,由此,该过程不需要在参考帧中与当前帧在目标块中的位置相同的位置或是所述位置的附近开始进行所述搜索。
[0019]在一个实施例中,所提供的是一种基于用户输入来增强运动估计的设备。所述用于视频编码的运动估计设备包括可用于接收基于用户的输入的接收器,以及可用于分析基于用户的输入的输入分析模块。该设备还包括一个编码器,所述编码器可操作为从所分析的基于用户的输入中计算出当前块在视频流目标帧中的位移坐标,并且可操作为使用该位移坐标来确定参考帧中的搜索区域,从而搜索当前块的最佳匹配。此外,该编码器还可以包括块匹配模块,其可操作为在参考帧的搜索区域中使用块匹配过程来查找当前块的最佳匹配块。
[0020]在另一个实施例中,所提供的是一种视频编码过程中的运动估计方法。该方法包括:接收和分析基于用户的输入。更进一步,该方法包括:从所分析的基于用户的输入中计算当前块在视频流目标帧中的位移坐标。接下来,该方法包括:使用位移坐标来确定参考帧中的搜索区域,以寻找与当前块对应的最佳匹配块。该方法还可以包括:在参考帧的搜索区域中,通过使用块匹配过程来查找当前块的最佳匹配块。
[0021]在一个实施例中,所提供的是一个包含中央处理单元以及与CPU耦连的图形处理系统的计算机系统。该图形处理系统包括一个图形处理单元(GPU),所述GPU可以用作可供并行运行的多个应用同时使用的多个虚拟GPU。该系统还还包括一个可用于发送和接收数据的通信接口,以及一个与图形处理系统耦连并且存储了指令的存储器,其中如果计算机系统运行指令,那么所述指令将会促使计算机系统执行以下操作,包括:(a)经由通信接口来访问从独立的第一客户机设备接收的第一用户输入,其中所述第一用户输入与多个应用中的第一应用相关联,(b)基于对所述第一用户输入所做的分析,产生当前块在与第一应用相对应的视频流的目标帧中的位移坐标;(c)基于所述位移坐标,确定目标帧中的多个块在参考帧中的相应搜索区域;以及(d)在参考帧的相应搜索区域中,通过使用块匹配过程来确定所述多个块的最佳匹配块。
【专利附图】

【附图说明】
[0022]以下的详细描述连同附图一起提供了对于本发明的特征和优点的更好的理解。
[0023]在附图中举例示出了本发明的实施例,但这并不是为了进行限制,其中相同的参考数字指的是相似的部件。
[0024]图1示出的是实施巾贞间预测的例示现有技术。
[0025]图2是可以实施本发明实施例的服务器计算机系统的一个示例的框图。
[0026]图3是可以实施本发明的实施例的例示终端用户或客户机设备。
[0027]图4是根据本发明实施例的可以将客户机系统和服务器耦连至网络的网络架构示例的框图。
[0028]图5示出的是可以实施本发明实施例的图形系统的一个示例。
[0029]图6是示出了根据本发明的实施例中的从客户机设备到服务器设备的数据流的框图。
[0030]图7是根据本发明实施例的用于在参考帧中查找最佳匹配块的计算机实施方法示例的流程图。
[0031]图8是示出了根据本发明实施例来确定宏块在目标帧中的位移矢量的例示方法的简化图示。
[0032]在附图中,附图标记相同的部件具有相同或相似的功能。
【具体实施方式】
[0033]现在将详细参考在附图中举例示出的本发明的不同实施例。虽然是结合实施例描述的,但是应该理解,这并不意味着将本公开局限于这些实施例。与此相反,本公开旨在覆盖包含在附加权利要求所定义的本公开的实质和范围以内的替换物、修改以及等价物。
[0034]此外,在以下关于本公开的详细描述中将会阐述众多的具体细节,以便提供关于本公开的全面理解。然而应该理解,本公开是可以在没有这些具体细节的情况下实施的。在其他实例中,众所周知的方法、过程、组件和电路未被描述,以免不必要地与本公开的方面相混淆。
[0035]以下的详细描述中的一些部分是依照处理或方法给出并论述的。虽然在这里描述方法操作的附图(例如图7)中描述了步骤及其顺序,但是此类步骤和顺序是例示性的。这里的实施例同样适合执行以与这里描绘和描述的顺序不同的顺序来执行在这里的流程图中述及的各种其他步骤或步骤的变体。
[0036]以下详细描述中的一些部分是依照过程、逻辑块、处理以及关于计算机存储器内部的数据比特操作的其他符号表示给出的。这些描述和表示是数据处理领域的技术人员用以最有效地将其工作实质传达给本领域其他技术人员的手段。在本申请中,过程、逻辑块、处理等等被设想成是导致产生预期结果的自相容的步骤或指令序列。这些步骤使用了对于物理参量的物理操作。这些参量通常会采用能在计算机系统中被存储、传送、组合、比较以及以其他方式操纵的电或磁信号的形式,但这并不是必需的。主要是出于通用的原因,有时会将这些信号称为事务、比特、值、元素、符号、字符、采样、像素等等,而这已被证实是非常方便的。
[0037]然而,应该牢记的是,所有这些及类似的项都是与恰当的物理参量相关联的,并且仅仅是应用于这些参量的便利标签。除非采用了可以从以下描述中清楚看出的其他方式特别说明,否则应该了解,在本公开中,使用了诸如“分配”、“关联”、“移动”、“拷贝”、“设置”、“访问”、“控制”、“计算”、“添加”、“记录”、“确定”、“识别”、“缓存”、“保持”、“递增”、“比较”、“移除”、“生成”、“读取”、“写入”、“传送”、“接收”等术语的论述指的是由计算机系统(例如图7的流程图700)或类似计算设备或处理器(例如图1的系统100)执行的行为或处理。计算系统或类似电子计算设备在计算机系统存储器、寄存器、或其他此类信息存储、传输或显示设备内部操作和变换被表示成物理(电子)参量的数据。
[0038]这里描述的实施例可以在由一个或多个计算机或其他设备运行的计算机可执行指令的通用上下文中被论述,其中所述计算机可执行指令驻留在某种形式的计算机可读存储介质上,例如程序模块。作为示例而不是限制,计算机可读存储媒体可以包括非临时性的计算机可读存储媒体和通信媒体;非临时性的计算机可读媒体包括除了临时性的传播信号之外的所有计算机可读媒体。通常,程序模块包括执行特定任务或是实施特定抽象数据类型的例程、程序、对象、组件、数据结构等等。程序模块的功能可以按照不同实施例的需要而被组合或分布。
[0039]计算机存储媒体包括在任何用于存储诸如计算机可读指令、数据结构、程序模块或其他数据之类的信息的方法或技术中实施的易失和非易失、可移除和不可移除媒体。计算机存储媒体包括但不局限于随机存取存储器(RAM),只读存储器(R0M),电可擦写可编程ROM (EEPR0M),闪存或其他存储技术,紧凑型碟片ROM (CD-ROM),数字多用途碟片(DVD)或其他光学存储器,磁带盒,磁带,磁盘存储器或其他磁存储设备,或是其他任何可用于存储预期信息并且可被访问以检索信息的介质。
[0040]通信媒体可以包含计算机可执行指令、数据结构以及程序模块,并且包含了任何信息递送媒体。作为示例而不是限制,通信媒体包括有线媒体,例如有线网络或直接线路连接,以及无线媒体,例如声学、射频(RF)、红外以及其他无线媒体。以上任何一项的组合同样包含在计算机可读媒体的范围以内。
[0041]更进一步,虽然这里描述的实施例而可以参考GPU,但是应该理解,这里描述的电路和/或功能也可以在其他类型的处理器中实施,例如通用或其他专用协处理器,或者在CPU内部实施。
[0042]基于用户输入来增强运动估计的设备和方法
[0043]图2是能够实施根据本发明的实施例的计算机系统100的一个示例的框图。在一个实施例中,这里描述的应用服务器可以在例示的计算机系统100上实施。
[0044]在图2的示例中,计算机系统100包括用于运行软件应用以及可选地运行操作系统的中央处理器(CPU) 105。存储器110存储供CPU105使用的应用和数据。该存储器115为应用和数据提供非易失存储,并且可以包括固定磁盘驱动器,可移除磁盘驱动器,闪存设备,以及⑶-R0M、DVD-R0M或其他光学存储设备。可选的用户输入120包括来自一个或多个用户的用户输入传递到计算机系统100的设备,并且可以包括键盘、鼠标、摇杆、触摸屏和/或麦克风。
[0045]通信或网络接口 125允许计算机系统100经由电子通信网络来与其他计算机系统通信,其中所述通信网络包括有线和/或无线通信,并且包括内部网或因特网。在一个实施例中,计算机系统100通过通信接口 125接收来自远程计算机的指令和用户输入。所述通信接口 125可以包括用于与远程设备通信的发射机和接收器。
[0046]可选的显示设备150可以是能够响应于来自计算机系统100的信号来显示视觉信息的任何设备。[0047]计算机系统100的组件包括CPU105、存储器110、数据存储器115、用户输入设备120、通信接口 125以及显示设备150,并且这些组件可以经由一个或多个数据总线160来耦连。
[0048]在图2的实施例中,图形系统130可以与数据总线160以及计算机系统100的组件相耦连。该图形系统130可以包括物理图形处理单元(GPU) 135以及图形存储器。GPU135从渲染命名中产生用于输出图像的像素数据。如结合图3进一步论述的那样,物理GPU135可以被配置成多个虚拟GPU,并且这些虚拟GPU可以被多个并行运行的应用并行(同时)使用。
[0049]在一个或多个实施例中,图形系统130还可以包括编码器180。编码器180可以是能够依照本发明的原理来编码(压缩)诸如视频数据之类的数据的任何设备。然后,经过编码的数据可以通过使用通信接口 125而被传送到客户机设备。编码器180包括一个块匹配模块185,其中所述模块实施所述过程并且执行在GPU产生的视频帧序列的参考帧中找出与目标帧宏块有关的最佳匹配所必需的计算。
[0050]图形存储器可以包括用于存储输出图像中的每一个像素的像素数据的显示存储器140 (例如帧缓存器)。在另一个实施例中,显示存储器140和/或附加存储器145可以是存储器110的一部分,并且可以与CPU105共享。作为替换,显示存储器140和/或附加存储器145可以是被提供给图形系统130专用的一个或多个单独的存储器。
[0051]在另一个实施例中,图形处理系统130包括与GPU135类似的一个或多个附加物理GPU155。每一个附加GPU155可以被适配成与GPU135并行工作。每一个附加GPU155从渲染命令中产生用于输出图像的像素数据。每一个附加物理GPU155可以被配置成是多个虚拟GPU,并且这些虚拟GPU可供多个并行运行的应用并行(同时)使用。每一个附加GPU155可以结合GPU135来进行操作,以便同时产生用于输出图像的不同部分的像素数据,或者同时产生用于不同输出图像的像素数据。
[0052]每一个附加GPU155可以与GPU135位于相同的电路板上,由此与GPU135共享连至总线160的连接,或者每一个附加GPU155也可以位于与数据总线160单独耦连的别的电路板上。每一个附加GPU155还可以集成到与GPU135相同的模块或芯片封装中。每一个附加GPU155可以具有与显示存储器140以及附加存储器145类似的附加存储器,或者可以与GPU135共享存储器140和145。
[0053]图3是能够实施根据本发明的实施例的终端用户或客户机设备210的一个示例的框图。计算系统210广义地代表了能够运行计算机可执行指令的任何单处理器或多处理器的计算设备或系统。关于计算系统210的示例包括但不局限于工作站、膝上型计算机、客户侧终端、电视机、手持设备(例如手机、PDA等等)或是其他任何个人计算系统或设备。
[0054]关于计算系统210的更进一步的示例包括机顶视频游戏机设备,例如位于Redmond, Washington 的 Microsoft Corporation提供的Xbox?或是位于日本东京的 Sony
Computer Entertainment Corporation 提供的PlayStation'? ,,系统 210 还可以作为“片上系统”来实施,其中计算设备的电子器件(例如组件214、216、218、220、222等等)全都包含在单个集成电路芯片内部。其示例包括具有显示器的手持仪表,汽车导航系统,便携式娱乐系统等等。
[0055]在最基本的配置中,计算系统210可以包括至少一个处理系统214以及系统存储器216。相对于计算机系统100,图3的示例中的客户机设备210可以具有较少的组件以及较少的功能,就此而论,该设备可被称为瘦客户机。在另一个实施例中,客户机设备可以是纯显示设备,例如电视机或用户终端,其中所有处理都是在客户机设备所连接的设备上执行的,而客户机设备则仅仅显示从其他设备中继而来的图像。
[0056]处理器214通常代表的是能够处理数据或者解释和运行指令的任何类型或形式的处理单元。在某些实施例中,处理器214可以接收来自软件应用或模块的指令。这些指令可以促使处理器214执行这里描述和/或例证的一个或多个例示实施例的功能。
[0057]系统存储器216通常代表的是能够存储数据和/或其他计算机可读指令的任何类型或形式的易失或非易失存储设备或介质。关于系统存储器216的示例包括但不局限于RAM、ROM、闪存或其他任何适当的存储器设备。在某些实施例中,计算系统210可以同时包括易失存储器单元(例如系统存储器216)以及非易失存储设备(例如主存储设备232),但这并不是必需的。
[0058]除了处理器214和系统存储器216之外,计算系统210还可以包括一个或多个组件或部件。举例来说,在图3的实施例中,计算系统210包括存储器控制器218、输入/输出(I/O)控制器220以及通信接口 222,这其中的每一个都可以借助通信基础结构212互连。通信基础结构212通常代表的是能够促成计算设备的一个或多个组件之间的通信的任何类型或形式的基础结构。关于通信基础结构212的示例包括但不局限于通信总线(例如工业标准架构(ISA)、周边组件互连(PCI)、PCI Express (PCIe)或类似的总线和网络。
[0059]存储器控制器218通常代表的是能够处理存储器或数据或者控制计算设备210的一个或多个组件之间的通信的任何类型或形式的设备。举例来说,存储器控制器218可以控制处理器214、系统存储器216以及I/O控制器220之间经由通信基础结构212进行的通信。
[0060]I/O控制器220通常代表的是能够协调和/或控制计算设备的输入和输出功能的任何类型或形式的模块。举例来说,I/o控制器220可以控制或者促成计算设备210的一个或多个组件之间的数据传输,作为示例,所述组件可以是处理器214、系统存储器216、通信接口 222、显示适配器226、输入接口 230以及存储接口 234。
[0061]通信接口 222广义地代表了能够促成例示计算系统210与一个或多个附加设备之间的通信的任何类型或形式的通信设备或适配器。例如,通信接口 222可以包括发射机和接收器,并且可以促成计算设备210与包含附加计算机系统的专用或公共网络之间的通信。在一个实施例中,通信接口 222被用于与运行诸如云端视频游戏之类的应用的应用服务器进行通信。
[0062]关于通信接口 222的示例包括但不局限于有线网络接口(例如网络接口卡),无线网络接口(例如无线网络接口卡),调制解调器,以及其他任何适当的接口。在一个实施例中,通信接口 222经由与因特网之类的网络的直达链路来提供与远程服务器的直接连接。所述通信接口 222还可以通过其他任何适当的连接来间接提供此类连接。
[0063]通信接口 222还可以代表被适配成促成在计算系统210与一个或多个附加网络或存储设备之间经由外部总线或通信信道进行的通信的主机适配器。关于主机适配器的示例包括但不局限于小型计算机系统接口(SCSI)主机适配器、通用串行总线(USB)主机适配器、IEEE (电气与电子工程师协会)1394主机适配器,串行高级技术附件(STAT)和外部STAT (eSATA)主机适配器,先进技术附件(ATA)和并行(PATA)主机适配器,光纤信道接口适配器,以太网适配器等等。
[0064]通信接口 222还可以允许计算系统210参与分布式或远程计算。例如,通信接口222可以接收来自远程设备的指令,或者向远程设备发送供其运行的指令。在一个实施例中,通信接口可以将来自用户接口 230的输入传送到远程服务器,并且从远程服务器接收代表了响应于用户输入而更新的屏幕图像的编码视频。用于该实施例的例示应用包括云端游戏、远程桌面管理以及无线显示(WiDi)。
[0065]如图3所示,计算系统210还可以包括至少一个与经由显示适配器225与通信基础结构212耦连的显示设备224。该显示设备224通常代表了能够视觉显示由显示适配器225转发的信息的任何类型或形式的设备。同样,显示适配器226通常代表了被配置成转发图形、文本以及其他数据以在显示设备224上显示的任何类型或形式的设备。
[0066]解码器255可以是能对编码(压缩)数据进行解码(解压缩)的任何设备。在一个实施例中,解码器255可以被配置成对用由应用服务器的编码器180用任何协议编码的数据进行加密。显示设备224能够显示从解码器255接收的诗句信息。该显示设备224可以用于显示至少部分由客户机设备210产生的视觉信息。然而,显示设备224也可以用于显示从远程计算机系统100接收的诗句信息。
[0067]如图3所示,计算系统210还可以包括经由输入接口 230与通信基础结构21耦连的至少一个输入设备228。该输入设备228通常代表了能向计算系统210提供计算机或人类生成的输入的任何类型或形式的输入设备。关于输入设备228的示例包括但不局限于键盘、指示设备、语音识别设备、摇杆、触摸屏、麦克风或是其他任何输入设备。在一个实施例中,用户通过输入设备228输入的命令可以通过通信接口 222传送到应用服务器的计算机系统100,其中在所述计算机系统100中运行的应用是依照通过输入设备228输入的指令而被控制或运行的。
[0068]如图3所示,计算系统210还可以包括经由存储接口 234与通信基础结构212耦连的主存储设备232以及可选的备份存储设备233。存储设备232和233通常代表的是能够存储数据和/或其他计算机可读指令的任何类型或形式的存储设备或介质。例如,存储设备设备232和233可以是磁盘驱动器(例如所谓的硬盘驱动器)、软盘驱动器、磁带驱动器、光盘驱动器、闪存驱动器等等。存储接口 234则通常代表了用于在存储设备232和233与计算系统210的其他组件之间传送数据的任何类型或形式的接口或设备。
[0069]在一个示例中,在主存储设备232中可以存储数据库240。数据库240可以代表单个数据库或计算设备的一部分,或者它也可以代表多个数据库或计算设备。举例来说,数据库240可以代表(保存在)计算系统210的一部分和/或图4 (如下)中的例示网络架构400的一些部分。数据库240还可以保存在图2所示的计算机系统100实施的服务器设备上。作为替换,数据库240可以代表(被保存在)一个或多个能被计算设备访问的物理分离的设备上,例如被计算系统210和/或网络架构400的一些部分访问。
[0070]继续参考图3,存储设备232和233可以被配置成读取和/或写入被配置成存储计算机软件、数据或其他计算机可读信息的可移除存储单元。关于适当的可移除存储单元的示例包括但不局限于软盘、磁带、光盘、闪存设备等等。存储设备232和233还可以包括允许将计算机软件、数据或其他计算机可读指令加载到计算系统210中的其他类似的结构或设备。例如,存储设备232和233可以被配置成读取和写入软件、数据或其他计算机可读信息。存储设备232和233既可以是计算系统210的一部分,也可以是可通过其他接口系统访问的单独设备。例如,这里公开的例示实施例可被编码成计算机可读介质上的计算机程序(也被称为计算机软件,软件应用,计算机可读指令或计算机控制逻辑)。
[0071]很多其他的设备或子系统也可以连接到计算系统210。相反,并不是图3所示的所有组件和设备都是实践这里描述的实施例所必需的。上文中提到的设备和子系统还可以采用不同于图3所示的方式来进行互连。计算系统210还可以使用任何数量的软件、固件和/或硬件配置。例如,这里公开的例示实施例可被编码成计算机可读介质上的计算机程序(也被称为计算机软件,软件应用,计算机可读指令,或计算机控制逻辑)。
[0072]包含计算机程序的计算机可读介质可被加载到计算系统210中。然后,在系统存储器216和/或存储设备232和233的不同部分可以存储计算机可读介质上保存的所有或一些计算机程序。在由处理器214运行的时候,载入计算系统210的计算机程序可以促使处理器214执行这里描述和/或例证的例示实施例的功能,和/或促使其成为用于执行这里描述和/或例证的例示实施例的功能的装置。作为补充或替换,这里描述和/或例证的例示实施例可以在固件和/或硬件中实施。
[0073]图4是可供客户机系统210-1、210-2和210-3以及服务器100-1和100-2耦连至网络450的网络架构400的一个示例的框图。客户机系统210-1、210-2和210-3通常代表的是任何类型或形式的计算设备或系统,例如图2的计算系统210。每一个客户机系统都是一个位于计算机系统100的远端的单独实体(作为示例,其与计算系统100是被网络450分离的)。
[0074]同样,服务器100-1和100-2通常代表的是被配置成提供各种数据库服务和/或运行某些软件应用的计算设备或系统,例如应用服务器或数据库服务器。服务器100-1和100-2通常代表的是任何类型或形式的计算设备或系统,例如图1的计算系统100。网络450通常代表了任何电信或计算机网络,其示例包括内部网,广域网(MN),局域网(LAN),个人局域网(PAN)或因特网。
[0075]参考图3的计算系统210,在每一个客户机系统210-1、210_2和210-3与网络450之间可以使用通信接口来提供连接,例如通信接口 222。客户机系统210-1、210-2和210-3能够使用诸如web浏览器或其他客户机软件来访问服务器100-1和100-2上的信息,作为示例,所述客户机软件可以是在线游戏或云端游戏软件。此类软件可以允许客户机系统210-1,210-2和210-3访问由服务器100-1和100-2、存储设备460 (I)-(L)、存储设备470 (I)-(N)、存储设备490 (I)-(M)或是智能存储阵列495托管的数据。虽然图4描述的是使用网络(例如因特网)来交换数据,但是这里描述的实施例并不局限于因特网或基于网络的任何特定环境。
[0076]回到图4,在一个实施例中,这里描述的一个或多个例示实施例中的所有或一些例示实施例是作为计算机程序编码的,并且是被加载到服务器100-1和100-2、存储设备460 (I)-(L)、存储设备470 (I)-(N)、存储设备490 (I)-(M)或是智能存储阵列495或是其组合之上并由其运行的。此外,这里公开的一个或多个例示实施例中的所有或一部分例示实施例同样可以作为计算机程序而被编码,存入服务器100-1,由服务器100-2运行,以及经由网络450分发给客户机系统210-1、210-2和210-3。[0077]图5示出的是根据本发明的一个实施例中的图形系统130。在图1的实施例中,图形系统130包括物理GPU135,但是图形系统130还可以包括如上所述的附加物理GPU155。
[0078]根据本发明的实施例,物理GPU135被配置成同时供N个应用1、2、……N使用。更具体地说,物理GPU135被配置成了由应用1、2、……N同时使用的M个虚拟GPU535-1、
535-2、......525-Mo虚拟编码器580_1、580_2、......580-M是在虚拟GPU内部实施的。每
一个附加GPU155可以被用相似的方式配置成多个虚拟GPU。在一个实施例中,GPU135和附加GPU155与存储器管理单元540 (MMU ;例如输入/输出MMU)相耦连,所述存储器管理单元则转而与结合图1描述的图形存储器140相耦连。
[0079]在一个实施例中,应用1、2、……4是视频游戏应用;然而,本发明并不局限于此。换言之,应用1、2、……N可以是任何类型的应用。例如,该应用可以是以表格形式提供在不同播放时段以及不同电视频道可用的不同节目的列表的节目指南。
[0080]值得注意的是,参考图5,相对于计算机系统100,客户机设备210-1、210_2……
2IO-K的显示器224-1、224-2、......224-K是远程显示器。换言之,显示器224-1、224_2、......224-K并未经由诸如低电压显示信号(LVDS)接口直接连接到计算机系统100。取而代之的是,计算机系统100只能借助相应的客户机设备210-1、210-2……210-K来访问计算机系统.100,显示器 224-1、224-2、......224-K (参见图 6)。
[0081]在操作中,在一个实施例中,客户机设备210-1、210_2……210-K经由网络450来向计算机系统100提供控制信息(例如用户输入)。同样参考图5,响应于该控制信息,计算机系统110通过运行应用1、2、……N来产生输出数据,所述输出数据则经由网络350而被传送到客户机设备210-1、210-2……210-K。所述视频输出数据是经过编码的。
[0082]在一个实施例中,从在客户机设备210-1、210_2……210-K上未安装应用1、
2、……N的意义上讲,客户机设备210-1、210-2……210-K是无状态的。取而代之的是,客户机设备210-1、210-2……210-K依靠计算机系统100来存储和运行应用1、2……N。
[0083]更具体地说,在一个实施例中,客户机设备210-1经由网络450向计算机系统100提供关于应用I的控制信息。客户机设备210-2则并行地经由网络450来向计算机系统100提供关于应用2的控制信息。所述应用I和2可以是相同的应用(例如,它们可以是同一视频游戏的实例或拷贝),或者它们也可以是不同的应用。
[0084]响应于来自客户机设备210-1的输入,应用I使用虚拟GPU535-1来产生与应用I相关的显示数据(输出数据)。与应用I相关的显示数据经由网络450而被发送到客户机设备210-1。与之并行的是,响应于来自客户机设备210-2的输入,应用2使用虚拟GPU535-2来产生与应用2相关的显示数据(输出数据)。所述与应用2相关的显示数据同样经由网络450而被发送到客户机设备210-2。该显示数据可以依照这里公开的原理来编码。
[0085]图6是示出了根 据本发明的一个实施例中数据流的框图,作为示例,所述数据流是从客户机设备210-1到服务器设备100的。在图6的示例中,用户将数据输入输入设备228。所述输入数据会经过输入接口 230,然后则会通过通信接口 222并经由网络450而被传送到服务器100。在一个所述用户设备是基本用户终端或电视机之类的瘦客户机的实施例中,输入是直接在服务器设备100上产生的,并且输入接口 230和输入设备228是可选的。
[0086]在服务器端,数据是通过通信接口 125接收的。输入分析模块625可用于分析所述输入,以便确定用户输入设备的类型,以及依照输入设备的类型来确定输入值。
[0087]所述输入分析模块将其分析结果传送到虚拟GPU535-1。在一个实施例中,该系统可以是作为与图1所述的GPU135相似的独立GPU实施的。与实施编码器的GPU相似,所述编码器没有必要是用于本发明的虚拟编码器。该编码器可以被配置成与图1所示的编码器180相似。
[0088]在GPU535-1内部实施的虚拟编码器580_1使用源自输入分析模块625的结果来编码源自服务器100上运行的应用的视频帧。虚拟编码器580-1使用虚拟块匹配模块685-1来查找参考帧内部的匹配宏块。所述虚拟块匹配模块685-1还可以在编码器内部作为图2所示的独立的块匹配模块185来实施。经过编码的视频帧则会通过通信接口 125传送到客户机设备210-1。
[0089]在客户机210-1上,通信接口 222将经过编码的视频帧传送到解码器255。所述解码器对经过编码的视频帧进行解码,并将结果传送到显示适配器226。
[0090]图7描述的是用于在根据本发明的实施例中查找参考帧中的最佳匹配块的计算机实施方法的例示处理流程图700。然而,本发明并不局限于流程图700提供的描述。相反,一个或多个相关领域的技术人员将会清楚了解,其他功能流程同样处于本发明的范围和实质以内。
[0091]流程图700是继续参考在上文中参考图2、3、4、5和6描述的例示实施例而被描述的,但是该方法并不局限于这些实施例。
[0092]在图7的方框702 ,从终端用户设备(例如客户机设备210-1、210_2……210-K)存取或接收用户输入。这些输入是在具有GPU (例如GPU135)的集中式服务器设备(例如计算机系统100)上接收的,其中所述GPU被配置成是独立GPU或者供多个并行运行的应用(应用1、2、……N)同时使用。换言之,在一个实施例中,GPU可以作为多个虚拟GPU (虚拟GPU535-l、535-2、......、535_M)来实施。
[0093]在方框704,输入分析模块625对接收到的用户输入进行分析。该分析模块首先确定该输入是否与任何类型的屏幕更新相关联。如果用户输入不会导致任何屏幕更新,那么输入分析模块可以忽略用户输入,因为所述用户输入不会在对传送至客户机设备210-1的视频帧的过程中起到任何作用。在这种情况下,块匹配处理将会依照常规的技术和过程来实施。
[0094]然后,输入分析模块通过分析输入来确定用户输入设备的类型,以及依照用户输入设备的类型来确定输入值。举例来说,为了确定屏幕更新或屏幕上的运动的方向和范围,输入分析模块需要知道该输入是来自游戏机、摇杆、键盘、麦克风、触摸屏显示器还是鼠标。在弄清楚了输入设备的类型之后,分析模块需要将用户输入的值转换成易于被图形处理单元评估的公共量度单位。更进一步,由于用户输入可以是旨在更新若干个视频帧上的屏幕的连续输入,因此,输入分析模块需要将暂时性的输入信息转换成一种格式,以便可以将单个输入值归结到每一个中贞。
[0095]然后,输入分析模块625会向图形处理单元535-1转发特定于帧的值,其中所述特定于帧的值指示的是帧的屏幕上位移的位置、幅度和方向。由于从输入分析模块625接收的经过分析的用户输入是用公共量度单位提供的,因此,即使不知道用户输入设备的类型,图形处理单元535-1的编码器580-1也没有必要将数据变换成其他格式。[0096]在方框706,对该视频数据流进行编码的处理将会开始执行。在编码了视频流的参考帧中的所有像素之后,编码器将会开始编码P和B帧。所述编码器会从图形存储器140中存取这些帧。该图形存储器140被用于存储与服务器100上运行的应用相对应的视频数据流,所述应用则受控于来自客户机设备210-1的用户输入或是来自服务器端的用户输入模块120的用户输入,其中在后一种情况中,客户机设备仅仅是瘦客户机。所述视频数据流由虚拟图形处理单元535-1产生,之后则被存入图形存储器140。编码器580-1从图形存储器140中存取视频流,并且将接收自输入分析模块625且经过分析的用户输入值序列与相应的视频帧序列相互关联。
[0097]为了编码P和B帧中的宏块,编码器需要在参考帧中查找每一个宏块的匹配块。通过使用经过分析的用户输入,编码器可以为目标P或B帧中各自的当前块计算一个位移矢量(或位移坐标)。
[0098]确定位置矢量的处理可以参考图8来例证,其中图8是示出了根据本发明的一个实施例来为目标帧820中的宏块确定与参考帧810相关的位移矢量的例示方法的简化图示。通过使用来自输入分析模块625且经过分析的输入值,编码器可以确定:相对于参考帧,用户输入将宏块852向右移动了大约三个单位,以及向上移动了大约两个单位,由此可以为宏块854计算一个位移矢量{(-3,-2)}。该位移矢量会将编码器指引到宏块851在参考帧810中的通用搜索区域,以便查找最佳匹配块。
[0099]在一个实施例中,在假设用户输入的意图是在相同的方向以及相同的程度上位移当前帧中的所有像素的情况下,编码器580-1将为当前块确定的位移矢量或位移坐标用作P或B帧中的所有宏块(例如宏块855和856)的位移矢量。这样做允许P或B帧中的所有宏块从确定相同位移矢量的处理中受益,目标帧中的剩余宏块不需要进一步计算。
[0100]然而,在另一个实施例中,对于指定的输入,有必要为每一个宏块重新计算位移矢量。举例来说,在视频游戏中,用户输入有可能导致前景和背景图像以不同的方式或方向改变,在这种情况下,用于前景和背景中的宏块的位移矢量将是不同的,并且必须在互不相关的情况下对其重新进行计算。
[0101]如上所述,在方框708,编码器580-1使用位移矢量(或位移坐标)作为提示来确定参考帧中的搜索区域,以便在参考帧中查找当前块的最佳匹配。
[0102]在方框710,编码器的块匹配模块185通过使用以下的某一种众所周知的最佳匹配过程来查找参考帧中的最佳匹配块:全面搜索,交叉搜索,螺旋搜索,三步搜索,四步搜索,正交搜索,分层搜索以及菱形搜索。
[0103]在一些情况中,根据本发明原理计算得到的基于用户输入的位移矢量未必精确到足以让编码器580-1查找最佳匹配块。然而,从它向编码器提供了与在某个帧中用以寻找最佳匹配块的通用搜索区域或位置相关的强烈暗示或线索的意义上讲,本发明要远比常规技术优越。在没有给予用户输入的提示的情况下,常规系统会浪费宝贵的时间而开始在参考帧中与当前块在目标帧中的位置相同的位置或是该位置的周围寻找最佳匹配块。在其他情况中,如果用户输入是一个简单函数,例如在远程桌面环境中移动窗口,那么计算得到的位移矢量在预测最佳匹配宏块方面将会是非常精确的。
[0104]在方框712,编码器使用最佳匹配块的位置以及当前块的位置来计算运动矢量。
[0105]然后,在方框714,编码器通过计算当前块与最佳匹配块之间的差来确定预测误差。
[0106]最后,在方框176,编码器具有了编码当前块所必需的运动矢量以及预测误差。
[0107]在一个实施例中,在编码了目标帧之后,该目标帧可被传送至客户机设备210-1,然后,在所述客户机设备210-1,解码器将会使用参考帧以及P和B帧的运动矢量及预测误差来恢复巾贞间编码中贞。
[0108]虽然以上公开使用了具体的框图、流程图以及示例来阐述不同的实施例,但是这里描述和/或例证的每一个框图组件,流程图步骤、操作和/或组件都是可以使用大量的硬件、软件或固件(或是其任何组合)配置而被单独和/或共同实施的。此外,由于可以通过实施众多其他架构来实现相同的功能,因此,对其他组件内部包含的组件所做的任何公开都应被视为示例。
[0109]在这里描述和/或例证的处理参数和步骤序列仅仅是作为示例给出的。举例来说,虽然这里描述和/或例证的步骤是按照特定顺序显示和论述的,但是没有必要按照所示出或论述的顺序来执行这些步骤。这里描述和/或例证的不同例示方法既可以省略在这里描述或例证的一个或多个步骤,也可以包含除了所公开的步骤之外的附加步骤。
[0110]虽然在这里是在功能完全的计算系统的上下文中描述和/或例证不同实施例的,但是这其中的一个或多个例示实施例可以作为程序产品来以多种形式分发,而不必考虑用于实际执行所述分发的计算机可读媒体的特定类型。这里公开的实施例还可以使用执行某些任务的软件模块来实施。这些软件模块可以包括脚本文件、批处理文件或是可以保存在计算机可读存储介质或计算系统中的其他可执行文件。这些软件模块可以将计算系统配置成执行这里公开的一个或多个例示实施例。并且这里公开的一个或多个软件模块可以在云计算环境中实施。所述云计算环境可以借助因特网来提供不同的服务和应用。这些基于云的服务(例如作为服务的软件,作为服务的平台,作为服务的基础结构等等河以通过web浏览器或其他远程界面而被访问。这里描述的各种功能可以通过远程桌面环境或是其他任何基于云的计算环境来提供。
[0111]为了进行说明,以上描述是参考具体实施例而被描述的。然而,以上的说明性论述既不是穷举性的,也没有将本发明局限于所公开的确切形式。考虑到以上的教导,众多的修改和变化都是可行的。这里的实施例是为了以最佳的方式说明本发明的原理及其实际应用而被选择和描述的,由此允许本领域其他技术人员以最佳的方式来使用本发明以及带有与所考虑的特定用途相适合的不同修改的不同实施例。
[0112]由此,在这里对根据本发明的实施例进行了描述。虽然本公开是在特定实施例中描述的,但是应该了解,本发明不应该被解释成受此类实施例的限制,而是应该依照以下的权利要求来对其进行解释。
【权利要求】
1.一种用于视频编码的运动估计方法,所述方法包括: 接收基于用户的输入; 分析所述基于用户的输入,以便确定所述基于用户的输入是否改变了为了进行显示而被渲染的信息; 从已分析的基于用户的输入中为视频流目标帧中的当前块计算位移坐标;以及 使用所述位移坐标来确定参考帧中的搜索区域,以搜索与所述当前块对应的最佳匹配块。
2.权利要求1的方法,还包括:在所述参考帧的所述搜索区域中使用块匹配过程来确定所述当前块的最佳匹配块。
3.权利要求2的方法,其中所述块匹配过程是从包含以下各项的群组中选择的:全面搜索,交叉搜索,螺旋搜索,三步搜索,四步搜索,正交搜索,分级搜索,以及菱形搜索。
4.权利要求2的方法,还包括: 使用所述当前块的位置以及所述最佳匹配块的位置来计算所述当前块的运动矢量; 通过计算所述当前块与所述最佳匹配块之间的差来确定预测误差;以及 使用所述运动矢量和所述预测误差来编码所述当前块。
5.权利要求 4的方法,还包括: 将经过编码的当前块传送到远程计算机,用于解码所述运动矢量以及所述预测误差,从而恢复所述当前块。
6.权利要求1的方法,其中所述分析包括:确定用户输入设备的类型以及基于所述用户输入设备类型来确定用户输入值。
7.权利要求1的方法,其中所述接收包括:经由通信接口来从远程计算机接收所述基于用户的输入。
8.权利要求1的方法,其中所述分析包括:确定所述基于用户的输入是否来自从包含以下各项的群组中选择的设备:键盘,鼠标,摇杆,触摸屏以及麦克风。
9.权利要求1的方法,还包括:使用虚拟图形处理单元来产生所述视频流。
10.一种用于视频编码的运动估计设备,所述设备包括: 接收器,可操作为接收基于用户的输入; 输入分析模块,可操作为分析所述基于用户的输入; 编码器模块,可操作为从已分析的基于用户的输入中为视频流目标帧中的当前块计算位移坐标,以及可操作为使用所述位移坐标来确定参考帧中的搜索区域,以搜索与所述当前块对应的最佳匹配块。
11.权利要求10的设备,其中所述编码器模块还包括:块匹配模块,该块匹配模块可操作为在所述参考帧的所述搜索区域中使用块匹配过程来查找所述当前块的最佳匹配块。
12.权利要求11的设备,其中所述块匹配过程是从包含以下各项的群组中选择的:全面搜索,交叉搜索,螺旋搜索,三步搜索,四步搜索,正交搜索,分级搜索,以及菱形搜索。
13.权利要求11的设备,其中所述编码器模块进一步可操作为使用所述当前块的位置以及所述最佳匹配块的位置来为所述当前块计算运动矢量,通过计算所述当前块与所述最佳匹配块之间的差来确定预测误差;以及使用所述运动矢量和所述预测误差来编码所述当前块。
14.权利要求13的设备,还包括:发射机,可操作为将所述经过编码的块传送到远程计算机,用于对其进行解码。
15.权利要求10的设备,其中所述编码器是在虚拟图形处理单元内部实现的。
16.权利要求10的设备,其中所述输入分析模块可操作为确定用户输入设备的类型,并且基于所述用户输入设备类型来确定用户输入值,以及其中所述接收器可操作为经由通信接口来从远程计算机接收所述基于用户的输入。
17.一种计算机系统,包括: 处理器; 与所述处理器耦连并包含图形处理单元的图形处理系统,该图形处理单元可操作为供并行执行的多个应用使用的多个虚拟图形处理单元; 可操作用于发送和接收数据的通信接口 ;以及 与图形处理系统耦连并且其中保存有指令的存储器,其中如果所述计算机系统执行所述指令,则导致该计算机系统执行包含以下各项的操作: 经由通信接口访问来自远程的第一客户机设备的第一用户输入,其中第一用户输入与所述多个应用中的第一应用相关联; 基于对所述第一用户输入所做的分析,产生当前块在与第一应用相对应的视频流的目标帧中的位移坐标; 基于所述位移坐标,确定所述目标帧中的多个块在参考帧中的相应搜索区域;以及 在所述参考帧中的相应搜索区域,通过使用块匹配过程来确定所述多个块的最佳匹配`块。
18.权利要求17的计算机系统,其中所述操作还包括: 使用所述目标帧中的所述多个块中的每一个块的位置以及相应的最佳匹配块的位置来计算所述多个块的运动矢量; 通过计算所述多个块中的每一个块与相应的最佳匹配块之间的差来确定所述多个块的预测误差;以及 使用所述多个块的运动矢量和预测误差来编码所述目标帧。
19.权利要求18的计算机系统,其中该操作还包括:将经过编码的目标帧传送到第一客户机设备,用于对其进行解码。
20.权利要求17的计算机系统,其中该操作还包括: 经由所述通信接口来访问来自远程第二客户机设备的第二用户输入,其中所述第二用户输入与所述多个应用中的第二应用相关联; 基于对所述第二用户输入的分析来为与第二应用相对应的视频流的目标帧中的当前块产生位移坐标; 基于所述位移坐标来确定所述目标帧中的多个块在参考帧中的相应搜索区域;以及 在所述参考帧中的相应搜索区域使用块匹配过程来查找所述多个块的最佳匹配块。
【文档编号】H04N19/51GK103888776SQ201310705449
【公开日】2014年6月25日 申请日期:2013年12月19日 优先权日:2012年12月19日
【发明者】何熙 申请人:辉达公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1