一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

用以改善云游戏应用中的时延与视频质量之间的权衡的编码器调谐的制作方法

2022-07-14 03:20:57 来源:中国专利 TAG:


1.本公开涉及被配置为跨网络流式传输内容的流式传输系统,并且更具体地,涉及被配置为用于云游戏系统的高性能编码器和解码器以及在了解网络传输速度和可靠性和总时延目标的情况下进行编码器调谐的流式传输系统。
2.发明背景
3.近年来不断地在推动在线服务,所述在线服务允许在通过网络连接的云游戏服务器与客户端之间以流式传输格式进行在线或云游戏。流式传输格式越来越受欢迎,因为可以按需使用游戏标题、玩家之间联网以进行多玩家游戏的能力、玩家之间共享资产、玩家和/或观众之间共享即时体验,允许朋友看朋友玩视频游戏,让朋友加入朋友正在进行的游戏等等。遗憾的是,所述需求还在加重以下限制:网络连接能力,以及在服务器和客户端处执行的响应速度足以渲染向客户端递送的高质量图像的处理。例如,为了获得最佳用户体验,在服务器上执行的所有游戏活动的结果都需要经过压缩并且以低毫秒时延传输回客户端。往返时延可被定义为用户的控制器输入与客户端处的视频帧的显示之间的总时间;其可包括从控制器到客户端的控制信息的处理和传输、从客户端到服务器的控制信息的处理和传输、在服务器处使用那个输入来生成响应于所述输入的视频帧、处理所述视频帧并且将所述视频帧传递到编码单元(例如,扫描输出)、对所述视频帧进行编码、将经编码的视频帧传输回客户端、接收和解码所述视频帧,以及在显示所述视频帧之前对所述视频帧的任何处理或分级。单向时延可被定义为所述往返时延的一部分,其由从开始将视频帧传递到服务器处的编码单元(例如,扫描输出)到开始在客户端处显示视频帧的时间组成。往返时延的一部分和单向时延与经由通信网络将数据流从客户端发送到服务器以及从服务器发送到客户端所用的时间相关联。另一部分与客户端和服务器处的处理相关联;这些操作的改进,诸如与帧解码和显示相关的高级策略,可导致服务器与客户端之间的基本上减小的往返时延和单向时延,并且为云游戏服务的用户提供更高质量的体验。
4.正是在此背景下出现了本公开的实施方案。


技术实现要素:

5.本公开的实施方案涉及被配置为用于跨网络流式传输内容(例如,游戏)的流式传输系统,并且更具体地,涉及被配置为用于提供编码器调谐以改善云游戏系统中的单向时延与视频质量之间的权衡的流式传输系统,其中编码器调谐可基于对客户端带宽、跳过的帧、经编码的i帧的数目、场景变化的数目和/或超过目标帧大小的视频帧的数目的监测,其中经过调谐的参数可包括编码器位速率、目标帧大小、最大帧大小和量化参数(qp)值,其中高性能编码器和解码器有助于减小云游戏服务器与客户端之间的总单向时延。
6.本公开的实施方案公开了一种用于云游戏的方法。所述方法包括当在云游戏服务器处执行视频游戏时生成多个视频帧。所述方法包括以某一编码器位速率对所述多个视频帧进行编码,其中将被压缩的多个视频帧从云游戏服务器的流式传输器传输到客户端。所
述方法包括测量客户端的最大接收带宽。所述方法包括在流式传输器处监测对所述多个视频帧的编码。所述方法包括基于对编码的监测而动态地调谐编码器的参数。
7.在另一实施方案中,公开了一种存储用于云游戏的计算机程序的非暂时性计算机可读介质。所述计算机可读介质包括用于当在云游戏服务器处执行视频游戏时生成多个视频帧的程序指令。所述计算机可读介质包括用于以某一编码器位速率对所述多个视频帧进行编码的程序指令,其中将被压缩的多个视频帧从云游戏服务器的流式传输器传输到客户端。所述计算机可读介质包括用于测量客户端的最大接收带宽的程序指令。所述计算机可读介质包括用于在流式传输器处监测对所述多个视频帧的编码的程序指令。所述计算机可读介质包括用于基于对编码的监测而动态地调谐编码器的参数的程序指令。
8.在又一实施方案中,一种计算机系统包括处理器和存储器,所述存储器耦合到所述处理器并且在其中存储有指令,所述指令在由所述计算机系统执行的情况下致使所述计算机系统执行用于云游戏的方法。所述方法包括当在云游戏服务器处执行视频游戏时生成多个视频帧。所述方法包括以某一编码器位速率对所述多个视频帧进行编码,其中将被压缩的多个视频帧从云游戏服务器的流式传输器传输到客户端。所述方法包括测量客户端的最大接收带宽。所述方法包括在流式传输器处监测对所述多个视频帧的编码。所述方法包括基于对编码的监测而动态地调谐编码器的参数。
9.在又一实施方案中,公开了一种用于云游戏的方法。所述方法包括当在云游戏服务器处执行视频游戏时生成多个视频帧。所述方法包括预测视频游戏的第一视频帧的场景变化,其中在生成所述第一视频帧之前预测所述场景变化。所述方法包括生成所述第一视频帧是场景变化的场景变化提示。所述方法包括将所述场景变化提示发送到编码器。所述方法包括将所述第一视频帧递送到编码器,其中所述第一视频帧基于所述场景变化提示而被编码为i帧。所述方法包括测量客户端的最大接收带宽。所述方法包括基于客户端的最大接收带宽和客户端显示器的目标分辨率而确定是否对在编码器处接收的第二视频帧进行编码。
10.在另一实施方案中,公开了一种存储用于云游戏的计算机程序的非暂时性计算机可读介质。所述计算机可读介质包括用于当在云游戏服务器处执行视频游戏时生成多个视频帧的程序指令。所述计算机可读介质包括用于预测视频游戏的第一视频帧的场景变化的程序指令,其中在生成所述第一视频帧之前预测所述场景变化。所述计算机可读介质包括用于生成所述第一视频帧是场景变化的场景变化提示的程序指令。所述计算机可读介质包括用于将所述场景变化提示发送到编码器的程序指令。所述计算机可读介质包括用于将所述第一视频帧递送到编码器的程序指令,其中所述第一视频帧基于所述场景变化提示而被编码为i帧。所述计算机可读介质包括用于测量客户端的最大接收带宽的程序指令。所述计算机可读介质包括用于基于客户端的最大接收带宽和客户端显示器的目标分辨率而确定是否对在编码器处接收的第二视频帧进行编码的程序指令。
11.在又一实施方案中,一种计算机系统包括处理器和存储器,所述存储器耦合到所述处理器并且在其中存储有指令,所述指令在由所述计算机系统执行的情况下致使所述计算机系统执行用于云游戏的方法。所述方法包括当在云游戏服务器处执行视频游戏时生成多个视频帧。所述方法包括预测视频游戏的第一视频帧的场景变化,其中在生成所述第一视频帧之前预测所述场景变化。所述方法包括生成所述第一视频帧是场景变化的场景变化
提示。所述方法包括将所述场景变化提示发送到编码器。所述方法包括将所述第一视频帧递送到编码器,其中所述第一视频帧基于所述场景变化提示而被编码为i帧。所述方法包括测量客户端的最大接收带宽。所述方法包括基于客户端的最大接收带宽和客户端显示器的目标分辨率而确定是否对在编码器处接收的第二视频帧进行编码。
12.通过结合附图进行的以下详细描述,本公开的其他方面将变得显而易见,以下详细描述举例说明本公开的原理。
附图说明
13.通过参考结合附图进行的以下描述可最佳地理解本公开,其中:
14.图1a是根据本公开的一个实施方案的在帧周期开始时的vsync信号的图。
15.图1b是根据本公开的一个实施方案的vsync信号的频率的图。
16.图2a是根据本公开的一个实施方案的用于在各种配置中经由网络在一个或多个云游戏服务器与一个或多个客户端装置之间提供游戏的系统的图,其中可使vsync信号同步和偏移以减小单向时延。
17.图2b是根据本公开的一个实施方案的用于在两个或更多个对等装置之间提供游戏的图,其中可使vsync信号同步和偏移以实现在所述装置之间接收控制器和其他信息的最佳时序。
18.图2c绘示了根据本公开的一个实施方案的受益于源装置与目标装置之间的vsync信号的适当同步和偏移的各种网络配置。
19.图2d绘示了根据本公开的一个实施方案的受益于源装置与目标装置之间的vsync信号的适当同步和偏移的在云游戏服务器与多个客户端之间的多租户配置。
20.图3绘示了根据本公开的一个实施方案的当流式传输从在服务器上执行的视频游戏生成的视频帧时由于时钟漂移而引起的在云游戏服务器与客户端之间的单向时延的变化。
21.图4绘示了当流式传输从在服务器上执行的视频游戏生成的视频帧时的包括云游戏服务器和客户端的网络配置,使服务器与客户端之间的vsync信号同步和偏移以允许在服务器和客户端处的操作的重叠,并且减小服务器与客户端之间的单向时延。
22.图5是绘示根据本公开的一个实施方案的用于云游戏的方法的流程图,其中对视频帧的编码包括在了解网络传输速度和可靠性以及总时延目标的情况下调谐编码器参数。
23.图6是绘示根据本公开的一个实施方案的通过在应用层处操作的流式传输器部件来测量客户端的带宽的图,其中流式传输器被配置为监测和调谐编码器,使得可以以在客户端的所测得的带宽内的速率传输被压缩的视频帧。
24.图7a是绘示根据本公开的一个实施方案的设置编码器的量化参数(qp)以优化客户端处的质量和缓冲器利用率的图。
25.图7b是绘示根据本公开的一个实施方案的调谐目标帧大小、最大帧大小和/或qp(例如,minqp和/或maxqp)编码器设置以减少超过客户端所支持的真实目标帧大小的i帧的出现的图。
26.图8是绘示根据本公开的一个实施方案的用于云游戏的方法的流程图,其中对视频帧的编码包括当编码运行时间长时或当生成的视频帧较大时(诸如当编码i帧时)决定何
时跳过视频帧或延迟对视频帧的编码和传输。
27.图9a绘示了根据本公开的一个实施方案的由编码器压缩的视频帧序列,其中当客户端带宽对于客户端的显示器的目标分辨率而言为低时,编码器在对i帧进行编码之后放弃对视频帧的编码。
28.图9b至图9c绘示了根据本公开的一个实施方案的由编码器压缩的视频帧序列,其中当客户端带宽对于客户端的显示器的目标分辨率而言是适中或高时,视频帧序列中的每一者被编码为i帧,并且后续的视频帧在编码i帧的延迟之后也被编码。
29.图10绘示了可用于执行本公开的各种实施方案的各方面的示例性装置的部件。
具体实施方式
30.虽然以下详细描述出于说明的目的而含有许多具体细节,但本领域普通技术人员将了解,对以下细节的许多变化和更改在本公开的范围内。因此,在不失在此描述之后的权利要求的一般性并且不向权利要求强加限制的情况下陈述在下文所描述的本公开的各方面。
31.一般来说,本公开的各种实施方案描述了被配置为在流式传输媒体内容(例如,流式传输来自视频游戏的音频和视频)时减小源装置与目标装置之间的时延和/或时延不稳定性的方法和系统。可由于以下因素在服务器与客户端之间的单向时延中引入时延不稳定性:在服务器处生成复杂帧(例如,场景变化)所需的额外时间、在服务器处编码/压缩复杂帧的增加的时间、网络上的可变通信路径,以及在客户端处解码复杂帧的增加的时间。还可由于服务器和客户端处的时钟的差异而引入时延不稳定性,所述差异会导致服务器vsync信号与客户端vsync信号之间的漂移。在本公开的实施方案中,可通过提供高性能编码和解码来减小在云游戏应用中在服务器与客户端之间的单向时延。在对流式传输媒体(例如,流视频、电影、剪辑、内容)进行解压缩时,有可能缓冲大量的经解压缩视频,因此有可能在显示流式传输的内容时依赖于平均解码能力和度量(例如,依赖于平均量的解码资源来支持60hz下的4k媒体)。然而,对于云游戏,增加用于执行编码和/或解码操作的时间,即便针对单个帧,也会导致相应更高的单向时延。因此,对于云游戏而言,供应更强大的解码和编码资源是有益的,与流式传输视频应用的需求相比,所述资源似乎是不必要的,并且应在处置需要更长或最长处理的帧的时间期间优化所述资源。在本公开的其他实施方案中,可执行编码器调谐以改善云游戏应用中的时延与视频质量之间的权衡。在了解网络传输速度和可靠性以及总时延目标的情况下执行编码器调谐。在实施方案中,当编码运行时间长或生成的数据较大时(例如,对于被压缩的i帧,两种情况都可能发生),执行方法来确定是延迟对后续帧的编码和传输还是跳过它们。在实施方案中,基于客户端可用的网络速度来执行对量化参数(qp)值、目标帧大小和最大帧大小的调谐。例如,如果网络速度较高,则可降低qp。在其他实施方案中,执行对i帧发生率的监测,并将其用于设置qp。例如,如果i帧不频发,则可降低qp(例如,给出更高的编码精度或更高的编码质量),使得可以跳过对视频帧的编码以使单向时延保持低,同时牺牲视频回放质量。因此,为改善云游戏应用中的时延与视频质量之间的权衡而执行的高性能编码和解码以及编码器调谐导致单向时延的减小、帧速率更平滑以及云游戏服务器与客户端之间的更可靠和/或一致的单向时延。
32.通过对各种实施方案的以上一般理解,现在将参见各个图式来描述实施方案的示
例性细节。
33.在整个说明书中,对“游戏”或“视频游戏”或“游戏应用”的参考打算表示通过执行输入命令而引导的任何类型的交互式应用。仅出于说明目的,交互式应用包括用于游戏、字处理、视频处理、视频游戏处理等的应用。此外,上文介绍的术语是可互换的。
34.云游戏包括在服务器处执行视频游戏以生成游戏渲染的视频帧,然后将所述游戏渲染的视频帧发送到客户端进行显示。服务器和客户端两者处的操作时序可与相应的垂直同步(vsync)参数相联系。当vsync信号在服务器和/或客户端之间恰当地同步和/或偏移时,在服务器处执行的操作(例如,在一个或多个帧周期内生成和传输视频帧)与在客户端处执行的操作(例如,以对应于帧周期的显示帧或刷新速率在显示器上显示视频帧)同步。具体地,在服务器处生成的服务器vsync信号和在客户端处生成的客户端vsync信号可用于使服务器和客户端处的操作同步。也就是说,当服务器vsync信号和客户端vsync信号同步和/或偏移时,服务器与客户端如何显示视频帧同步地生成和发送那些视频帧。
35.已经并入vsync信令和垂直消隐间隔(vbi)来用于当在服务器与客户端之间流式传输媒体内容时生成视频帧并显示那些视频帧。例如,服务器力图在由对应的服务器vsync信号定义的一个或若干个帧周期内生成游戏渲染的视频帧(例如,如果帧周期为16.7ms,则每个帧周期生成一个视频帧会导致60hz操作,并且在每两个帧周期生成一个视频帧会导致30hz操作),并且随后对那个视频帧进行编码并将所述视频帧传输到客户端。在客户端处,接收到的经编码的视频帧被解码和显示,其中客户端显示被渲染以供在对应的客户端vsync开始显示的每个视频帧。
36.出于说明起见,图1a示出了vsync信号111可如何指示帧周期的开始,其中可在服务器和/或客户端处在对应的帧周期期间执行各种操作。当流式传输媒体内容时,服务器可使用服务器vsync信号来生成和编码视频帧,并且客户端可使用客户端vsync信号来显示视频帧。以对应于所定义的帧周期110的定义频率生成vsync信号111,如图1b中所示。此外,vbi 105定义了当在前一帧周期期间在显示器上绘制最后一条光栅线时与当第一条光栅线(例如,顶部)被绘制到显示器时之间的时期。如图所示,在vbi 105之后,被渲染以供显示的视频帧经由光栅扫描线106(例如,从左到右逐光栅线地)进行显示。
37.此外,公开了用于诸如在流式传输媒体内容(例如,视频游戏内容)时减小源装置与目标装置之间的单向时延和/或时延不稳定性的本公开的各种实施方案。仅出于说明目的,在服务器和客户端网络配置中描述了用于减小单向时延和/或时延不稳定性的各种实施方案。然而,应理解,所公开的用于减小单向时延和/或时延不稳定性的各种技术可在其他网络配置内和/或在对等网络上实施,如在图2a至图2d中示出。例如,所公开的用于减小单向时延和/或时延不稳定性的各种实施方案可在服务器和客户端装置中的一者或多者之间以各种配置实施(例如,服务器和客户端、服务器和服务器、服务器和多个客户端、服务器和多个服务器、客户端和客户端、客户端和多个客户端等)。
38.图2a是根据本公开的一个实施方案的用于经由网络250在一个或多个云游戏网络290和/或服务器260与一个或多个客户端装置210之间以各种配置提供游戏的系统200a的图,其中可使服务器vsync信号和客户端vsync信号同步和偏移,和/或其中在客户端上执行动态缓冲,和/或其中服务器上的编码和传输操作可重叠,和/或其中客户端处的接收和解码操作可重叠,和/或其中客户端上的解码和显示操作可重叠,以减小服务器260与客户端
210之间的单向时延。具体地,根据本公开的一个实施方案,系统200a经由云游戏网络290提供游戏,其中相对于正在玩游戏的对应用户的客户端装置210(例如,瘦客户端)远程地执行所述游戏。系统200a可经由网络250以单人玩家或多玩家模式向通过云游戏网络290玩一个或多个游戏的一个或多个用户提供游戏控制。在一些实施方案中,云游戏网络290可包括在主机的管理程序上运行的多个虚拟机(vm),其中一个或多个虚拟机被配置为执行游戏处理器模块,所述游戏处理器模块利用所述主机的管理程序可用的硬件资源。网络250可包括一种或多种通信技术。在一些实施方案中,网络250可包括具有先进无线通信系统的第五代(5g)网络技术。
39.在一些实施方案中,可使用无线技术来促进通信。此类技术可包括例如5g无线通信技术。5g是第五代蜂窝网络技术。5g网络是数字蜂窝网络,其中提供商覆盖的服务区域被划分为小地理区域,该小地理区域称为小区。表示声音和图像的模拟信号在电话中被数字化,被模拟-数字转换器转换并作为位流传输。小区中的所有5g无线装置通过无线电波经由由收发器从频率池指派的频率信道与所述小区中的本地天线阵列和低功率自动收发器(传输器和接收器)进行通信,所述频率在其他小区中被再用。本地天线通过高带宽光纤或无线回程连接与电话网络和互联网连接。与在其他小区网络一样,从一个小区跨到另一小区的移动装置会自动被转移到新的小区。应理解,5g网络只是示例性类型的通信网络,并且本公开的实施方案可利用前一代无线或有线通信,以及在5g之后的后一代有线或无线技术。
40.如图所示,云游戏网络290包括游戏服务器260,所述游戏服务器提供对多个视频游戏的访问。游戏服务器260可为在所述云中可用的任何类型的服务器计算装置,并且可被配置为在一个或多个主机上执行的一个或多个虚拟机。举例来说,游戏服务器260可管理虚拟机,所述虚拟机支持将用于用户的游戏的实例具现化的游戏处理器。如此,与多个虚拟机相关联的游戏服务器260的多个游戏处理器被配置为执行与多个用户的玩游戏相关联的一个或多个游戏的多个实例。以那种方式,后端服务器支持向多个对应用户提供多个游戏应用的玩游戏的媒体(例如,视频、音频等)的流式传输。也就是说,游戏服务器260被配置为通过网络250将数据(例如,对应的玩游戏的渲染图像和/或帧)流式传输回对应的客户端装置210。以那种方式,计算上复杂的游戏应用可响应于客户端装置210接收和转发的控制器输入而在后端服务器处执行。每个服务器能够渲染图像和/或帧,然后对所述图像和/或帧进行编码(例如,压缩)并流式传输到对应的客户端装置以供显示。
41.例如,多个用户可使用被配置为接收流式传输媒体的对应客户端装置210经由通信网络250访问云游戏网络290。在一个实施方案中,客户端装置210可被配置为瘦客户端,所述瘦客户端提供与被配置为提供计算功能性(例如,包括游戏标题处理引擎211)的后端服务器(例如,云游戏网络290的游戏服务器260)的介接。在另一实施方案中,客户端装置210可配置有用于视频游戏的至少一些本地处理的游戏标题处理引擎和游戏逻辑,并且可进一步用于接收由在后端服务器执行的视频游戏生成的流式传输内容,或用于由后端服务器支持提供的其他内容。对于本地处理,游戏标题处理引擎包括用于执行视频游戏和与视频游戏相关联的服务的基本的基于处理器的功能。游戏逻辑存储在本地客户端装置210上并用于执行视频游戏。
42.具体地,对应用户(未示出)的客户端装置210被配置为经由诸如互联网的通信网络250请求访问游戏,并且渲染由游戏服务器260执行的视频游戏所生成的显示图像,其中
将经编码的图像递送到与所述对应用户相关联的客户端装置210进行显示。例如,用户可通过客户端装置210与在游戏服务器260的游戏处理器上执行的视频游戏的实例进行交互。更具体地,视频游戏的实例由游戏标题处理引擎211执行。实施视频游戏的对应游戏逻辑(例如,可执行代码)215被存储起来,并且能够通过数据存储装置(未示出)进行访问,并且用于执行视频游戏。游戏标题处理引擎211能够使用多个游戏逻辑来支持多个视频游戏,所述多个游戏逻辑中的每一者都能够由用户选择。
43.例如,客户端装置210被配置为诸如通过用于驱动玩游戏的输入命令来与和对应用户的玩游戏相关联的游戏标题处理引擎211交互。具体地,客户端装置210可接收来自各种类型的输入装置的输入,所述输入装置诸如游戏控制器、平板计算机、键盘、由摄像机捕获的手势、鼠标、触摸板等。客户端装置210可以是至少具有存储器和能够经由网络250连接到游戏服务器260的处理器模块的任何类型的计算装置。后端游戏标题处理引擎211被配置为生成渲染的图像,所述渲染的图像经由网络250进行递送,以在与客户端装置210相关联的对应显示器处显示。例如,通过基于云的服务,游戏渲染的图像可由在游戏服务器260的游戏执行引擎211上执行的对应游戏的实例来递送。也就是说,客户端装置210被配置为接收经编码的图像(例如,从通过执行视频游戏而生成的游戏渲染的图像进行编码),并且显示为显示器11渲染的图像。在一个实施方案中,显示器11包括hmd(例如,显示vr内容)。在一些实施方案中,可将渲染的图像无线地或有线地直接从基于云的服务或经由客户端装置210(例如,remote play)流式传输到智能手机或平板计算机。
44.在一个实施方案中,游戏服务器260和/或游戏标题处理引擎211包括用于执行游戏和与游戏应用相关联的服务的基本的基于处理器的功能。例如,基于处理器的功能包括2d或3d渲染、物理、物理模拟、脚本处理、音频、动画、图形处理、照明、着色、光栅化、光线追踪、阴影、剔除、变换、人工智能等。此外,游戏应用的服务包括存储器管理、多线程管理、服务质量(qos)、带宽测试、社交网络、社交朋友管理、与朋友的社交网络的通信、通信信道、文本、即时消息接发、聊天支持等。
45.在一个实施方案中,云游戏网络290是分布式游戏服务器系统和/或架构。具体地,执行游戏逻辑的分布式游戏引擎被配置为对应游戏的对应实例。一般来说,分布式游戏引擎采用游戏引擎的功能中的每一者,并且分发那些功能以供多个处理实体执行。单独的功能可进一步分布在一个或多个处理实体上。所述处理实体可被配置为不同的配置,包括物理硬件,和/或作为虚拟部件或虚拟机,和/或作为虚拟容器,其中容器不同于虚拟机,因为容器虚拟化在虚拟化操作系统上运行的游戏应用的实例。所述处理实体可利用和/或依赖服务器和云游戏网络290的一个或多个服务器(计算节点)上的它们的基础硬件,其中所述服务器可位于一个或多个机架上。由分布同步层执行对各种处理实体执行这些功能的协调、指派和管理。以那种方式,由分布同步层控制那些功能的执行,使得能够响应于玩家的控制器输入而生成游戏应用的媒体(例如,视频帧、音频等)。分布同步层能够跨分布式处理实体有效地执行(例如,通过负载平衡)那些功能,使得关键的游戏引擎部件/功能经过分发和重组以实现更有效的处理。
46.游戏标题处理引擎211包括可被配置为执行多租户gpu功能性的中央处理单元(cpu)和图形处理单元(gpu)组。在另一实施方案中,多个gpu装置经过组合以针对在对应的cpu上执行的单个应用执行图形处理。
47.图2b是根据本公开的一个实施方案的用于在两个或更多个对等装置之间提供游戏的图,其中可使vsync信号同步和偏移以实现在所述装置之间接收控制器和其他信息的最佳时序。例如,可使用通过网络250连接或通过对等通信(例如,蓝牙、局域网等)直接连接的两个或更多个对等装置来执行正面交锋游戏。
48.如图所示,在正在玩视频游戏的对应用户的客户端装置210(例如,游戏控制台)中的每一者上在本地执行游戏,其中客户端装置210通过对等连网进行通信。例如,视频游戏的实例由对应的客户端装置210的游戏标题处理引擎211执行。实施视频游戏的游戏逻辑215(例如,可执行代码)存储在对应的客户端装置210上,并且用于执行游戏。出于说明的目的,可通过便携式介质(例如,光学介质)或通过网络(例如,通过互联网从游戏提供商下载)将游戏逻辑215递送到对应的客户端装置210。
49.在一个实施方案中,对应的客户端装置210的游戏标题处理引擎211包括用于执行游戏和与游戏应用相关联的服务的基本的基于处理器的功能。例如,基于处理器的功能包括2d或3d渲染、物理、物理模拟、脚本处理、音频、动画、图形处理、照明、着色、光栅化、光线追踪、阴影、剔除、变换、人工智能等。此外,游戏应用的服务包括存储器管理、多线程管理、服务质量(qos)、带宽测试、社交网络、社交朋友管理、与朋友的社交网络的通信、通信信道、文本、即时消息接发、聊天支持等。
50.客户端装置210可从各种类型的输入装置接收输入,所述输入装置诸如游戏控制器、平板计算机、键盘、由摄像机捕获的手势、鼠标、触摸板等。客户端装置210可以是至少具有存储器和处理器模块的任何类型的计算装置,并且被配置为生成由游戏标题处理引擎211执行的渲染的图像,并且在显示器(例如,显示器11,或包括头戴式显示器(hmd)的显示器11等)上显示渲染的图像。例如,渲染的图像可与在客户端装置210上在本地执行的游戏的实例相关联,以诸如通过用于驱动游戏玩法的输入命令来实施对应用户的玩游戏。客户端装置210的一些示例包括个人计算机(pc)、游戏控制台、家庭影院装置、通用计算机、移动计算装置、平板计算机、电话或可执行游戏的实例的任何其他类型的计算装置。
51.图2c绘示了根据本公开的实施方案的受益于源装置与目标装置之间的vsync信号的适当同步和偏移的各种网络配置,包括在图2a至图2b中示出的那些配置。具体地,各种网络配置受益于用于减小服务器与客户端之间的单向时延和/或时延变化性的服务器vsync信号和客户端vsync信号的频率的适当对准,以及服务器vsync信号和客户端vsync信号的时序偏移。例如,一种网络装置配置包括云游戏服务器(例如,源)到客户端(目标)的配置。在一个实施方案中,所述客户端可包括webrtc客户端,其被配置为在网络浏览器内提供音频和视频通信。另一种网络配置包括客户端(例如,源)到服务器(目标)的配置。又一网络配置包括服务器(例如,源)到服务器(例如,目标)的配置。另一网络装置配置包括客户端(例如,源)到客户端(目标)的配置,其中例如所述客户端可各自是用以提供正面交锋游戏的游戏控制台。
52.具体地,vsync信号的对准可包括使服务器vsync信号和客户端vsync信号的频率同步,并且还可包括调谐客户端vsync信号与服务器vsync信号之间的时序偏移以用于消除漂移,和/或维持服务器vsync信号与客户端vsync信号之间的理想关系以用于减小单向时延和/或时延变化性。在一个实施方案中,为了实现适当对准,可调谐服务器vsync信号以实施服务器260和客户端210对之间的适当对准。在另一实施方案中,可调谐客户端vsync信号
以实施服务器260和客户端210对之间的适当对准。一旦客户端vsync信号和服务器vsync信号对准,服务器vsync信号和客户端vsync信号便以基本上相同的频率出现,并且彼此偏移可不时地调整的时序偏移。在另一实施方案中,vsync信号的对准可包括使两个客户端的vsync的频率同步,并且还可包括调整它们的vsync信号之间的时序偏移,以用于消除漂移和/或实现接收控制器和其他信息的最佳时序;可调谐任一vsync信号以实现此对准。在又一实施方案中,对准可包括使多个服务器的vsync的频率同步,并且还可包括使服务器vsync信号和客户端vsync信号的频率同步,以及调整客户端vsync信号与服务器vsync信号之间的时序偏移,例如,以用于正面交锋的云游戏。在服务器到客户端的配置和客户端到客户端的配置中,对准可包括服务器vsync信号与客户端vsync信号之间的频率的同步,以及提供服务器vsync信号与客户端vsync信号之间的适当的时序偏移。在服务器到服务器的配置中,对准可包括服务器vsync信号与客户端vsync信号之间的频率的同步,而不设置时序偏移。
53.图2d绘示了根据本公开的一个实施方案的受益于源装置与目标装置之间的vsync信号的适当同步和偏移的在云游戏服务器260与一个或多个客户端210之间的多租户配置。在服务器到客户端的配置中,对准可包括服务器vsync信号与客户端vsync信号之间的频率的同步,以及提供服务器vsync信号与客户端vsync信号之间的适当的时序偏移。在一个实施方案中,在多租户配置中,客户端vsync信号在每个客户端210处经过调谐,以便实施服务器260和客户端210对之间的适当对准。
54.例如,在一个实施方案中,图形子系统可被配置为执行多租户gpu功能性,其中一个图形子系统可实施用于多个游戏的图形和/或渲染管线。也就是说,图形子系统在正在执行的多个游戏之间共享。具体地,在一个实施方案中,游戏标题处理引擎可包括被配置为执行多租户gpu功能性的cpu和gpu组,其中一个cpu和gpu组可实施用于多个游戏的图形和/或渲染管线。也就是说,所述cpu和gpu组在正在执行的多个游戏之间共享。所述cpu和gpu组可被配置为一个或多个处理装置。在另一实施方案中,多个gpu装置经过组合以针对在对应的cpu上执行的单个应用执行图形处理。
55.图3绘示了在服务器处执行视频游戏以生成游戏渲染的视频帧并将那些视频帧发送到客户端进行显示的一般过程。传统上,游戏服务器260和客户端210处的许多操作是在由相应的vsync信号限定的帧周期内执行。例如,服务器260力图在由对应的服务器vsync信号311限定的一个或多个帧周期中在301处生成游戏渲染的视频帧。游戏响应于在操作350处从输入装置递送的控制信息(例如,用户的输入命令)或不是由控制信息驱动的游戏逻辑而生成视频帧。当向服务器260发送控制信息时可能存在传输抖动351,其中抖动351测量从客户端到服务器的网络时延的变化(例如,当发送输入命令时)。如图所示,粗箭头示出了当向服务器260发送控制信息时的当前时延,但由于抖动,在服务器260处可能存在控制信息的到达时间的范围(例如,由点线箭头界定的范围)。在翻转时间309处,gpu到达翻转命令,所述翻转命令指示对应的视频帧已经完全生成并被放置到服务器260的帧缓冲器中。此后,服务器260在由服务器vsync信号311限定的后续的帧周期内针对那个视频帧执行扫描输出/扫描输入(操作302,其中扫描输出可与vsync信号311对准)(出于清楚起见而省略了vbi)。随后,视频帧被编码(操作303)(例如,编码在出现vsync信号311之后开始,并且编码的结束可能不与vsync信号对准)并被传输(操作304,其中传输可能不与vsync信号311对
准)到客户端210。在客户端210处,经编码的视频帧被接收(操作305,其中接收可能不与客户端vsync信号312对准),解码(操作306,其中解码可能不与客户端vsync信号312对准),缓冲,并且显示(操作307,其中显示的开始可与客户端vsync信号312对准)。具体地,客户端210显示被渲染以在客户端vsync信号312的对应出现时开始显示的每个视频帧。
56.单向时延315可被定义为从开始将视频帧传递到服务器处的编码单元(例如,扫描输出302)到开始在客户端307处显示所述视频帧的时延。也就是说,单向时延是从服务器扫描输出到客户端显示的时间,考虑到了客户端缓冲。单独的帧具有从开始扫描输出302到完成解码306的时延,所述时延可由于诸如编码303和传输304的服务器操作、服务器260与客户端210之间的网络传输和伴随的抖动352以及客户端接收305的高度变化而在帧之间变化。如图所示,笔直粗箭头示出了当将对应的视频帧发送到客户端210时的当前时延,但是由于抖动352,客户端210处的视频帧可能存在到达时间范围(例如,由点线箭头界定的范围)。因为单向时延必须相对稳定(例如,保持相当一致)以实现良好的播放体验,所以传统上执行缓冲320,结果是具有低时延的单独帧的显示(例如,从开始扫描输出302到完成解码306)被延迟若干帧周期。也就是说,如果存在网络不稳定性或不可预测的编码/解码时间,则需要额外的缓冲,使得保持单向时延是一致的。
57.根据本公开的一个实施方案,当流式传输从在服务器上执行的视频游戏生成的视频帧时,在云游戏服务器与客户端之间的单向时延可由于时钟漂移而变化。也就是说,服务器vsync信号311和客户端vsync信号312的频率的差异可能导致客户端vsync信号相对于从服务器260到达的帧漂移。所述漂移可能是由于在服务器和客户端处的相应时钟中的每一者中使用的晶体振荡器的极微小的差异而引起。此外,本公开的实施方案通过以下操作来减小单向时延:为服务器与客户端之间的对准执行vsync信号的同步和偏移中的一者或多者;在客户端上提供动态缓冲;重叠服务器处的视频帧的编码和传输;重叠客户端处的视频帧的接收和解码;以及重叠客户端处的视频帧的解码和显示。
58.此外,在视频帧的编码(操作303)期间,在先前技术中,编码器确定正在编码的当前视频帧与一个或多个先前编码的帧之间有多少变化以确定是否存在场景变化(例如,对应的所生成的视频帧的复杂图像)。也就是说,可从将要编码的当前帧与已经编码的先前帧之间的差异来推断场景变化提示。当经由网络将内容从服务器流式传输到客户端时,服务器处的编码器可决定对被检测为场景变化的视频帧进行复杂编码。否则,编码器将以较小的复杂性对未被检测为场景变化的视频帧进行编码。然而,在编码器处检测场景变化可能要花费长达一个帧周期(例如,添加抖动),因为视频帧起初以较小的复杂性被编码(在第一帧周期中),但随后一旦确定存在场景变化便以更大的复杂性被重新编码(在第二帧周期中)。而且,可能会不必要地触发场景变化的检测(诸如通过图像中的轻微爆炸),因为即使没有场景变化,当前编码的视频帧与先前编码的视频帧之间的差异也可能超过阈值差异值。因此,当在编码器处检测到场景变化时,在编码器处引入了由于抖动而引起的额外时延,以适应执行场景变化检测以及更复杂地重新编码视频帧。
59.图4绘示了根据本公开的实施方案的当流式传输从在服务器上执行的视频游戏生成的流视频帧时通过包括高度优化的云游戏服务器260和高度优化的客户端210的网络配置的数据流,其中重叠的服务器操作和客户端操作减小了单向时延,并且使服务器与客户端之间的vsync信号同步和偏移减小了单向时延并且减小了服务器与客户端之间的单向时
延的变化性。具体地,图4示出了服务器vsync信号与客户端vsync信号之间的期望的对准。在一个实施方案中,诸如在服务器和客户端网络配置中,执行对服务器vsync信号311的调谐以获得服务器vsync信号与客户端vsync信号之间的适当对准。在另一实施方案中,诸如在多租户服务器到多个客户端网络配置中,执行对客户端vsync信号312的调谐以获得服务器vsync信号与客户端vsync信号之间的适当对准。出于说明的目的,在图4中描述了对服务器vsync信号311的调谐来用于使服务器vsync信号和客户端vsync信号的频率同步,和/或调整对应的客户端vsync信号与服务器vsync信号之间的时序偏移,但应理解,还可使用客户端vsync信号312来用于调谐。在本专利的上下文中,“同步”应理解为是指调谐信号使得它们的频率匹配,但相位可能不同;“偏移”应理解为是指信号之间的时间延迟,例如,在一个信号达到其最大值时与在另一信号达到其最大值时之间的时间。
60.如图所示,图4绘示了在本公开的实施方案中在服务器处执行视频游戏以生成渲染的视频帧并将那些视频帧发送到客户端进行显示的改进过程。所述过程是关于在服务器和客户端处生成和显示单个视频帧而示出。具体地,服务器在401处生成游戏渲染的视频帧。例如,服务器260包括被配置为执行游戏的cpu(例如,游戏标题处理引擎211)。cpu生成对视频帧的一个或多个绘制调用,其中绘制调用包括放置到命令缓冲器中以供服务器260的对应gpu在图形管线中执行的命令。所述图形管线可包括在场景内的对象的顶点上的用以生成为视频帧渲染的纹理值进行显示的一个或多个着色器程序,其中为了效率而通过gpu并行地执行操作。在翻转时间409处,gpu到达命令缓冲器中的翻转命令,所述翻转命令指示对应的视频帧已经完全生成和/或渲染并且被放置到服务器260处的帧缓冲器中。
61.在402处,服务器执行将游戏渲染的视频帧扫描输出到编码器。具体地,逐扫描线地或以连续扫描线组执行扫描输出,其中扫描线是指例如显示器的从屏幕边缘到屏幕边缘的单个水平线。这些扫描线或连续扫描线组有时被称为切片,并且在本说明书中被称为屏幕切片。具体地,扫描输出402可包括修改游戏渲染的帧的多个过程,包括用另一帧缓冲器覆盖游戏渲染的帧,或者收缩游戏渲染的帧以使其被来自另一帧缓冲器的信息包围。在扫描输出402期间,然后将修改后的视频帧扫描到编码器中进行压缩。在一个实施方案中,在vsync信号311的出现311a时执行扫描输出402。在其他实施方案中,可在vsync信号311出现之前,例如在翻转时间409处,执行扫描输出402。
62.在403处,在编码器处逐编码器切片地对游戏渲染的视频帧(其可能已经历修改)进行编码以生成一个或多个经编码切片,其中经编码切片与扫描线或屏幕切片不相关。因此,编码器生成一个或多个经编码(例如,经压缩)切片。在一个实施方案中,编码过程在针对对应的视频帧的扫描输出402过程已经完全完成之前开始。此外,编码403的开始和/或结束可以与或可以不与服务器vsync信号311对准。经编码切片的边界不限于单个扫描线,并且可包括单个扫描线或多个扫描线。此外,经编码切片的结束和/或下一个编码器切片的开始可不一定出现在显示屏的边缘处(例如,可能出现在屏幕中间的某处或出现在扫描线的中间),使得经编码切片不需要完全从显示屏幕的边缘横越到边缘。如图所示,一个或多个经编码切片可被压缩和/或编码,包括被压缩的具有散列标记的“经编码切片a”。
63.在404处,将经编码的视频帧从服务器传输到客户端,其中可逐经编码切片地进行所述传输,其中每个经编码切片是已经被压缩的编码器切片。在一个实施方案中,传输过程404在针对对应的视频帧的编码过程403已经完全完成之前开始。此外,传输404的开始和/
或结束可以与或可以不与服务器vsync信号311对准。如图所示,被压缩的经编码切片a独立于渲染的视频帧的其他被压缩的编码器切片而被传输到客户端。可一次一个地或者并行地传输编码器切片。
64.在405处,客户端再次逐经编码切片地接收被压缩的视频帧。此外,接收405的开始和/或结束可以与或可以不与客户端vsync信号312对准。如图所示,客户端接收被压缩的经编码切片a。在服务器260与客户端210之间可能存在传输抖动452,其中抖动452测量从服务器260到客户端210的网络时延的变化。较低的抖动值展现出更稳定的连接。如图所示,粗的笔直箭头示出了当将对应的视频帧发送到客户端210时的当前时延,但是由于抖动,客户端210处的视频帧可能存在到达时间范围(例如,由点线箭头界定的范围)。时延的变化也可能是由于服务器处的一个或多个操作,诸如编码403和传输404,以及在将视频帧传输到客户端210时引入时延的网络问题。
65.在406处,客户端再次逐经编码切片地对被压缩的视频帧进行解码,从而产生现在准备好显示的被解码的切片a(示出为不具有散列标记)。在一个实施方案中,解码过程406在针对对应的视频帧的接收过程405已经完全完成之前开始。此外,解码406的开始和/或结束可以与或可以不与客户端vsync信号312对准。在407处,客户端在客户端处的显示器上显示被解码的渲染的视频帧。也就是说,例如,被解码的视频帧被放置在显示缓冲器中,所述显示缓冲器逐扫描线地向显示装置流输出。在一个实施方案中,显示过程407(即,向显示装置的流输出)在针对对应的视频帧的解码过程406已经完全完成之后开始,即,被解码的视频帧完全驻留在显示缓冲器中。在另一实施方案中,显示过程407在针对对应的视频帧的解码过程406已经完全完成之前开始。即,向显示装置的流输出在解码帧缓冲器的仅一部分驻留在显示缓冲器中时从显示缓冲器的地址开始。然后及时地使用对应的视频帧的其余部分更新或填满显示缓冲器进行显示,使得在向显示器流输出那些部分之前执行对显示缓冲器的更新。此外,显示器407的开始和/或结束与客户端vsync信号312对准。
66.在一个实施方案中,服务器260与客户端210之间的单向时延416可被定义为在扫描输出402开始时与在显示407开始时之间的流逝时间。本公开的实施方案能够对准服务器与客户端之间的vsync信号(例如,使频率同步并且调整偏移),以减小服务器与客户端之间的单向时延,并且减小服务器与客户端之间的单向时延的变化性。例如,本公开的实施方案能够计算出对服务器vsync信号311与客户端vsync信号312之间的偏移430的最佳调整,使得甚至在接近最坏情况的诸如编码403和传输404的服务器处理所需的时间、接近最坏情况的服务器260与客户端210之间的网络时延以及接近最坏情况的诸如接收405和解码406的客户端处理的情况下,被解码的渲染的视频帧也可及时用于显示过程407。也就是说,不需要确定服务器vsync与客户端vsync之间的绝对偏移;调整偏移使得被解码的渲染的视频帧可及时用于显示过程便足够。
67.具体地,服务器vsync信号311和客户端vsync信号312的频率可通过同步进行对准。通过调谐服务器vsync信号311或客户端vsync信号312来实现同步。出于说明的目的,关于服务器vsync信号311来描述调谐,但应理解,可替代地对客户端vsync信号312执行调谐。例如,如图4中所示,服务器帧周期410(例如,服务器vsync信号311的两次出现311c和311d之间的时间)基本上等于客户端帧周期415(例如,客户端vsync信号312的两次出现312a和312b之间的时间),这指示服务器vsync信号311和客户端vsync信号312的频率也基本上相
等。
68.为了维持服务器vsync信号和客户端vsync信号的频率的同步,可操纵服务器vsync信号311的时序。例如,可在一段时期内增加或减小服务器vsync信号311中的垂直消隐间隔(vbi),以便考虑服务器vsync信号311与客户端vsync信号312之间的漂移。操纵vbi中的垂直消隐(vblank)线提供了在服务器vsync信号311的一个或多个帧周期期间调整用于vblank的扫描线的数目。丢弃vblank的所述数目的扫描线会减小服务器vsync信号311的两次出现之间的对应的帧周期(例如,时间间隔)。相反,增加vblank的所述数目的扫描线会增加vsync信号311的两次出现之间的对应的帧周期(例如,时间间隔)。以那种方式,调整服务器vsync信号311的频率以使客户端vsync信号311与服务器vsync信号312之间的频率对准为基本上相同的频率。而且,可通过在短时期内增加或减小vbi来调整服务器vsync信号与客户端vsync信号之间的偏移,然后使所述vbi返回到其原始值。在一个实施方案中,调整服务器vbi。在另一实施方案中,调整客户端vbi。在又一实施方案中,不是两个装置(服务器和客户端),而是存在多个连接的装置,所述装置中的每一者可具有被调整的对应vbi。在一个实施方案中,所述多个连接的装置中的每一者可以是独立的对等装置(例如,不具有服务器装置)。在另一实施方案中,所述多个装置可包括被布置成一个或多个服务器/客户端架构、多租户服务器/客户端架构或其某一组合的一个或多个服务器装置和/或一个或多个客户端装置。
69.可替代地,在一个实施方案中,可操纵服务器的像素时钟(例如,位于服务器的北桥/南桥核心逻辑芯片组的南桥处,或者在分立的gpu的情况下,其使用其自身的硬件自行生成像素时钟)以在一段时期内对服务器vsync信号311的频率执行粗调和/或细调,以使服务器vsync信号311与客户端vsync信号312之间的频率的同步回到对准。具体地,可将服务器的南桥中的像素时钟超频或降频以调整服务器的vsync信号311的总频率。以那种方式,调整服务器vsync信号311的频率以使客户端vsync信号311与服务器vsync信号312之间的频率对准为基本上相同的频率。可通过在短时期内增加或减小客户端服务器像素时钟来调整服务器vsync与客户端vsync之间的偏移,然后使像素时钟返回到其原始值。在一个实施方案中,调整服务器像素时钟。在另一实施方案中,调整客户端像素时钟。在又一实施方案中,不是两个装置(服务器和客户端),而是存在多个连接的装置,所述装置中的每一者可具有被调整的对应的像素时钟。在一个实施方案中,所述多个连接的装置中的每一者可以是独立的对等装置(例如,不具有服务器装置)。在另一实施方案中,所述多个连接的装置可包括被布置成一个或多个服务器/客户端架构、多租户服务器/客户端架构或其某一组合的一个或多个服务器装置以及一个或多个客户端装置。
70.在一个实施方案中,可使用高性能编解码器(例如,编码器和/或解码器)来进一步减小云游戏服务器与客户端之间的单向时延。在涉及压缩媒体的流式传输的传统流式传输系统(例如,流式传输电影、电视节目、视频等)中,当在末端目标(例如,客户端)处将流式传输媒体解压缩时,可能在客户端处缓冲大量的解压缩视频以适应编码操作的变化(例如,较长的编码时间)、传输质量侵入抖动的变化和解码操作的变化(例如,较长的解码时间)。因此,在传统的流式传输系统中,有可能依赖平均解码能力和度量(例如,平均解码资源),因为对解码内容的缓冲适应了时延变化性,使得可以以期望的速率显示视频帧(例如,支持60hz下的4k媒体,或在每次出现客户端vsync信号时显示视频帧)。
71.然而,在云游戏环境中缓冲极其受限制(例如,倾向于零缓冲),使得可实现实时游戏。因此,在云游戏服务器与客户端之间的单向时延中引入的任何变化性都可能不利地影响下游操作。例如,花费较长的时间来编码和/或解码复杂的帧,即便是单个帧,也会导致对应更高的单向时延,这最终会增加对用户的响应时间,并且不利地影响用户的实时体验。
72.在一个实施方案中,对于云游戏,提供与流视频应用的需求相比似乎是不必要的更强大的解码和编码资源是有益的。此外,应针对处置需要较长或最长处理的帧的时间来优化编码器资源,如将在下文更全面地描述。也就是说,在实施方案中,可对编码器进行调谐以改善云游戏系统中的单向时延与视频质量之间的权衡,其中编码器调谐可基于对客户端带宽、跳过的帧、经编码的i帧的数目、场景变化的数目和/或超过目标帧大小的视频帧的数目的监测,其中经过调谐的参数可包括编码器位速率、目标帧大小、最大帧大小和量化参数(qp)值,其中高性能编码器和解码器有助于减小云游戏服务器与客户端之间的总单向时延。
73.通过对图2a至图2d的各种客户端装置210和/或云游戏网络290(例如,在游戏服务器260中)的详细描述,图5的流程图500绘示了根据本公开的一个实施方案的用于云游戏的方法,其中对视频帧的编码包括在了解网络传输速度和可靠性以及总时延目标的情况下调谐编码器参数。云游戏服务器被配置为经由网络将内容流式传输到一个或多个客户端装置。此过程提供了更平滑的帧速率和更可靠的时延,使得减小云游戏服务器与客户端之间的单向时延并使所述单向时延更一致,进而提高了客户端显示视频的流畅度。
74.在510处,当在云游戏服务器处执行视频游戏时生成多个视频帧。一般来说,云游戏服务器生成多个游戏渲染的视频帧。例如,视频游戏的游戏逻辑建立在游戏引擎或游戏标题处理引擎之上。所述游戏引擎包括可由游戏逻辑用来构建视频游戏的游戏环境的核心功能性。例如,游戏引擎的一些功能性可包括用于模拟游戏环境中的对象上的物理力和碰撞的物理引擎、用于2d或3d图形的渲染引擎、碰撞检测、声音、动画、人工智能、连网、流式传输等。以那种方式,游戏逻辑不必从头开始构建游戏引擎所提供的核心功能性。
75.由cpu和gpu执行游戏逻辑与游戏引擎的组合,其中cpu和gpu可被配置在加速处理单元(apu)内。也就是说,cpu和gpu连同共享的存储器可被配置为用于生成游戏渲染的视频帧的渲染管线,使得所述渲染管线将游戏渲染的图像输出为适合于显示的视频或图像帧,包括目标和/或虚拟化显示器中的像素中的每一者的对应的色彩信息。具体地,cpu可被配置为生成对视频帧的一个或多个绘制调用,每个绘制调用包括存储在对应的命令缓冲器中的由gpu在gpu管线中执行的命令。一般来说,图形管线可对场景内的对象的顶点执行着色器操作以生成显示器的像素的纹理值。具体地,图形管线接收输入几何图形(例如,游戏环境中的对象的顶点),并且顶点着色器构建构成对象的图元或多边形。顶点着色器程序可对图元执行照明、着色、阴影和其他操作。执行深度或z缓冲以确定在从对应视角渲染时哪些对象是可见的。执行光栅化以将3d游戏环境中的对象投影到由所述视角限定的2d平面。生成所述对象的像素大小的片元,其中一个或多个片元可对图像的像素的色彩做贡献。片元可经过合并和/或混合以确定对应视频中的像素中的每一者的组合色彩,并且可存储在帧缓冲器中。使用类似配置的命令缓冲器生成和/或渲染后续的视频帧以供显示,其中从gpu管线输出多个视频帧。
76.在520处,所述方法包括以某一编码器位速率编码多个视频帧。具体地,所述多个
视频帧被扫描到编码器中进行压缩,之后使用在应用层处操作的流式传输器被流式传输到客户端。在一个实施方案中,可将游戏渲染的视频帧中的每一者与额外的用户界面特征合成并混合为对应的修改后的视频帧,然后将所述修改后的视频帧扫描到编码器中,其中编码器压缩修改后的视频帧以便流式传输到客户端。出于简明和清晰起见,在图5中公开的调谐编码器参数的方法是参考编码多个视频帧来描述的,但应理解为支持对修改后的视频帧的编码。编码器被配置为基于所描述的格式来压缩多个视频帧。例如,当将媒体内容从云游戏服务器流式传输到客户端时,可实施运动图片专家组(mpeg)或h.264标准。具体地,编码器可通过视频帧或者通过视频帧的编码器切片来执行压缩,其中每个视频帧可被压缩为一个或多个经编码切片,如先前描述。一般来讲,在流式传输媒体时,可将视频帧压缩为i帧(帧内帧)或p帧(预测帧),其中的每一者都可被分割为经编码切片。
77.在530处,测量客户端的最大接收带宽。在一个实施方案中,客户端所经历的最大带宽是通过来自客户端的反馈机制来确定的。图6绘示了根据本公开的一个实施方案的通过云游戏服务器的流式传输器来测量客户端210的带宽,其中所述流式传输器620被配置为监测和调谐编码器610,使得可以以在客户端的所测得的带宽内的速率传输经过压缩的视频帧。如图所示,经过压缩的视频帧、经编码切片和/或包被从编码器610递送到缓冲器630(例如,先入/先出-fifo)。编码器以编码器填充速率615递送被压缩的视频帧。例如,可像编码器能够生成被压缩的视频帧、经编码切片650和/或经编码切片的包655那么快地填充缓冲器。此外,被压缩的视频帧以缓冲器排出速率635从缓冲器排出,以经由网络250递送到客户端210。在一个实施方案中,根据客户端的所测得的最大接收带宽来动态地调谐缓冲器排出速率635。例如,可将缓冲器排出速率635调整为大致等于客户端的所测得的最大接收带宽。在一个实施方案中,以传输包的相同速率执行对包的编码,使得两种操作都根据客户端可用的最大可用带宽来动态地调谐。
78.具体地,在应用层处操作的流式传输器620诸如使用带宽测试器625来测量客户端210的最大带宽。在用于经由互联网将网络装置互连的协议的用户数据报协议/互联网协议(udp/ip)组中使用所述应用层。例如,所述应用层定义了用于经由ip通信网络在装置之间进行通信的通信协议和接口方法。在测试期间,流送器620提供额外缓冲的包640(例如,前向纠错-fec-包),使得缓冲器630可以预先限定的位速率(诸如所测试的最大带宽)流输出包。在一个实施方案中,客户端将其已经在诸如视频帧范围的递增序列标识符(id)的范围内接收的包的数目作为反馈690返回到流式传输器620。例如,客户端可报告某物,比如接收到针对序列id 100到250(例如,150个视频帧)的150个视频帧中的145个视频帧。因此,服务器260处的流式传输器620能够计算丢包率,并且由于流式传输器620知道在那个包序列期间曾发送(例如,作为测试)的带宽量,所以流式传输器620可以动态地确定客户在特定时刻的最大带宽是多少。客户端的所测得的最大带宽可作为控制信息627从流式传输器620递送到缓冲器630,使得缓冲器630可以以大致等于客户端的最大带宽的速率动态地传输包。因此,可根据客户端的当前所测得的最大带宽动态地调整被压缩的视频帧、经编码切片和/或包的传输速率。
79.在540处,由流式传输器监测编码过程。也就是说,监测对多个视频帧的编码。在一个实施方案中,在客户端210处执行监测,其中将反馈和/或调谐控制信号提供回编码器。在另一实施方案中,在云游戏服务器260处诸如由流式传输器620执行所述监测。例如,对视频
帧的编码的监测可由流式传输器620的监测与调谐单元629执行。可跟踪和/或监测各种编码特性和/或操作。例如,在一个实施方案中,可跟踪和/或监测多个视频帧内的i帧的发生率。此外,在一个实施方案中,可跟踪和/或监测多个视频帧内的场景变化的发生率。而且,在一个实施方案中,可跟踪和/或监测超过目标帧大小的视频帧的数目。而且,在一个实施方案中,可跟踪和/或监测用于编码一个或多个视频帧的编码器位速率。
80.在550处,基于对视频帧的编码的监测来动态地调谐编码器的参数。也就是说,对视频帧的编码的监测将影响编码器在压缩在所述编码器处接收的当前视频帧和未来视频帧时的操作方式。具体地,监测与调谐单元629被配置为响应于对视频帧的编码的监测以及对监测的信息执行的分析来确定应调谐哪些编码器参数。控制信号621从监测与调谐单元629被递送回编码器610,所述控制信号用于配置所述编码器。用于调谐的编码器参数包括量化参数(qp)(例如,minqp、maxqp)或质量参数、目标帧大小、最大帧大小等。
81.在了解网络传输速度和可靠性以及总时延目标的情况下执行调谐。在一个实施方案中,相比于低时延或图像质量,偏向视频回放的流畅度。例如,停用对一个或多个视频帧的跳过编码。具体地,使用各种编码器参数来调谐图像分辨率或质量(例如,在60hz下)与时延之间的平衡。具体地,因为云游戏服务器和客户端处的vsync信号可经过同步和偏移,所以可减小云游戏服务器与客户端之间的单向时延,进而减少跳过视频帧以促进低时延的需求。vsync信号的同步和偏移还提供了云游戏服务器处的重叠操作(扫描输出、编码和传输);客户端处的重叠操作(接收、解码、渲染、显示);和/或云游戏服务器和客户端处的重叠操作,所有这些都促进减小单向时延、减小单向时延的变化性、视频内容的实时生成和显示以及客户端处的一致的视频回放。
82.在一个实施方案中,在考虑到即将到来的帧及其复杂性(例如,所预测的场景变化)的情况下监测编码器位速率以预期对客户端带宽的需求,并且其中可根据预期需求来调整所述编码器位速率。例如,当偏向视频回放的流畅度时,编码器监测与调谐单元629可被配置为确定所使用的编码器位速率超过所测得的最大接收带宽。作为响应,可降低编码器位速率,使得还可降低帧大小。当偏向流畅度时,希望使用低于最大接收带宽的编码器位速率(例如,对于每秒15兆位的最大接收带宽,编码器位速率是每秒10兆位)。以那种方式,如果经编码帧尖急剧增加到高于最大帧大小,则仍然可在60hz(赫兹)内发送出所述经编码帧。具体地,可将编码器位速率转换为帧大小。视频游戏的给定的位速率和目标速度(例如,每秒60帧)将转换为经编码的视频帧的平均大小。例如,在每秒15兆位的编码器位速率和每秒60帧的给定目标速度下,其中60个经编码帧共享15兆位,使得每个经编码帧具有约250k的经编码位。因此,控制编码器位速率也将控制经编码的视频帧的帧大小,使得增加编码器位速率给出较多的用于编码的位(精确更高),而减小编码器位速率给出较少的用于编码的位(精度更低)。类似地,当用于编码一组视频帧的编码器位速率在所测得的最大接收带宽内时,可以增加编码器位速率,使得还可以增加帧大小。
83.在一个实施方案中,当偏向视频回放的流畅度时,编码器监测与调谐单元629可被配置为确定编码来自多个视频帧的一组视频帧所使用的编码器位速率超过所测得的最大接收带宽。例如,可检测到所述编码器位速率是15兆位/秒(mbps),而最大接收带宽当前可为10mbps。以那种方式,编码器在不增加单向时延的情况下推送出比可传输到客户端的位更多的位。如先前介绍,当偏向流畅度时,可能需要使用低于最大接收带宽的编码器位速
率。在以上示例中,对于上面介绍的每秒10兆位的最大接收带宽,将编码器位速率设置为等于或低于每秒10兆位是可接受的。以那种方式,如果经编码帧急剧增加到高于最大帧大小,则仍然可在60hz(赫兹)内发送出所述经编码帧。作为响应,可在降低或不降低编码器位速率的情况下调谐qp值,其中qp控制在压缩视频帧时使用的精度。也就是说,qp控制执行多少量化(例如,将视频帧中的可变范围的值压缩成单个量子值)。在h.264中,qp的范围是“0”到“51”。例如,为“0”的qp值意味着较少的量化、较少的压缩、较高的精度和较高的质量。为“51”的qp值意味着较多的量化、较多的压缩、较低的精度和较低的质量。具体地,可增加qp值,使得以较低的精度执行视频帧的编码。
84.在一个实施方案中,当偏向视频回放的流畅度时,监测与调谐单元629进行的编码器监测可被配置为确定编码来自多个视频帧的一组视频帧所使用的编码器位速率在最大接收带宽内。如先前介绍,当偏向流畅度时,可能需要使用低于最大接收带宽的编码器位速率。因此,在发送视频帧组时存在多余的可用带宽。可确定多余的带宽。作为响应,可调谐qp值,其中qp控制在压缩视频帧时使用的精度。具体地,可基于多余的带宽而减小qp值,使得以更高的精度执行编码。
85.在另一实施方案中,在决定i帧处置和qp设置时,尤其是在偏向视频回放的流畅度时考虑单独的视频游戏的特性。例如,如果视频游戏具有不频繁的“场景变化”(例如,只有镜头切换),则允许i帧变得较大(低qp或较高的编码器位速率)可为合意的。也就是说,在来自被压缩的多个视频帧的一组视频帧内,确定被识别为具有场景变化的视频帧的数目低于场景变化的阈值数目。也就是说,流式传输系统可在当前条件(例如,所测得的客户端带宽、所需的时延等)下处置所述数目的场景变化。作为响应,可调谐qp值,其中qp控制在压缩视频帧时使用的精度。具体地,可减小qp值,使得以较高的精度执行编码。
86.另一方面,如果视频游戏在玩游戏期间具有频繁的“场景变化”,则保持i帧大小较小(例如,qp高或较低的编码器位速率)可为合意的。也就是说,在来自被压缩的多个视频帧的一组视频帧内,确定被识别为具有场景变化的视频帧的数目满足或超过场景变化的阈值数目。也就是说,视频游戏在当前条件(例如,所测得的客户端带宽、所需的时延等)下生成了太多的场景变化。作为响应,可调谐qp值,其中qp控制在压缩视频帧时使用的精度。具体地,可增加qp值,使得以较低的精度执行编码。
87.在另一实施方案中,在决定i帧处置和qp设置时,尤其是在偏向视频回放的流畅度时,可以考虑编码模式。例如,如果编码器不经常生成i帧,则允许i帧变得较大(低qp或较高的编码器位速率)可为合意的。也就是说,在来自被压缩的多个视频帧的一组视频帧内,被压缩为i帧的视频帧的数目落入i帧的阈值数目内或低于所述阈值数目。也就是说,流式传输系统可在当前条件(例如,所测得的客户端带宽、所需的时延等)下处置所述数目的i帧。作为响应,可调谐qp值,其中qp控制在压缩视频帧时使用的精度。具体地,可减小qp值,使得以较高的精度执行编码。
88.如果编码器频繁地生成i帧,则保持i帧大小较小(例如,qp高,或较低的编码器位速率)可为合意的。也就是说,在来自被压缩的多个视频帧的一组视频帧内,被压缩为i帧的视频帧的数目满足或超过i帧的阈值数目。也就是说,视频游戏在当前条件(例如,所测得的客户端带宽、所需的时延等)下生成了太多的i帧。作为响应,可调谐qp值,其中qp控制在压缩视频帧时使用的精度。具体地,可增加qp值,使得以较低的精度执行编码。
89.在另一实施方案中,在转动编码器时,尤其是在偏向视频回放的流畅度时,可以考虑编码模式。例如,如果编码器经常低于目标帧大小,则允许目标帧大小变得更大可为合意的。也就是说,在来自被压缩并且以某一传输速率传输的多个视频帧的一组视频帧内,确定视频帧的数目低于阈值。所述数目的视频帧中的每一者都在目标帧大小内(即,等于或小于目标帧大小)。作为响应,增加目标帧大小和最大帧大小中的至少一者。
90.另一方面,如果编码器经常高于目标帧大小,则允许目标帧大小变得更小可为合意的。也就是说,在来自被压缩并且以某一传输速率传输的多个视频帧的一组视频帧内,确定视频帧的数目满足或超过阈值。所述数目的视频帧中的每一者超过目标帧大小。作为响应,降低目标帧大小和最大帧大小中的至少一者。
91.图7a是绘示根据本公开的一个实施方案的设置编码器的量化参数(qp)以优化客户端处的质量和缓冲器利用率的图。曲线图700a示出了所生成的每个帧在垂直方向上的帧大小(以字节为单位),如在水平方向上示出。目标帧大小和最大帧大小是静态的。具体地,线711示出了最大帧大小,并且线712示出了目标帧大小,其中最大帧大小高于目标帧大小。如曲线图700a中示出,存在包括超过线712的目标帧大小的被压缩的视频帧的多个峰。超过目标帧大小的视频帧有引入回放抖动的风险(例如,增加单向时延),因为它们可能要一个以上帧周期来用于编码和/或从云游戏服务器进行传输。
92.曲线图700b示出了在已经基于目标帧大小、最大帧大小、qp范围(例如,minqp和maxqp)而设置qp以优化客户端处的编码质量和缓冲器利用率之后的编码器响应。例如,可基于对编码器位速率、场景变化频率和i帧生成频率的编码器监测来调整和/或调谐qp,如先前描述。曲线图700b示出了所生成的每个帧在垂直方向上的帧大小(以字节为单位),如在水平方向上示出。线712的目标帧大小和线711的最大帧大小保持在与曲线图700a中相同的位置。在qp调谐和/或调整之后,与曲线图700a相比,包括超过线712的目标帧大小的被压缩的视频帧的峰的数目有所减小。也就是说,已对qp进行调谐以针对当前条件(例如,所测得的客户端带宽、所需的时延等)优化对视频帧的编码(即,落入目标帧大小内)。
93.图7b是绘示根据本公开的一个实施方案的调谐目标帧大小、最大帧大小和/或qp(例如,minqp和/或maxqp)编码器设置以减少超过客户端所支持的真实目标帧大小的i帧的出现的图。例如,可基于对编码器位速率、场景变化频率和i帧生成频率的编码器监测来调整和/或调谐qp,如先前描述。
94.曲线图720a示出了所生成的每个帧在垂直方向上的帧大小(以字节为单位),如在水平方向上示出。出于说明的目的,图7b的曲线图720a和图7a的曲线图700a可反映类似的编码器条件并且用于编码器调谐。在曲线图720a中,目标帧大小和最大帧大小是静态的。具体地,线711示出了最大帧大小,并且线712示出了目标帧大小,其中最大帧大小高于目标帧大小。如曲线图720a中示出,存在包括超过线712的目标帧大小的被压缩的视频帧的多个峰。超过目标帧大小的视频帧有引入回放抖动的风险(例如,增加单向时延),因为它们可能要一个以上帧周期来用于编码和/或从云游戏服务器进行传输。例如,达到线711处的最大帧大小的峰可以是要16ms以上才能发送到客户端的i帧,这会由于增加了云游戏服务器与客户端之间的单向时延而引起回放抖动。
95.曲线图720b示出了在目标帧大小和/或最大帧大小中的至少一者已被调谐以减少超过由客户端支持的真实目标帧大小的i帧的出现之后的编码器响应。真实目标帧大小可
基于所测得的客户端带宽和/或编码器监测来调整,所述编码器监测包括对编码器位速率、场景变化的频率和i帧生成的频率的监测,如先前描述。
96.曲线图720b示出了所生成的每个帧在垂直方向上的帧大小(以字节为单位),如在水平方向上示出。与曲线图720a相比,线712'的目标帧大小和线711'的最大帧大小的值已降低。例如,线712'的目标帧大小的值已从线712降低,并且线711'的最大帧大小的值已从线711降低。在调谐了目标帧大小和/或最大帧大小之后,超过目标帧大小712'的被压缩的视频帧的峰的最大大小得以减小以实现更佳的传输。此外,与曲线图700a相比,包括超过目标帧大小712'的被压缩的视频帧的峰的数目也已减小。例如,在曲线图720b中仅示出了一个峰。也就是说,已对目标帧大小和/或最大帧大小进行调谐以针对当前条件(例如,所测得的客户端带宽、所需的时延等)优化对视频帧的编码(即,落入目标帧大小内)。
97.通过对图2a至图2d的各种客户端装置210和/或云游戏网络290(例如,在游戏服务器260中)的详细描述,图8的流程图800绘示了根据本公开的一个实施方案的用于云游戏的方法,其中对视频帧的编码包括当编码运行时间长时或当所生成的视频帧较大时(诸如当编码i帧时)决定何时跳过视频帧或延迟对视频帧的编码和传输。具体地,跳过视频帧的决定是在了解网络传输速度和可靠性以及总时延目标的情况下作出的。此过程提供了更平滑的帧速率和更可靠的时延,使得减小云游戏服务器与客户端之间的单向时延并使所述单向时延更一致,进而提高了客户端显示视频的流畅度。
98.在810处,当在以流式传输模式操作的云游戏服务器处执行视频游戏时生成多个视频帧。一般来说,云游戏服务器生成多个游戏渲染的视频帧。例如,已经在图5的510处描述了游戏渲染的视频帧的生成,并且所述生成适用于图8中的视频帧的生成。例如,视频游戏的游戏逻辑建立在游戏引擎或游戏标题处理引擎之上。由cpu和gpu执行游戏逻辑与游戏引擎的组合,其中cpu和gpu连同共享的存储器可被配置为用于生成游戏渲染的视频帧的渲染管线,使得所述渲染管线将游戏渲染的图像输出为适合于显示的视频或图像帧,包括目标和/或虚拟化显示器中的像素中的每一者的对应的色彩信息。
99.在820处,预测视频游戏的第一视频帧的场景变化。其中在生成第一视频帧之前预测所述场景变化。在一个实施方案中,当cpu正在执行视频游戏时,可使游戏逻辑知晓场景变化。例如,游戏逻辑或附加逻辑可包括在生成视频帧时预测场景变化的代码(例如,场景变化逻辑),诸如预测一系列视频帧包括至少一个场景变化,或者预测特定视频帧是场景变化。具体地,被配置为进行场景变化预测的游戏逻辑或附加逻辑分析在执行视频游戏期间收集的游戏状态数据,以诸如在接下来x数目个帧(例如,范围)中或针对所识别的视频帧而确定和/或预期和/或预测何时存在场景变化。例如,当人物在虚拟化游戏环境中从一个场景移动到另一场景时,或者当人物已经结束一个关卡并且在视频游戏中转变到另一关卡时,当在两个视频帧之间在场景之间转变时(例如,电影一组镜头中的场景变化,或在一系列菜单之后开始交互式玩游戏)等,可预测场景变化。可通过包括虚拟化游戏世界或环境的大而复杂的场景的视频帧来表示场景变化。
100.游戏状态数据可定义游戏在那时的状态,并且可包括游戏人物、游戏对象、游戏对象属性、游戏属性、游戏对象状态、图形覆盖、人物在玩家玩游戏的游戏世界内的位置、玩游戏的场景或游戏环境、游戏应用的级别、人物的资产(例如,武器、工具、炸弹等)、装备、人物的技能集合、游戏关卡、人物属性、人物位置、剩余生命数、总的可能的可用生命数、盔甲、奖
杯、时间计数器值和其他资产信息等。以那种方式,游戏状态数据允许生成在视频游戏中的对应点处存在的游戏环境。
101.在830处,生成场景变化提示,并且将场景变化提示发送到编码器,其中所述提示指示第一视频帧是场景变化。如此,可向编码器提供即将到来的场景变化的通知,使得编码器可在压缩所识别的视频帧时调整其编码操作。可通过用于在部件之间或在云游戏服务器260的部件上运行的应用之间通信的api来递送作为场景变化提示而提供的通知。在一个实施方案中,api可以是gpu api。例如,所述api可在被配置为检测场景变化以与编码器通信的游戏逻辑和/或附加逻辑上运行或被其调用。在一个实施方案中,场景变化提示可作为数据控制包提供,所述数据控制包被格式化为使得接收所述数据控制包的所有部件都能够理解在所述数据控制包中包括什么类型的信息,并且理解对对应的渲染的视频帧的适当参考。在一个实施方式中,可在用于视频游戏的对应的软件开发工具包(sdk)中定义用于api的通信协议、用于数据控制包的格式化。
102.在840处,将第一视频帧递送到编码器。如先前描述,游戏生成的视频帧可与额外的用户界面特征合成并混合为修改后的视频帧,所述修改后的视频帧被扫描到编码器。所述编码器被配置为基于期望的格式来压缩第一视频帧,所述格式诸如用于将媒体内容从云游戏服务器流式传输到客户端的mpeg或h.264标准。在流式传输时,视频帧被编码为p帧,直到出现场景变化或者在当前经编码帧不再可参考关键帧(例如,前一个i帧)时,使得下一个视频帧然后被编码为另一i帧。在这种情况下,第一视频帧基于场景变化提示而被编码为i帧,其中所述i帧可在不参考任何其他视频帧(例如,独立作为关键图像)的情况下被编码。
103.在850处,测量客户端的最大接收带宽。如先前描述,客户端所经历的最大带宽可通过来自客户端的反馈机制来确定,如图5和图6的操作530中所绘示。具体地,云游戏服务器的流式传输器可被配置为测量客户端的带宽。
104.在860处,编码器接收第二视频帧。也就是说,在场景变化之后接收第二视频帧,并且在第一视频帧已经被压缩之后压缩所述第二视频帧。而且,编码器决定要么不编码第二视频帧(或后续的视频帧),要么延迟编码第二视频帧(或后续的视频帧)。所述决定是基于客户端的最大接收带宽和客户端显示器的目标分辨率而作出的。也就是说,跳过或延迟编码的决定考虑到了客户端的可用带宽。一般来说,如果客户端所经历的当前带宽足以使得针对客户端的目标显示器而生成和编码的视频帧可在取得时延命中(例如,生成针对场景变化的大i帧)之后快速返回到低单向时延,则第二个视频帧(和/或后续的视频帧)仍然可能被延迟编码。另一方面,如果客户端所经历的当前带宽不足,则可在编码过程期间跳过第二视频帧(和/或后续的视频帧),并且不将其递送到客户端。因此,如果客户端的带宽超过了支持客户端处的显示器的目标分辨率所需的带宽,则有可能具有较少跳过的帧(和较低的时延)。
105.在一个实施方案中,在特定时间点以基于最大可用位速率或带宽的速率经由网络将被压缩的视频帧从服务器传输到客户端。因此,根据当前所测得的最大带宽来动态地调整被压缩的视频帧的经编码切片和/或经编码切片的包的传输速率。可在视频帧被编码时传输所述视频帧,使得编码一完成就进行传输,而无需等待服务器vsync信号的下一次出现,并且无需等待整个视频帧被编码。
106.另外,在一个实施方案中,以传输包的相同速率执行对包的编码,使得两种操作都
根据客户端可用的最大可用带宽而被动态地调谐。而且,在考虑到即将到来的帧及其复杂性(例如,所预测的场景变化)的情况下监测编码器位速率以预期对客户端带宽的需求,并且其中可根据预期需求来调整所述编码器位速率。此外,可将编码器位速率传送到客户端,使得客户端可相应地调整解码速度,以便与编码器位速率匹配。
107.在一个实施方案中,当到客户端的传输速率对于客户端显示器的目标分辨率而言为低时,于是编码器跳过第二视频帧。也就是说,不编码第二视频帧。具体地,一组被压缩的视频帧到客户端的传输速率超过最大接收带宽。例如,到客户端的传输速率可处于15兆位/秒(mbps),但客户端的所测得的接收带宽当前可处于5mbps-10 mbps。如此,如果将所有视频帧不断地推送到客户端,则云游戏服务器与客户端之间的单向时延就会增加。为了促进低时延,编码器可跳过第二和/或后续的视频帧。
108.图9a绘示了根据本公开的一个实施方案的由编码器压缩的视频帧序列900a,其中当客户端带宽对于客户端的显示器的目标分辨率而言为低时,编码器在对第一i帧905进行编码之后放弃对第二视频帧920的编码。相对于vsync信号950示出了视频帧的编码块和传输块。具体地,如果没有多余的带宽可用,则编码时间较长的i帧将导致一个或多个跳过的帧,以力图保持低单向时延优先,其中单向时延可包括在客户端处显示视频帧的时间。如图所示,在i帧之后跳过一个或多个视频帧允许立即返回到低单向时延(例如,在一个或两个帧周期内)。否则,由于不跳过对视频帧的编码,将要若干帧周期才返回到低单向时延。
109.例如,视频帧序列900a包括一个经编码i帧905,而其余帧被编码为p帧。出于说明起见,在编码块905被编码为i帧之前对作为p帧的编码块901和编码块902进行编码。之后,编码器将视频帧压缩为p帧,直到下一个场景变化,或者直到视频帧无法参考前一关键帧(例如,i帧)。通常,i帧块的编码时间可比p帧块所花费的时间更长。例如,i帧块905的编码时间可超过一个帧周期。在一些情况下,p帧与i帧之间的编码时间通常可大致相同,尤其是在使用强大的编码器时。
110.然而,i帧与p帧之间的传输时间相差很大。如图所示,相对于对应的经编码的视频帧示出了各种传输时间。例如,经编码p帧块901的传输块911被示为具有低时延,使得可在一个帧周期内执行编码块901和传输块911。而且,经编码p帧块902的传输块912被示为具有低单向时延,使得也可在一个帧周期内执行编码块902和传输块912。
111.另一方面,经编码i帧块905的传输块915a示出为具有较高的单向时延,使得编码块905和传输块915a发生在若干帧周期内,进而在云游戏服务器与客户端之间的单向时延中引入抖动。为了给用户带来实时体验使得存在较低的单向时延,可不使用客户端处的缓冲器来校正抖动。在那种情况下,编码器可决定在对i帧进行编码之后跳过对一个或多个视频帧的编码。例如,编码器丢弃视频帧920。在那种情况下,诸如在5个后续的视频帧已被编码为p帧并被传输到客户端之后,经编码的视频帧的传输返回到突显区域910周围的低单向时延中的一者。也就是说,在对i帧块905进行编码之后被编码的第四或第五p帧也在同一帧周期内被传输到客户端,进而返回到在云游戏服务器与客户端之间的低单向时延。
112.在一个实施方案中,当到客户端的传输速率对于客户端显示器的目标分辨率而言为高时,于是编码器仍然在某一延迟(即,一直等到i帧已经被编码)之后压缩第二视频帧。具体地,一组被压缩的视频帧到客户端的传输速率在最大接收带宽之内。例如,到客户端的传输速率可处于13兆位/秒(mbps),但客户端的所测得的接收带宽当前可处于15mbps。因
此,云游戏服务器与客户端之间的单向时延没有增加,因为在客户端处接收经编码的视频帧没有延迟。
113.此外,因为可使云游戏服务器和客户端处的vsync信号同步和偏移,所以可减小云游戏服务器与客户端之间的单向时延,进而补偿在服务器处、在经由网络的传输期间或在客户端处的抖动所引入的时延的任何变化性。而且,vsync信号的同步和偏移还提供了云游戏服务器处的重叠操作(扫描输出、编码和传输);客户端处的重叠操作(接收、解码、渲染、显示);和/或云游戏服务器和客户端处的重叠操作,所有这些都促进补偿由服务器或网络或客户端抖动引入的时延的变化性,减小单向时延、减小单向时延的变化性、视频内容的实时生成和显示以及客户端处的一致的视频回放。
114.图9b绘示了根据本公开的一个实施方案的由编码器压缩的视频帧序列900b,其中编码器考虑到客户端的可用带宽,使得如果带宽超过支持客户端显示器的目标分辨率所需的带宽,则有可能没有跳过的帧或具有较少的跳过的帧,同时仍然具有较低的时延。具体地,在序列900b中,视频帧被编码为i帧,并且当客户端带宽相对于客户端显示器的目标分辨率而言是适中时,在延迟对i帧进行编码之后还正常对后续的视频帧进行编码。因为存在适中的带宽可用性,所以可使用适量的多余带宽来补偿云游戏服务器与客户端之间的时延变化性(例如,抖动),使得可避免跳帧,并且可相对快速地(例如,在两个到四个帧周期内)实现到低单向时延的返回。相对于vsync信号950示出了视频帧的编码块和传输块。
115.视频帧序列900b包括一个经编码i帧905,而其余帧被编码为p帧。出于说明起见,在编码块905被编码为i帧之前对作为p帧的编码块901和编码块902进行编码。之后,编码器将视频帧压缩为p帧,直到下一个场景变化,或者直到视频帧无法参考前一关键帧(例如,i帧)。一般来说,i帧块的编码时间可能比p帧块花费的时间长,并且i帧的传输可能要一个以上帧周期。例如,i帧块905的编码时间和传输时间超过一个帧周期。而且,相对于对应的经编码的视频帧示出了各种传输时间。例如,i帧块905之前的视频帧的编码和传输被示为具有低单向时延,使得可在一个帧周期内执行对应的编码块和传输块。然而,经编码i帧块905的传输块915b示出为具有较高的单向时延,使得编码块905和传输块915b发生在两个或更多个帧周期内,进而在云游戏服务器与客户端之间的单向时延中引入抖动。如先前论述,可通过调谐一个或多个编码器参数来进一步减少编码时间(例如,qp、目标帧大小、最大帧大小、编码器位速率等)。也就是说,在i帧之后的第二或后续的视频帧当到客户端的传输速率对于客户端显示器的目标分辨率而言是适中时以较低的精度被编码,并且以比当传输速率对于所述目标分辨率而言为高时更低的精度被编码。
116.在i帧块905之后,编码器继续压缩视频帧,尽管它们可能会由于对i帧的编码而被短暂延迟。同样,vsync信号的同步和偏移提供了云游戏服务器处的重叠操作(扫描输出、编码和传输);客户端处的重叠操作(接收、解码、渲染、显示);和/或云游戏服务器和客户端处的重叠操作,所有这些都促进补偿由服务器或网络或客户端抖动引入的单向时延的变化性,减小单向时延、减小单向时延的变化性、视频内容的实时生成和显示以及客户端处的一致的视频回放。
117.因为客户端带宽相对于客户端显示器的目标分辨率而言是适中的,所以诸如在两个或三个后续的视频帧已被编码为p帧并被传输到客户端之后,经编码的视频帧的传输返回到突显区域940周围的低单向时延中的一者。在区域940内,在对i帧块905进行编码之后
被编码的p帧也在同一帧周期内被传输到客户端,进而返回到在云游戏服务器与客户端之间的低单向时延。
118.图9c绘示了根据本公开的一个实施方案的由编码器压缩的视频帧序列900c,其中编码器考虑到客户端的可用带宽,使得如果带宽超过支持客户端显示器的目标分辨率所需的带宽,则有可能没有跳过的帧或具有较少的跳过的帧,同时仍然具有较低的单向时延。具体地,在序列900c中,视频帧被编码为i帧,并且当客户端带宽相对于客户端显示器的目标分辨率而言是高时,在延迟对i帧进行编码之后还正常对后续的视频帧进行编码。因为存在较高的带宽可用性,所以可使用大量的多余带宽来补偿云游戏服务器与客户端之间的单向时延的变化性(例如,抖动),使得可避免跳帧,并且可立即(例如,在一个到两个帧周期内)实现到低单向时延的返回。相对于vsync信号950示出了视频帧的编码块和传输块。
119.类似于图9b,图9c中的视频帧序列900c包括一个经编码i帧905,而其余帧被编码为p帧。出于说明起见,在编码块905被编码为i帧之前对作为p帧的编码块901和编码块902进行编码。之后,编码器将视频帧压缩为p帧,直到下一个场景变化,或者直到视频帧无法参考前一关键帧(例如,i帧)。通常,i帧块的编码时间可比p帧块所花费的时间更长。例如,i帧块905的编码时间可超过一个帧周期。而且,相对于对应的经编码的视频帧示出了各种传输时间。例如,i帧块905之前的视频帧的编码和传输被示为具有低时延,使得可在一个帧周期内执行对应的编码块和传输块。然而,经编码i帧块905的传输块915c示出为具有较高的时延,使得编码块905和传输块915c发生在两个或更多个帧周期内,进而在云游戏服务器与客户端之间的单向时延中引入抖动。如先前论述,可通过调谐一个或多个编码器参数来进一步减少编码时间(例如,qp、目标帧大小、最大帧大小、编码器位速率等)。
120.在i帧块905之后,编码器继续压缩视频帧,尽管它们可能会由于对i帧的编码而被短暂延迟。同样,vsync信号的同步和偏移提供了云游戏服务器处的重叠操作(扫描输出、编码和传输);客户端处的重叠操作(接收、解码、渲染、显示);和/或云游戏服务器和客户端处的重叠操作,所有这些都促进补偿由服务器或网络或客户端抖动引入的时延的变化性,减小单向时延、减小单向时延的变化性、视频内容的实时生成和显示以及客户端处的一致的视频回放。因为客户端带宽相对于客户端显示器的目标分辨率而言是高的,所以诸如在一个或两个后续的视频帧已被编码为p帧并被传输到客户端之后,经编码的视频帧的传输返回到突显区域970周围的低单向时延中的一者。在区域970内,在i帧块905编码之后编码的p帧也在一个帧周期内被传输到客户端(但它们可跨在vsync信号出现的两侧之间),进而返回到云游戏服务器与客户端之间的低单向时延。
121.图10绘示了可用于执行本公开的各种实施方案的各方面的示例性装置1000的部件。例如,图10绘示了根据本公开的实施方案的适合于流式传输媒体内容和/或接收流式传输的媒体内容的示例性硬件系统,包括提供编码器调谐以改善云游戏系统中的单向时延与视频质量之间的权衡,以便减小时延并且提供云游戏服务器与客户端之间的更一致的时延,并且提高客户端显示视频的流畅度,其中编码器调谐可基于对客户端带宽、跳过的帧、经编码i帧的数目、场景变化的数目和/或超过目标帧大小的视频帧的数目的监测,其中经过调谐的参数可包括编码器位速率、目标帧大小、最大帧大小和量化参数(qp)值,其中高性能编码器和解码器有助于减小云游戏服务器与客户端之间的总单向时延。此框图绘示了装置1000,所述装置可并入有或者可以是个人计算机、服务器计算机、游戏控制台、移动装置
或其他数字装置,其中的每一者适合于实践本发明的实施方案。装置1000包括用于运行软件应用程序和任选地操作系统的中央处理单元(cpu)1002。cpu 1002可由一个或多个同构或异构处理核心构成。
122.根据各种实施方案,cpu 1002是一个或多个具有一个或多个处理核心的通用微处理器。可使用具有特别适于诸如媒体和交互式娱乐应用的高度并行和计算密集的应用、或者被配置为用于在执行游戏期间的图形处理的应用的微处理器架构的一个或多个cpu来实施其他实施方案。
123.存储器1004存储供cpu 1002和gpu 1016使用的应用和数据。存储装置1006为应用和数据提供非易失性存储装置和其他计算机可读介质,并且可包括固定磁盘驱动器、可移除磁盘驱动器、闪存存储器装置和cd-rom、dvd-rom、蓝光光碟、hd-dvd或其他光学存储装置,以及信号传输和存储介质。用户输入装置1008将来自一个或多个用户的用户输入传达到装置1000,所述装置的示例可包括键盘、鼠标、操纵杆、触摸板、触摸屏、静态或视频记录仪/相机和/或麦克风。网络接口1009允许装置1000经由电子通信网络与其他计算机系统通信,并且可包括在局域网和诸如互联网的广域网上的有线或无线通信。音频处理器1012适于从由cpu 1002、存储器1004和/或存储装置1006提供的指令和/或数据生成模拟或数字音频输出。装置1000的部件,包括cpu 1002、包括gpu 1016的图形子系统、存储器1004、数据存储装置1006、用户输入装置1008、网络接口1009和音频处理器1012,经由一条或多条数据总线1022进行连接。
124.图形子系统1014进一步与数据总线1022和装置1000的部件连接。图形子系统1014包括图形处理单元(gpu)1016和图形存储器1018。图形存储器1018包括显示存储器(例如帧缓冲器),所述显示存储器用于存储输出图像的每个像素的像素数据。图形存储器1018可与gpu 1016集成在同一装置中、作为单独的装置与gpu 1016连接和/或实施在存储器1004内。像素数据可直接从cpu 1002提供到图形存储器1018。可替代地,cpu 1002向gpu 1016提供限定期望的输出图像的数据和/或指令,gpu 1016根据所述数据和/或指令生成一个或多个输出图像的像素数据。限定期望的输出图像的数据和/或指令可存储在存储器1004和/或图形存储器1018中。在一个实施方案中,gpu 1016包括3d渲染能力,用于根据指令和数据生成输出图像的像素数据,所述像素数据限定场景的几何形状、照明、着色、纹理化、运动和/或相机参数。gpu 1016还可包括能够执行着色器程序的一个或多个可编程执行单元。
125.图形子系统1014周期性地从图形存储器1018输出图像的像素数据,以显示在显示装置1010上或由投影系统(未示出)投影。显示装置1010可以是能够响应于来自装置1000的信号而显示视觉信息的任何装置,包括crt、lcd、等离子体和oled显示器。例如,装置1000可向显示装置1010提供模拟或数字信号。
126.用于优化图形子系统1014的其他实施方案可包括多租户gpu操作,其中gpu实例在多个应用之间共享,并且分布式gpu支持单个游戏。图形子系统1014可被配置为一个或多个处理装置。
127.例如,在一个实施方案中,图形子系统1014可被配置为执行多租户gpu功能性,其中一个图形子系统可实施用于多个游戏的图形和/或渲染管线。也就是说,图形子系统1014在正在执行的多个游戏之间共享。
128.在其他实施方案中,图形子系统1014包括多个gpu装置,所述多个gpu装置经过组
合以为在对应的cpu上执行的单个应用执行图形处理。例如,所述多个gpu可执行交替形式的帧渲染,其中在连续的帧周期中gpu 1渲染第一帧,并且gpu 2渲染第二帧,且依此类推,直到到达最后一个gpu,接着初始gpu渲染下一个视频帧(例如,如果只有两个gpu,则gpu 1渲染第三帧)。也就是说,gpu在渲染帧时旋转。渲染操作可重叠,其中gpu 2可在gpu 1完成渲染第一帧之前开始渲染第二帧。在另一实现方式中,可在渲染和/或图形管线中向多个gpu装置指派不同的着色器操作。主gpu正在执行主渲染和合成。例如,在包括三个gpu的组中,主gpu 1可执行主渲染(例如,第一着色器操作)以及合成来自从属gpu 2和从属gpu 3的输出,其中从属gpu 2可执行第二着色器(例如,流体效果,诸如河流)操作,从属gpu 3可执行第三着色器(例如,微粒烟雾)操作,其中主gpu 1合成来自gpu 1、gpu 2和gpu 3中的每一者的结果。以那种方式,可指派不同的gpu来执行不同的着色器操作(例如,挥旗、风、烟雾生成、火等)以渲染视频帧。在又一实施方案中,可将三个gpu中的每一者指派给与视频帧相对应的场景的不同的对象和/或部分。在以上实施方案和实施方式中,这些操作可在同一帧周期(同时并行地)中执行或在不同帧周期(循序并行地)中执行。
129.因此,本公开描述了被配置为流式传输媒体内容和/或接收流式传输的媒体内容的方法和系统,包括提供编码器调谐以改善云游戏系统中的单向时延与视频质量之间的权衡,其中编码器调谐可基于对客户端带宽、跳过的帧、经编码的i帧的数目、场景变化的数目和/或超过目标帧大小的视频帧的数目的监测,其中经过调谐的参数可包括编码器位速率、目标帧大小、最大帧大小和量化参数(qp)值,其中高性能编码器和解码器有助于减小云游戏服务器与客户端之间的总单向时延。
130.应理解,可将本文限定的各种实施方案组合或聚集成使用本文公开的各种特征的特定实现方式。因此,所提供的示例仅是一些可能的示例,而非限于通过组合各种元件以限定更多的实现方式所可能的各种实现方式。在一些示例中,在不脱离所公开或等效的实现方式的精神的情况下,一些实现方式可包括更少的元件。
131.可使用各种计算机系统配置来实践本公开的实施方案,包括手持式装置、微处理器系统、基于微处理器或可编程的消费者电子器件、小型计算机、大型计算机等。本公开的实施方案还可在分布式计算环境中实践,其中通过经由基于电线的或无线的网络链接的远程处理装置来执行任务。
132.在了解了以上实施方案的情况下,应理解,本公开的实施方案可采用涉及在计算机系统中存储的数据的各种计算机实施的操作。这些操作是需要物理地操纵物理量的操作。形成本公开的实施方案的部分的本文描述的操作中的任一者是有用的机器操作。本公开的实施方案还涉及用于执行这些操作的装置或设备。所述设备可被特别构造成用于所需的目的,或者所述设备可以是由计算机中存储的计算机程序选择性地启动或配置的通用计算机。具体地,各种通用机器可与根据本文的教导而编写的计算机程序一起使用,或者构造更专门的设备来执行所需的操作可能会更加便利。
133.本公开还可体现为计算机可读介质上的计算机可读代码。计算机可读介质是可存储数据的任何数据存储装置,所述数据其后可由计算机系统读取。计算机可读介质的示例包括硬盘驱动器、网络附接存储装置(nas)、只读存储器、随机存取存储器、cd-rom、cd-r、cd-rw、磁带,和其他光学和非光学数据存储装置。计算机可读介质可包括计算机可读有形介质,所述计算机可读有形介质分布在网络耦合的计算机系统上,使得以分布的方式存储
和执行计算机可读代码。
134.虽然以特定次序描述方法操作,但应理解,其他内务操作可在操作之间执行,或者可对操作进行调整,使得它们在略微不同的时间出现,或者可分布在系统中,这允许处理操作以与处理相关联的各种间隔出现,只要是以期望的方式执行覆盖操作的处理即可。
135.虽然已经出于理解清楚起见而稍微详细地描述了前述公开内容,但将明白,可在所附权利要求的范围内实践某些改变和修改。因此,本实施方案将被视为说明性而非限制性的,并且本公开的实施方案不限于本文给出的细节,而是可在所附权利要求的范围和等效物内修改。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献