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

在服务器处重叠编码与传输的制作方法

2022-07-11 11:36:15 来源:中国专利 TAG:


1.本公开涉及被配置用于跨网络流式传输内容的流式传输系统,并且更具体地涉及在云游戏服务器和/或客户端处的重叠操作以用于减少云游戏服务器与客户端之间的等待时间。


背景技术:

2.近年来,一直在持续推动在线服务,允许在通过网络连接的云游戏服务器与客户端之间以流式传输格式进行在线或云游戏。流式传输格式越来越受欢迎,因为可以按需提供游戏标题,玩家之间能够联网进行多玩家游戏,玩家之间资产共享,玩家和/或观众之间即时共享体验,允许朋友观看一个朋友玩视频游戏,让朋友加入一个朋友的正在进行的游戏,等等。不幸的是,这种需求也在挑战网络连接能力的以及在服务器和客户端处执行的处理的限制,所述处理的响应在传送到客户端时应足以渲染高质量图像。例如,在服务器上执行的所有游戏活动的结果都需要压缩并以低毫秒等待时间传输回客户端,以获得最佳用户体验。往返等待时间可以定义为用户控制器输入与客户端处视频帧显示之间的总时间;它可能包括从控制器到客户端的控制信息的处理和传输,从客户端到服务器的控制信息的处理和传输,在服务器处使用所述输入来生成响应于输入的视频帧,处理视频帧并将其传输到编码单元(例如,扫描输出),对视频帧进行编码,将编码视频帧传输回客户端,接收并解码视频帧,以及在显示之前对视频帧进行任何处理或分段。单向等待时间可以定义为往返等待时间的一部分,包括从开始将视频帧传输到服务器处的编码单元(例如,扫描输出)到开始在客户端处显示视频帧的时间。往返等待时间和单向等待时间的一部分与数据流通过通信网络从客户端发送到服务器以及从服务器发送到客户端所用的时间相关联。另一部分与客户端和服务器处的处理相关联;这些操作的改进,诸如与帧解码和显示相关的高级策略,可以显著减少服务器与客户端之间的往返等待时间和单向等待时间,并为云游戏服务的用户提供更高质量的体验。
3.正是在这种背景下,产生了本公开的实施方案。


技术实现要素:

4.本公开的实施方案涉及配置用于跨网络流式传输内容(例如,游戏)的流式传输系统,并且更具体地涉及在服务器处重叠编码操作与发送操作,以及在客户端处重叠接收操作与解码操作,以及在客户端处重叠接收操作、解码操作与渲染到显示器的操作。
5.本公开的实施方案公开了一种用于云游戏的方法。方法包括在客户端处接收视频帧的一个或多个编码切片,其中在服务器处执行视频游戏时生成视频帧,并且视频帧由服务器处的编码器编码成一个或多个编码切片。方法包括在完全接收视频帧的一个或多个编码切片之前,在客户端的解码器处解码第一编码切片。在服务器处,在与客户端的会话期间响应于由服务器以流式传输模式处理视频游戏,生成多个视频帧。多个视频帧在编码器处编码成多个压缩视频帧,每个对应压缩视频帧包括一个或多个对应编码切片。多个压缩视
频帧通过网络传输到客户端。
6.在另一实施方案中,公开了一种用于云游戏的方法。方法包括在服务器处执行视频游戏时生成视频帧。方法包括将视频帧逐个扫描线扫描输入到服务器处的编码器。方法包括在编码器处将一个或多个扫描线编码为一个或多个编码切片,其中每个编码切片以编码器填充率传送到缓冲区。方法包括从缓冲区排出第一编码切片,以通过网络以缓冲区排出率将第一编码切片流式传输到客户端,其中在完全编码视频帧的一个或多个切片之前,通过网络流式传输第一编码切片。
7.在另一实施方案中,公开了一种存储用于云游戏的计算机程序的非暂时性计算机可读介质。计算机可读介质包括用于在客户端处接收视频帧的一个或多个编码切片的程序指令,其中在服务器处执行视频游戏时生成视频帧,并且视频帧由服务器处的编码器编码成一个或多个编码切片。计算机可读介质包括用于在完全接收视频帧的一个或多个编码切片之前在客户端的解码器处解码第一编码切片的程序指令。在服务器处,在与客户端的会话期间响应于由服务器以流式传输模式处理视频游戏,生成多个视频帧。多个视频帧在编码器处编码成多个压缩视频帧,每个对应压缩视频帧包括一个或多个对应编码切片。多个压缩视频帧通过网络传输到客户端。
8.在另一实施方案中,一种存储用于云游戏的计算机程序的非暂时性计算机可读介质。非暂时性计算机可读介质包括用于在服务器处执行视频游戏时生成视频帧的程序指令。非暂时性计算机可读介质包括用于将视频帧逐个扫描线扫描输入到服务器处的编码器的程序指令。非暂时性计算机可读介质包括用于在编码器处将一个或多个编码器切片编码为一个或多个编码切片的程序指令,其中每个编码切片以编码器填充率传送到缓冲区。非暂时性计算机可读介质包括用于从缓冲区排出第一编码切片以通过网络以缓冲区排出率将第一编码切片流式传输到客户端的程序指令,其中在完全编码视频帧的一个或多个切片之前,通过网络流式传输第一编码切片。
9.在又一实施方案中,计算机系统包括处理器,以及耦接到处理器并且其中存储有指令的存储器,指令如果由计算机系统执行,则使计算机系统执行用于云游戏的方法。方法包括在客户端处接收视频帧的一个或多个编码切片,其中在服务器处执行视频游戏时生成视频帧,并且视频帧由服务器处的编码器编码成一个或多个编码切片。方法包括在完全接收视频帧的一个或多个编码切片之前,在客户端的解码器处解码第一编码切片。在服务器处,在与客户端的会话期间响应于由服务器以流式传输模式处理视频游戏,生成多个视频帧。多个视频帧在编码器处编码成多个压缩视频帧,每个对应压缩视频帧包括一个或多个对应编码切片。多个压缩视频帧通过网络传输到客户端。
10.在又一实施方案中,计算机系统包括处理器,以及耦接到处理器并且其中存储有指令的存储器,指令如果由计算机系统执行,则使计算机系统执行用于云游戏的方法。方法包括在服务器处执行视频游戏时生成视频帧。方法包括将视频帧逐个扫描线扫描输入到服务器处的编码器。方法包括在编码器处将一个或多个编码器切片编码为一个或多个编码切片,其中每个编码切片以编码器填充率传送到缓冲区。方法包括从缓冲区排出第一编码切片,以通过网络以缓冲区排出率将第一编码切片流式传输到客户端,其中在完全编码视频帧的一个或多个切片之前,通过网络流式传输第一编码切片。
11.本公开的其他方面将从以下结合附图进行的详细描述中变得显而易见,附图以示
例的方式示出了本公开的原理。
附图说明
12.本公开可通过参考结合附图进行的以下描述来最好地理解,在附图中:
13.图1a是根据本公开的一个实施方案的在帧周期开始处的vsync信号的图。
14.图1b是根据本公开的一个实施方案的vsync信号的频率图。
15.图2a是根据本公开的一个实施方案的用于以各种配置在一个或多个云游戏服务器与一个或多个客户端设备之间通过网络提供游戏的系统的图,其中vsync信号可以被同步和偏移以减少单向等待时间。
16.图2b是根据本公开的一个实施方案的用于在两个或更多个对等设备之间提供游戏的图,其中vsync信号可以被同步和偏移以实现设备之间控制器和其他信息的最佳接收时序。
17.图2c示出根据本公开的一个实施方案的受益于源设备与目标设备之间的vsync信号的正确同步和偏移的各种网络配置。
18.图2d示出根据本公开的一个实施方案的受益于源设备与目标设备之间的vsync信号的正确同步和偏移的云游戏服务器与多个客户端之间的多租户配置。
19.图3示出根据本公开的一个实施方案的当流式传输从在服务器上执行的视频游戏生成的视频帧时由于时钟漂移而在云游戏服务器与客户端之间的单向等待时间的变化。
20.图4示出根据本公开的一个实施方案的当流式传输从在服务器上执行的视频游戏产生的视频帧时包括云游戏服务器和客户端的网络配置,服务器与客户端之间的vsync信号被同步和偏移,以允许服务器和客户端处的操作重叠,并且减少服务器与客户端之间的单向等待时间。
21.图5a是示出根据本公开的一个实施方案的当流式传输从在服务器上执行的视频游戏生成的视频帧时服务器处编码操作与发送操作的重叠以及客户端处接收操作与解码操作的重叠的图。
22.图5b是示出根据本公开的一个实施方案的用于云游戏的方法的流程图,其中在服务器处编码操作与发送操作被重叠以减少服务器与客户端之间的单向等待时间。
23.图6是示出根据本公开的一个实施方案的当流式传输从在服务器上执行的视频游戏生成的视频帧时基于客户端的最大接收带宽的视频帧的编码切片的间隔的图。
24.图7a是示出根据本公开的一个实施方案的当流式传输从在服务器上执行的视频游戏生成的视频帧时客户端处的接收操作与解码操作的重叠的图。
25.图7b是示出根据本公开的一个实施方案的用于云游戏的方法的流程图,其中当流式传输从在服务器上执行的视频游戏生成的视频帧时,在客户端处接收操作与解码操作被重叠以减少服务器与客户端之间的单向等待时间,其中解压缩视频帧的渲染也可以与接收操作和解码操作重叠。
26.图8a是示出根据本公开的一个实施方案的当流式传输从在服务器上执行的视频游戏生成的视频帧时视频帧的编码切片内的前向纠错(fec)数据包的交织的图。
27.图8b是根据本公开的一个实施方案的编码切片的数据包的报头的图。
28.图9示出可以用于执行本公开的各种实施方案的各个方面的示例性设备的部件。
具体实施方式
29.虽然出于说明目的,以下详细说明包含许多具体细节,但是本领域的普通技术人员将会了解,以下细节的许多变化和更改在本公开的范围内。因此,在阐明以下所描述的本公开的各个方面时,此描述的随附权利要求书的概括性没有任何损失,并且不对此权利要求书施加任何限制。
30.一般而言,本公开的各种实施方案描述被配置为在流式传输媒体内容(例如,流式传输来自视频游戏的音频和视频)时减少源设备与目标设备之间的等待时间和/或等待时间不稳定性的方法和系统。具体而言,在本公开的一些实施方案中,当流式传输从在服务器上执行的视频游戏产生的视频帧时,可以通过在服务器处重叠视频帧的编码操作与传输操作来减少云游戏应用中的单向等待时间。云游戏应用中的服务器对视频帧进行编码,并且为了减少单向等待时间,从服务器到客户端的数据传输可以在一旦数据包由服务器的编码器编码就开始。这可能需要在服务器内的编码单元与执行数据传输的那些单元(例如,在应用层操作的流式传输器)之间共享信息(例如,在给定时间编码的数据量)。在一些实施方案中,编码器被调谐为编码数据包,使得数据包大小对应于由编码器创建的数据的自然数量。在一个示例中,数据包大小可以对应于基于网络的最大传输单元(mtu)。在另一示例中,数据包大小可以对应于mtu并且还限于由编码器生成的编码切片。在又一示例中,在一个实施方案中,数据包大小可以对应于扫描线或屏幕切片。以这种方式,单向等待时间和所需的缓冲量减少。此外,在本公开的一些实施方案中,当流式传输从服务器上执行的视频游戏产生的视频帧时,云游戏应用中的单向等待时间可通过在客户端处重叠视频帧的接收操作与解码操作来减少。在本公开的其他实施方案中,云游戏服务器与客户端之间的单向等待时间可以通过重叠压缩视频帧的接收操作和解码操作与其显示来减少。云游戏应用中的客户端从云游戏服务器接收压缩视频帧,并且被配置为解码压缩视频帧。通过尽快在客户端处开始解码操作,可以减少服务器与客户端之间的单向等待时间。例如,编码切片的每个数据包可以在由客户端从服务器接收到它时被解码。此外,可以通过视频帧在客户端处被完全接收或解码之前开始显示所述视频帧来减少单向等待时间。提交以供显示的时序必须预计接收和解码压缩视频帧所需的剩余时间。如前所述,数据包大小调整可以对应于由编码器创建的数据的自然数量(例如,mtu、扫描线、调整大小为mtu大小的编码器切片等),这使得在每个数据包到达时对其进行解码成为可能。
31.具体而言,由于在服务器处生成复杂帧(例如,场景改变)所需的附加时间、在服务器处对复杂帧进行编码/压缩的时间增加、网路上的可变通信路径、以及在客户端处解码复杂帧的时间增加,可能会在服务器与客户端之间引入等待时间不稳定性。由于服务器与客户端处的时钟差异,也可能会引入等待时间不稳定性,这会导致服务器vsync信号与客户端vsync信号之间的漂移。在一个实施方案中,这种等待时间不稳定性可以通过重叠服务器处的编码操作与传输操作、客户端处的接收操作与解码操作、和/或客户端处接收操作和解码操作与渲染以供显示的操作来消除。
32.借助对各种实施方案的上述一般理解,现在将参考各种附图来描述实施方案的示例性细节。
33.在整个说明书中,对“游戏”或“视频游戏”或“游戏应用”或“应用”的引用意在表示通过执行输入命令来引导的任何类型的交互式应用。仅出于说明目的,交互式应用包括用
于游戏、文字处理、视频处理、视频游戏处理等的应用。此外,上面介绍的术语是可以互换的。
34.云游戏包括在服务器处执行视频游戏以生成游戏渲染视频帧,然后将其发送到客户端以供显示。服务器和客户端处的操作时序可以与相应垂直同步(vsync)参数联系起来。当vsync信号在服务器和/或客户端之间正确同步和/或偏移时,在服务器处执行的操作(例如,在一个或多个帧周期内生成和传输视频帧)与在客户端处执行的操作同步(例如,以对应于帧周期的显示帧或刷新率在显示器上显示视频帧)。具体而言,在服务器处生成的服务器vsync信号和在客户端处生成的客户端vsync信号可以用于同步服务器与客户端处的操作。也就是说,当服务器vsync信号与客户端vsync信号被同步和/或偏移时,服务器生成和发送视频帧与客户端如何显示这些视频帧同步。
35.vsync信令和垂直消隐间隔(vbi)已被并入用于在服务器与客户端之间流式传输媒体内容时生成视频帧并且显示这些视频帧。例如,服务器努力在由对应服务器vsync信号定义的一个或几个帧周期内生成游戏渲染视频帧(例如,如果帧周期为16.7毫秒,则每个帧周期生成一个视频帧导致60hz操作,而每两个帧周期生成一个视频帧导致30hz操作),然后对所述视频帧进行编码并且将其传输到客户端。在客户端处,对所接收编码视频帧进行解码和显示,其中客户端显示从对应客户端vsync开始渲染以供显示的每个视频帧。
36.为了说明,图1a显示vsync信号111如何可以指示帧周期的开始,其中可以在服务器和/或客户端处的对应帧周期期间执行各种操作。在流式传输媒体内容时,服务器可以使用服务器vsync信号来生成和编码视频帧,而客户端可以使用客户端vsync信号来显示视频帧。vsync信号111以对应于定义帧周期110的定义频率生成,如图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包括中央处理单元(cpu)和图形处理单元(gpu)组,所述组可以被配置为执行多租户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示出根据本公开的一个实施方案的云游戏服务器260与一个或多个客户端210之间的多租户配置,多租户配置受益于源设备与目标设备之间vsync信号的正确同步和偏移。在服务器到客户端的配置中,对齐可能包括服务器vsync信号与客户端vsync信号之间的频率同步,以及在服务器vsync信号与客户端vsync信号之间提供正确的时序偏移。在一个实施方案中,在多租户配置中,客户端vsync信号在每个客户端210处被调谐,以实现服务器260与客户端210对之间的正确对齐。
54.例如,在一个实施方案中,图形子系统可以被配置为执行多租户gpu功能,其中一个图形子系统可以为多个游戏实现图形和/或渲染流水线。也就是说,图形子系统在正在执行的多个游戏之间共享。具体而言,在一个实施方案中,游戏标题处理引擎可以包括cpu和gpu组,其被配置为执行多租户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.图4示出根据本公开的实施方案的当流式传输从在服务器上执行的视频游戏生成的视频帧时通过包括高度优化的云游戏服务器260和高度优化的客户端210的网络配置的数据流,其中重叠服务器操作与客户端操作减少了单向等待时间,并且同步和偏移服务器与客户端之间的vsync信号减少了单向等待时间以及减少了服务器与客户端之间的单向等待时间的可变性。具体而言,图4显示服务器vsync信号与客户端vsync信号之间的期望对齐。在一个实施方案中,执行服务器vsync信号311的调谐以获得服务器vsync信号与客户端vsync信号之间的正确对齐,诸如以服务器与客户端网络配置。在另一实施方案中,执行客户端vsync信号312的调谐以获得服务器vsync信号与客户端vsync信号之间的正确对齐,诸如以多租户服务器到多客户端网络配置。出于说明目的,图4中描述了服务器vsync信号311的调谐,以用于同步服务器vsync信号与客户端vsync信号的频率,和/或调整对应客户端vsync信号与服务器vsync信号之间的时序偏移,但是可以理解,客户端vsync信号312也可以用于调谐。在本专利的上下文中,“同步”应理解为意指调谐信号以使它们的频率匹配,但相位可能不同;“偏移”应理解为意指信号之间的时间延迟,例如,一个信号达到其最大值时与另一信号达到其最大值时之间的时间。
59.如图所示,图4示出在本公开的实施方案中在服务器处执行视频游戏以生成渲染视频帧并将这些视频帧发送到客户端以供显示的改进过程。所述过程是关于在服务器和客户端处生成和显示单个视频帧示出。具体而言,服务器在401处生成游戏渲染视频帧。例如,服务器260包括配置用于执行游戏的cpu(例如,游戏标题处理引擎211)。cpu为视频帧生成一个或多个绘制调用,其中绘制调用包括放置在命令缓冲区中以供服务器260的对应gpu在
图形流水线中执行的命令。图形流水线可包括在场景内对象的顶点上的一个或多个着色器程序,以生成为视频帧渲染以供显示的纹理值,其中操作通过gpu并行执行以提高效率。在翻转时间409处,gpu触及命令缓冲区中的翻转命令,翻转命令指示对应视频帧已经完全生成和/或渲染并放置到服务器260处的帧缓冲区中。
60.在402处,服务器对游戏渲染视频帧执行扫描输出到编码器。具体而言,逐个扫描线或在连续扫描线的组中执行扫描输出,其中扫描线是指单个水平线,例如从显示器的屏幕边缘到屏幕边缘。这些扫描线或连续扫描线组有时称为切片,且在本说明书中称为屏幕切片。具体而言,扫描输出402可以包括修改游戏渲染帧的许多过程,包括用另一帧缓冲区覆盖它,或者缩小它以便用来自另一帧缓冲区的信息包围它。在扫描输出402期间,修改后的视频帧然后被扫描输入到编码器中以用于压缩。在一个实施方案中,扫描输出402在vsync信号311的出现311a处执行。在其他实施方案中,可以在vsync信号311出现之前执行扫描输出402,诸如在翻转时间409处。
61.在403处,游戏渲染视频帧(其可能已经历修改)在编码器处在逐个编码器切片基础上被编码,以生成一个或多个编码切片,其中编码切片与扫描线或屏幕切片无关。因此,编码器生成一个或多个编码(例如,压缩)切片。在一个实施方案中,编码过程在对应视频帧的扫描输出402过程已经完全完成之前开始。此外,编码403的开始和/或结束可以与或可以不与服务器vsync信号311对齐。编码切片的边界不限于单个扫描线,并且可以由单个扫描线或多个扫描线组成。此外,编码切片的结束和/或下一个编码器切片的开始可能不一定出现在显示屏幕的边缘处(例如,可能出现在屏幕中间的某处或扫描线的中间),使得编码切片不需要从显示屏幕的边缘到边缘完全横穿。如图所示,一个或多个编码切片可以被压缩和/或编码,包括被压缩具有散列标记的“编码切片a”。
62.在404处,编码视频帧从服务器传输到客户端,其中所述传输可以在逐个编码切片的基础上发生,其中每个编码切片是已经被压缩的编码器切片。在一个实施方案中,传输过程404在对应视频帧完全完成编码过程403之前开始。此外,传输404的开始和/或结束可以与或可以不与服务器vsync信号311对齐。如图所示,被压缩的编码切片a独立于渲染视频帧的其他被压缩编码器切片被传输到客户端。编码器切片可以一次传输一个,或者并行传输。
63.在405处,客户端再次在逐个编码切片的基础上接收压缩视频帧。此外,接收405的开始和/或结束可以与或可以不与客户端vsync信号312对齐。如图所示,被压缩的编码切片a由客户端接收。传输抖动452可能存在于服务器260与客户端210之间,其中抖动452测量从服务器260到客户端210的网络等待时间的变化。较低的抖动值表现出更稳定的连接。如图所示,粗体直线箭头显示发送对应视频帧到客户端210时的当前等待时间,但由于抖动,客户端210处的视频帧可能存在到达时间范围(例如,由虚线箭头界定的范围)。等待时间的变化也可能是由于服务器处的一个或多个操作,诸如编码403和传输404,以及在将视频帧传输到客户端210时引入等待时间的联网问题。
64.在406处,客户端再次在逐个编码切片的基础上解码压缩视频帧,产生现在准备好显示的解码切片a(显示为无散列标记)。在一个实施方案中,解码过程406在对应视频帧完全完成接收过程405之前开始。此外,解码406的开始和/或结束可以与或可以不与客户端vsync信号312对齐。在407处,客户端在客户端处的显示器上显示解码渲染视频帧。也就是说,例如,将解码视频帧放置在显示缓冲区中,其在逐个扫描线的基础上流式输出到显示设
备。在一个实施方案中,显示过程407(即,流式输出到显示设备)在对应视频帧已经完全完成解码过程406之后开始,即,解码视频帧完全驻留在显示缓冲区中。在另一实施方案中,显示过程407在对应视频帧完全完成解码过程406之前开始。也就是说,在解码帧缓冲区的仅一部分驻留在显示缓冲区中的时刻,流式输出到显示设备从显示缓冲区的地址开始。然后显示缓冲区及时更新或填充有对应视频帧的剩余部分以用于显示,使得在这些部分流式输出到显示器之前执行显示缓冲区的更新。此外,显示407的开始和/或结束与客户端vsync信号312对齐。
65.在一个实施方案中,服务器260与客户端210之间的单向等待时间416可以被定义为扫描输出402开始时与显示407开始时之间的经过时间。本公开的实施方案能够对齐服务器与客户端之间的vsync信号(例如,同步频率和调整偏移),以减少服务器与客户端之间的单向等待时间,并且减少服务器与客户端之间单向等待时间的可变性。例如,本公开的实施方案能够计算对服务器vsync信号311与客户端vsync信号312之间的偏移430的最佳调整,以便即使在服务器处理(诸如,编码403和传输404)所需时间接近最坏情况、服务器260与客户端210之间网络等待时间接近最坏情况以及客户端处理(诸如接收405和解码406)接近最坏情况的情况下,解码渲染视频帧可及时用于显示过程407。也就是说,不需要确定服务器vsync与客户端vsync之间的绝对偏移;调整偏移以便解码渲染视频帧可及时用于显示过程就足够了。
66.具体而言,服务器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的频率也基本相等。
67.为了保持服务器vsync信号与客户端vsync信号的频率同步,可以操纵服务器vsync信号311的时序。例如,服务器vsync信号311中的垂直消隐间隔(vbi)可以在一段时间内增加或减少,诸如以负责服务器vsync信号311与客户端vsync信号312之间的漂移。vbi中的垂直消隐(vblank)线的操纵提供用于调整用于vblank的扫描线的数量用于服务器vsync信号311的一个或多个帧周期。减少vblank的扫描线数量会减少服务器vsync信号311的两次出现之间的对应帧周期(例如,时间间隔)。相反,增加vblank的扫描线数量会增加vsync信号311的两次出现之间的对应帧周期(例如,时间间隔)。以这种方式,调整服务器vsync信号311的频率以使客户端vsync信号312与服务器vsync信号311之间的频率对齐成基本相同的频率。此外,服务器vsync信号与客户端vsync信号之间的偏移可以通过在短时间内增加或减少vbi,然后将vbi恢复到其原始值来调整。在一个实施方案中,调整服务器vbi。在另一实施方案中,调整客户端vbi。在又一实施方案中,不是两个设备(服务器和客户端),而是有多个连接的设备,其中每一个设备可以有被调整的对应vbi。在一个实施方案中,多个连接设备中的每一个可以是独立的对等设备(例如,没有服务器设备)。在另一实施方案中,多个设备可以包括以一个或多个服务器/客户端架构、多租户服务器/客户端(多个)架构或其某一组合布置的一个或多个服务器设备和/或一个或多个客户端设备。
68.或者,在一个实施方案中,可以操纵服务器的像素时钟(例如,位于服务器的北桥/南桥核心逻辑芯片组的南桥处,或者在离散gpu的情况下,它会使用自己的硬件自行生成像素时钟)以在一段时间内执行服务器vsync信号311的频率的粗调和/或微调,以使服务器vsync信号311与客户端vsync信号312之间的频率同步恢复对齐。具体地,服务器南桥中的像素时钟可以被超频或欠频,以调整服务器的vsync信号311的整体频率。以这种方式,服务器vsync信号311的频率被调整为将客户端vsync信号312与服务器vsync信号311之间的频率对齐为基本相同的频率。服务器vsync与客户端vsync之间的偏移可以通过在短时间段内增加或减少客户端服务器像素时钟,然后将像素时钟恢复到其原始值来调整。在一个实施方案中,调整服务器像素时钟。在另一实施方案中,调整客户端像素时钟。在又一实施方案中,不是两个设备(服务器和客户端),而是有多个连接的设备,其中每一个设备可以有被调整的对应像素时钟。在一个实施方案中,多个连接设备中的每一个可以是独立的对等设备(例如,没有服务器设备)。在另一实施方案中,多个连接设备可以包括以一个或多个服务器/客户端架构、多租户服务器/客户端(多个)架构或其某一组合布置的一个或多个服务器设备和一个或多个客户端设备。
69.图5a是示出根据本公开的一个实施方案的当流式传输从在服务器上执行的视频游戏产生的视频帧时服务器260处编码操作与传输操作的重叠以及客户端210处接收操作与解码操作的重叠的图。具体而言,可以参照时间线501在编码器切片级别处执行服务器260处视频帧的编码操作与传输操作的重叠,以及客户端210处视频帧的接收操作与解码操作的重叠。
70.具体而言,渲染视频帧由正在执行视频游戏的服务器260生成。例如,当视频游戏在cpu组合服务器260的gpu图形流水线上执行时生成视频帧。每个视频帧可以被分割成一个或多个编码器切片,然后压缩为一个或多个编码切片。如前所述,编码切片的边界不限于单个扫描线,并且可以由单个扫描线或多个扫描线组成。另外,编码切片的结束和/或下一个编码切片的开始可能不一定出现在显示屏幕的边缘处(例如,可能出现在屏幕中间的某处或扫描线的中间)。
71.此外,每个编码切片(例如,被压缩的)可以包括一个或多个数据包(例如,用户数据报协议——udp)。如果编码切片超过最大传输单元(mtu),则编码切片被分割为多个数据包,每个数据包调整大小为mtu或更小。mtu定义了通过udp发送时数据包的最大大小。例如,编码切片a可以被分割成一个或多个数据包503-a。类似地,编码切片b、编码切片c和编码切片d可以各自被分割成一个或多个数据包。
72.在服务器260处,编码切片的一个或多个数据包可以被单独压缩和传送(并且可能按切片分组),而无需等待(例如,视频帧的)所有编码器切片被压缩(例如,压缩成编码切片)和打包。这可能需要在服务器260内共享信息(例如,在给定时间编码的数据量),诸如在编码单元与执行数据传输的那些单元(例如,在应用层操作的流式传输器)之间。具体而言,在操作403处,编码器接收所生成视频帧并且在逐个编码器切片的基础上编码视频帧以生成一个或多个编码切片。在一些实施方案中,编码器接收由视频游戏生成的视频帧,所述视频帧已用附加层或覆盖层进行了修改(例如,在扫描输出过程期间),如前所述。如图所示,所生成视频帧的编码切片中的每一个在编码器处被单独压缩。例如,在操作403的编码过程中,所生成视频帧被编码成编码切片a(例如,被压缩的)、编码切片b、编码切片c和编码切片
d。根据处理器或硬件的数量,在一些实施方案中,可以同时(例如,并行)编码多个切片。例如,一些游戏控制台可以并行生成四个编码切片。更具体地,由于硬件流水线化,硬件编码器可以被配置为并行压缩多个编码器切片(例如,以生成一个或多个编码切片)。
73.在操作404处,编码切片通过网络传输到客户端210。具体而言,编码切片从编码器传送到流式传输器设备,流式传输器设备被配置为通过网络将编码切片传输到客户端210。例如,流式传输器设备被配置为在传输控制协议/互联网协议的应用层或udp/ip计算机联网模型上操作。如图所示,根据本公开的一个实施方案,编码过程与传输过程可以重叠。例如,编码切片(例如,被压缩的)中的每一个被单独传输,使得对应编码切片的一个或多个数据包在可以发送下一个编码切片的数据包之前作为一个组发送。具体而言,一旦被压缩,则对应编码切片(例如,编码切片的一个或多个数据包)然后在操作404处准备好由流式传输器传输,而无需等待对应视频帧的所有编码器切片被压缩。如图所示,在时间线501中,在编码器切片b由编码器压缩(例如,被压缩成编码切片b)时,并且在编码器切片c和d已经开始编码过程之前,编码切片a由流式传输器传输。更具体地,在编码器切片b已经由编码器压缩之前,编码切片a的数据包由流式传输器通过网络传输到客户端210。类似地,在编码器切片c由编码器压缩时,并且在编码器切片d开始编码过程之前,编码切片b由流式传输器传输。在可以同时编码多个切片的情况下(例如,并行编码x个切片),则x个编码切片可以在编码(例如,压缩)下一x个编码器切片的同时被发送。因此,在本公开的实施方案中,一旦对应编码器切片和/或编码器切片的数据包已经被编码和/或压缩,并且在整个视频帧被编码(如传统的做法)之前,从服务器到客户端的数据传输(例如,编码切片和/或对应编码切片的数据包)就可以开始。以这种方式,一旦数据包的价值数据由服务器编码,就可以通过开始从服务器向客户端传输数据来减少服务器与客户端之间的单向等待时间。
74.在客户端210处,过程包括接收压缩视频帧(例如,视频帧的编码切片),然后解码压缩视频帧。在客户端处,也可以在编码切片级别上执行接收过程和解码过程,使得只要接收到对应编码切片的一个或多个数据包,然后就使用那些一个或多个数据包来解码所述编码切片。因此,接收过程与解码过程可以在客户端处重叠。具体而言,在客户端210处,在操作405处分别接收对应视频帧的一个或多个编码切片。出于说明目的,在时间线501中,可以首先接收编码切片a,然后接收编码切片b,依此类推,直到最后接收编码切片d。
75.具体而言,在操作406处,随后对所接收编码切片进行解码。具体而言,一旦接收到,则随后所接收的对应编码切片准备好由解码器在操作406处解码,而无需等待接收到对应视频帧的所有编码切片。例如,在时间线501中,在接收编码切片b的同时,并且当编码切片c和编码切片d仍在通过网络传输时,编码切片a的一个或多个数据包被解码。类似地,在接收编码切片c的同时,并且当编码切片d通过网络传输时,编码切片b的一个或多个数据包被解码。因此,在本公开的实施方案中,一旦接收到编码切片和/或编码切片的数据包,并且在已经接收到视频帧的编码切片的完整补充和/或那些编码切片的对应数据包之前,就可以开始从服务器到客户端的数据(例如,编码切片和/或编码切片的数据包)的解码。以这种方式,服务器260与客户端210之间的单向等待时间可以通过一旦由客户端210接收数据包的价值数据就开始数据解码来减少。
76.可以理解,对应视频帧的编码切片可以在客户端处以各种随机顺序(例如,由于网络抖动)接收,并且可以根据客户端处的硬件配置并行接收。也就是说,在操作405中,由于
抖动,被传输的编码切片可能在客户端210处不按顺序接收。在这种情况下,可能会不按顺序解码编码切片,以说明抖动(例如,不按顺序接收对应视频帧的编码切片)。例如,在通过网络传输的对应视频帧的编码切片序列中,当一个编码切片被不按顺序地接收时,解码也被不按顺序地执行。也就是说,解码仍然随着每个编码切片被接收而发生。
77.更具体地,对应视频帧的编码切片中的每一个可以在服务器260的编码器处被分割成一个或多个网络数据包,然后通过网络传输到客户端210。因此,客户端210在接收下一视频帧的切片和/或切片的对应数据包之前接收对应视频帧的一个或多个切片中的每一个的一个或多个数据包。也就是说,在一个实施方案中,对应视频帧的一个或多个编码切片可以在客户端处一次接收一个或者并行接收,并且是在接收下一视频帧的一个或多个编码切片之前。更具体地,对应视频帧的一个或多个编码切片的数据包可以在客户端处一次接收一个或并行接收,并且是在接收下一视频帧的一个或多个编码切片之前。
78.通过对图2a至图2d的各种客户端设备210和/或云游戏网络290(例如,在游戏服务器260中)的详细描述,图5b的流程图500b示出根据本公开的一个实施方案的用于云游戏的方法,其中服务器操作可以被重叠以减少云游戏服务器与客户端之间的单向等待时间。
79.在510处,方法包括在服务器处执行视频游戏时生成视频帧。例如,服务器可以在流式传输模式下执行视频游戏,使得服务器的cpu响应于来自用户的输入命令执行视频游戏,以便使用可用于流式传输的图形流水线生成游戏渲染视频帧。具体而言,执行视频游戏的cpu与gpu图形流水线协作被配置为生成多个视频帧。在云游戏中,游戏生成视频帧通常被渲染以显示在虚拟显示器上。服务器可以对游戏生成视频帧执行附加操作。例如,可以将一个或多个覆盖层添加到对应游戏生成视频帧,诸如在扫描输出过程期间。
80.在520处,方法包括将游戏生成视频帧逐个扫描线扫描输入到服务器处的编码器。如前所述,游戏生成视频帧可以在扫描输出过程期间被修改,诸如添加一个或多个覆盖层。因此,被选择性修改的生成视频帧被扫描输入到编码器中用于压缩,以准备将视频帧流式传输到客户端。
81.在530处,方法包括将对应视频帧的一个或多个编码器切片编码为一个或多个编码切片。也就是说,视频帧被压缩成包括一个或多个编码切片的压缩视频帧。如前所述,每个编码切片可以被配置成一个或多个扫描线,其中编码切片的最小大小是一个扫描线,并且其中编码切片的末端可能不一定出现在显示屏幕的边缘处。
82.在编码之后,一个或多个编码切片被传送到缓冲区。缓冲区的填充率取决于编码器的能力,从而每个编码切片都以编码器填充率传送到缓冲区。例如,缓冲区可以与编码器能够编码视频帧一样快地被填充,并且更具体地,与编码器能够生成编码切片和/或编码切片的数据包一样快地被填充。
83.此外,可以为编码器正在压缩的对应视频帧生成一个或多个前向纠错(fec)切片。客户端可以使用一个或多个fec切片来校正在传输到客户端期间丢失的任何编码切片。在一个实施方案中,一个或多个fec切片可以在流式传输期间在一个或多个编码切片内交织。也就是说,对于具有多个编码切片和多个fec切片的对应视频帧,fec切片可以在流式传输期间在编码切片内交织。例如,用于校正编码切片集合的fec切片可以在所述集合中编码切片中的每一个被传送之后立即被传送。
84.在540处,方法包括从缓冲区排出第一编码切片以通过网络以缓冲区排出率将第
一编码切片流式传输到客户端。也就是说,第一编码切片通过网络传送到客户端,其中客户端被配置为接收和解压缩压缩视频帧,以渲染到显示器。更具体地,第一编码切片的一个或多个数据包以排出率从缓冲区排出用于流式传输。在一个实施方案中,视频帧的至少一个编码切片在整个视频帧被编码之前被排出。在一个实施方案中,第一编码切片在完全编码对应视频帧的一个或多个切片之前通过网络流式传输。
85.在一个实施方案中,排出率被动态调整为大约等于客户端所测量最大接收带宽。具体而言,被压缩的多个视频帧的多个编码切片的传输是通过根据客户端的所测量最大接收带宽间隔编码切片来执行的。以这种方式,在一个实施方案中,缓冲区排出率与编码器填充率解耦。具体而言,图6是示出根据本公开的一个实施方案的多个视频帧的多个编码切片的间隔的图,其中当流式传输从服务器上执行的视频游戏生成的视频帧时,间隔是基于客户端210的最大接收带宽。
86.在一个实施方案中,调谐编码器/解码器(编解码器)610或使用编解码器是有益的,使得对应编码切片的数据包大小对应于由编解码器创建的数据的自然数量,以便减少缓冲和等待时间。编码切片(例如,被压缩的)可以包括一个或多个数据包,然后通过网络将这些数据包传送给客户端。在一个实施方案中,数据包大小与最大传输单元(mtu)相联系。当被压缩(成为编码切片)的视频编码器切片超过mtu时,编码切片被分割成几个数据包,每个数据包被调整大小为等于或小于mtu。
87.编码切片大于mtu的一个后果是,当数据包丢失发生时,发生的数据包丢失率和视觉损坏量将增加。例如,如果压缩编码器切片在编码期间被分割成三个数据包,并且数据包中的一个在到达客户端的途中丢失,则整个编码器切片在客户端处将变为无效,从而丢失单个数据包会导致三个数据包的有效丢失。因此,在一个实施方案中,可以将数据包大小调谐成由编解码器创建的数据的自然数量(例如,mtu)。在一种实现方式中,数据包大小被调谐成对应于udp数据包大小。在另一实现方式中,数据包大小可以被调谐成对应于屏幕切片(例如,从屏幕的边缘到边缘),其中数据包大小和编码切片对应于mtu。也就是说,编码切片被调整大小到mtu,并且可以作为一个数据包传送。这可以增加对应视频帧的编码切片的数量。当数据包大小被调谐成对应于服务器侧的编解码器中的自然因素(例如,mtu大小和/或编码切片)时,它使得一旦数据包中的每一个到达就在客户端侧解码数据包成为可能。
88.在一个实施方案中,压缩视频帧在特定时间点以基于网络上的最大可用比特率或带宽的速率从服务器传输到客户端。也就是说,压缩视频帧的编码切片的传输速率是根据当前测量的最大带宽动态调整的。因此,编码切片650的数据包655被间隔开,以根据最大可用比特率或最大带宽传送到客户端。也就是说,不是根据编解码器的比特率(例如,将编码器填充率615耦接到缓冲区排出率635)将数据包传递间隔开,而是根据客户端210的最大带宽(例如,将编码器填充率615与缓冲区排出率635解耦)传送数据包655(以与客户端的最大带宽相联系的缓冲区排出率635)。以这种方式,可以在客户端210处以更高速率接收数据包655。在一个实施方案中,数据包的编码以它们被传输的相同速率执行,使得两种操作都被动态地调谐到客户端可用的最大可用带宽。
89.此外,在服务器处,附加信息可能包括最大发送速率,最大发送速率定义了服务器认为可用于客户端的总网络吞吐量(例如,带宽)。这个最大发送速率可以由服务器通过跟踪针对一系列数据包发送到客户端的带宽量,以及从客户端到服务器的消息来确定,所述
消息指示针对同一系列数据包发生了多少数据包丢失。这可用于确定可以发送出去视频帧的编码切片的最大速率。最大速率会根据与客户端的网络连接的稳定性而波动,并且可以动态调整偏移以适应这种波动。此外,最大发送速率可以独立于编码器参数进行调整,从而如果编码器被配置为不以最大发送速率生成切片,则切片可以更快地发送出去。
90.在一个实施方案中,客户端处的最大带宽是通过来自客户端的反馈机制来确定的。具体而言,在应用层操作的流式传输器620测量客户端的最大带宽,诸如使用带宽测试器625。如前所述,应用层用于udp协议套件,用于通过互联网互连网络设备。例如,应用层定义了用于通过ip通信网络在设备之间进行通信的通信协议和接口方法。在测试期间,流式传输器620提供额外的fec数据包640,使得缓冲区630(例如,先进/先出fifo缓冲区)能够以预定义的比特率(诸如测试的最大带宽)流式传输数据包。在一个实施方案中,客户端将其在增量序列标识符(id)的范围内(诸如对于视频帧的范围)接收到的数据包数量作为反馈690返回到流式传输器620。例如,客户端可以报告类似于:收到序列id 100到250(例如,150个视频帧)的150个视频帧中的145个。这样,服务器260处的流式传输器620能够计算数据包丢失,并且由于流式传输器620知道在所述数据包序列期间正在发送(例如,被测试时)的带宽量,因此流式传输器620可以动态确定在特定时刻客户端的最大带宽是多少。客户端的所测量最大带宽可以作为控制信息627从流式传输器620传送到缓冲区630,使得缓冲区630可以以大约等于客户端的最大带宽的速率动态地传输数据包。
91.客户端210无法做出这种确定,因为正在发送的带宽量由于可变比特率、场景复杂性等而不断波动。因此,客户端210不知道服务器是否正在发送客户端在任何给定时刻能够处理的最大带宽。例如,最大带宽可能为15mbps(兆比特/秒),但因为场景复杂度可能由于用户在菜单上而很低,结果仅发送2mbps。因此,如果客户端报告0%的数据包丢失,这并不能告诉服务器260客户端210是否可以处理15mbps的最大带宽。因此,只有当服务器260发送最大带宽时,才能确定真正的最大带宽。
92.图7a是示出根据本公开的一个实施方案的当流式传输从服务器上执行的视频游戏产生的视频帧时客户端处的接收操作与解码操作的重叠以减少服务器与客户端之间的单向等待时间的图。此外,根据本公开的一个实施方案,接收、解码和解压缩视频帧的渲染以供显示(例如,显示操作)可以在客户端处重叠以减少服务器与客户端之间的单向等待时间。
93.具体而言,客户端210在操作405处接收压缩视频帧705,其中服务器(未显示)执行视频游戏以生成游戏渲染视频帧,游戏渲染视频帧然后在服务器处的编码器处进行编码并作为压缩视频帧705传送到客户端。如前所述,压缩视频帧705包括一个或多个编码切片,诸如编码切片a(其被散列)。例如,压缩视频帧705包括编码切片a到编码切片g。编码切片中的每一个可以具有不同的大小。例如,编码切片d大于编码切片e。此外,可以将切片中的每一个分割成一个或多个数据包。
94.客户端210包括解码器,解码器被配置为在操作406处解码对应压缩视频帧的一个或多个编码切片(例如,解码切片a——其未被散列)。在一个实施方案中,解码过程在客户端处完全接收到对应压缩视频帧之前开始。也就是说,对应视频帧的编码切片的解码在接收对应视频帧的所有编码切片之前开始。因为解码器在逐个编码切片的基础上进行解码,所以解码视频帧706包括一个或多个编码器切片(被解码时)。此后,解码视频帧706随后准
备用于显示,诸如将解码视频帧706中的信息渲染成扫描线或屏幕切片。因此,客户端渲染视频帧707准备好显示。
95.根据本公开的一个实施方案,在不容错模式中,可以通过让客户端210在操作406处完全解码视频帧之前在操作407处开始显示视频帧来减少服务器与客户端之间的单向等待时间。具体而言,可在压缩视频帧已被完全解码之前准备好视频帧的一个或多个解码切片以渲染到显示器。也就是说,407处的显示操作与406处的解码操作重叠。具体而言,第一编码切片(例如,切片a)必须在客户端开始扫描输出到显示器之前到达并被解码。此外,所有后续编码切片必须在它们的相应解压缩数据被渲染和扫描输出以供显示之前到达并被解码。
96.此外,除了在客户端处重叠接收操作与解码操作之外,即使在客户端210处完全接收到服务器发送的压缩视频帧之前,也可以显示随后被渲染以准备好显示的一个或多个解码切片。也就是说,对于对应视频帧,客户端处的接收操作、解码操作和显示操作中的一个或多个可以被重叠。
97.此外,根据本公开的一个实施方案,当在服务器处和客户端处重叠多个操作时,即使在服务器处的扫描输出操作完全完成之前,也可以在客户端处显示随后被渲染以准备好显示的视频帧的一个或多个解码切片。如前所述,扫描输出将游戏渲染视频帧传送到服务器处的编码器,其中游戏渲染视频帧可以在扫描输出过程期间被可选地修改(例如,添加覆盖层)。
98.通过对图2a至图2d的各种客户端设备210和/或云游戏网络290(例如,在游戏服务器260中)的详细描述,图7b的流程图700b示出了根据本公开的一个实施方案的用于云游戏的一种方法,其中客户端操作可以被重叠以减少云游戏服务器与客户端之间的单向等待时间。具体而言,图7b是示出当流式传输从服务器上执行的视频游戏生成的视频帧时客户端处的接收操作与解码操作的重叠以减少服务器与客户端之间的单向等待时间的流程图,其中解压视频帧的渲染也可以可选地与接收操作和解码操作重叠。
99.在710处,方法包括在客户端处接收压缩视频帧的一个或多个编码切片。具体而言,响应于在与客户端的会话期间由服务器以流式传输模式处理视频游戏,在服务器处生成多个视频帧。多个视频帧在编码器处编码成多个压缩视频帧,每个对应压缩视频帧包括一个或多个对应编码切片。多个压缩视频帧通过网络传输到客户端,且更具体地,多个压缩视频帧的编码切片被传输到客户端。
100.在客户端处,方法包括在解码器处接收多个压缩视频帧,以及解压缩多个压缩视频帧以渲染到与客户端相关联的显示器,其中这些操作可以被重叠。具体而言,在720处,方法包括在完全接收对应压缩视频帧的一个或多个编码切片之前在客户端处解码第一编码切片。
101.图8a是示出根据本公开的一个实施方案的当流式传输从在服务器上执行的视频游戏生成的视频帧时视频帧的编码切片内的前向纠错(fec)数据包的交织的图。对应视频帧的编码切片之间的fec数据的交织允许客户端处接收操作、解码操作与渲染以供显示的操作的重叠,这可以在逐个编码切片的基础上执行。具体而言,前向纠错提供了对应视频帧的丢失编码切片的重建和/或编码切片的丢失数据包的重建。因此,前向纠错允许在一个或多个后续编码切片已被接收和/或解码之前客户端处接收、解码和渲染以供显示的编码切
片的显示。
102.例如,编码切片可以被划分成一个或多个网络数据包。fec数据包可以用于校正与一个切片相关联的一个或多个数据包。这样,fec数据包可以在对应压缩视频帧的数据包内(例如,在编码切片的数据包内)交织,以使用fec加速丢失数据包的恢复。也就是说,不是将fec数据包放在对应压缩视频帧的数据包成组的末尾处,而是在数据包内交织fec数据包。以这种方式,一旦对应压缩视频帧的一个或多个数据包丢失,就可以几乎立即使用对应fec数据包恢复那些丢失的数据包。具体而言,可以在不等待整个数据包集合被传送的情况下恢复对应压缩视频帧的丢失数据包。这是因为对应fec数据包在所述fec数据包可以恢复的数据包之后被传送。因此,较早(例如,在对应压缩视频帧的编码切片的传输期间)接收到并且可能在接收到压缩视频帧的所有数据包之前接收到的fec数据包可以用于恢复一个或多个丢失数据包。也就是说,在本公开的实施方案中,可以较早(例如,在压缩视频帧的接收期间)地执行前向纠错以校正编码切片的丢失和/或损坏的数据包,而无需等待客户端接收到压缩视频帧的整个数据包集合(例如,数据和fec)。通常,压缩视频帧的任何数据包的前向纠错是在接收到所述压缩视频帧的所有数据包之后执行的——从而增加了服务器与客户端之间的单向等待时间,其中本公开的实施方案在客户端仍在接收压缩视频帧时执行前向纠错——从而减少了单向等待时间。这样,通过在对应压缩视频帧的数据包内交织fec数据包,这提供了客户端处重叠解码操作与显示操作。
103.此外,根据本公开的一个实施方案,当数据包被调谐到mtu时,这可以允许更容易地从数据包丢失恢复。也就是说,由于数据包被调谐和/或调整大小为编码切片(即,编码切片与对应数据包之间的一对一关系),因此可以使用对应fec来恢复丢失的完整编码切片。以这种方式,跨数据包完成fec创建,使得fec数据包可用于校正一个或多个对应数据包,其中每个数据包对应于一个编码切片。如图8a中所示,编码切片中的每一个被调整大小为等于或低于mtu 850,使得每个编码切片使用一个对应数据包通过网络传输。
104.图8a显示根据本公开的一个实施方案的在编码视频帧的压缩编码器切片的数据包内fec数据包的交织。纯粹例如,编码视频帧可以包括编码切片0、编码切片1、编码切片2和编码切片3。另外,编码切片可以被调整大小为mtu 850或更小。如图所示,fec-0和fec-1与编码切片0、编码切片1、编码切片2和编码切片3的数据包交织。
105.具体而言,在压缩期间为编码切片0创建数据包810a,其中编码切片0被调整大小为压缩成一个数据包。编码切片0可以包括用于fec创建和恢复的填充部分810b。重要的是要注意,只有数据包810a从服务器传输到客户端,因为在一个实施方案中,填充部分810b在传输之前被剥离,但是出于恢复目的,可以在客户端处考虑。类似地,在压缩期间为编码切片1创建数据包811a,其中编码切片1可以被调整大小为压缩成一个数据包。编码切片1不包括用于fec创建的对应填充部分,因为它是在fec期间恢复的数据包集合中的最大数据包,如下所述。
106.fec-0生成为数据包820,并且在编码切片0和编码切片1的数据包之后传输。fec-0 820可以用于校正可能丢失的那些编码切片中的每一个,和/或可用于校正那些压缩编码切片中的每一个的丢失数据包。fec-0的数据包820的数据包大小可以规定用于为执行fec创建和恢复的目的而被压缩的编码切片0和编码切片1的填充部的大小。也就是说,fec数据包是根据块大小调整来创建的,其中fec数据包的大小被调谐成可以使用所述对应fec数据包
校正的数据包集合中的最大数据包的大小。因此,fec创建需要了解集合中数据包的大小调整。然而,不必出于创建fec的目的等待对应于fec数据包的数据包集合中的数据包中的每一个在传输集合中的任何数据包之前生成,集合中的数据包可以在压缩时立即被传输。
107.具体地,编码切片0的数据包810a可以在一旦其在服务器的编码器处被压缩就被传输,而无需等待fec-0的生成,并且可以被存储或缓冲以用于fec创建。此外,编码切片1的数据包811a可以在一旦其在服务器的编码器处被压缩就被传输,也无需等待fec-0的生成,并且可以被存储或缓冲以用于fec创建。因为fec数据包是使用块大小调整创建的,所以在创建可用于恢复可能丢失的那些数据包中的任何一个的对应fec数据包之前,需要传达数据包中的每一个的大小。
108.在一个实施方案中,每个数据包的大小被包括在需要被读取以用于创建fec的对应数据包的报头中。在另一实施方案中,因为存储了编码切片的数据包810a和811a中的每一个,所以这些数据包中的每一个的大小调整是已知的或可以确定的,而不是传达需要被读取以用于创建fec的对应数据包的报头中每个数据包的大小。一旦可以使用对应fec数据包来校正的数据包集合中已知最大数据包的大小,则在生成fec-0时,可以将fec-0的数据包的块大小调整调谐成数据包810a和811a中的最大值。
109.此外,一旦已知fec-0的大小,出于fec创建和数据恢复的目的可以使用fec-0来校正的数据包集合中数据包的填充部大小也就已知。如图8a中所示,fec-0被调谐成编码切片1的数据包811a的大小调整,数据包811a是包含编码切片0和编码切片1的集合中的最大数据包。因此,对于fec的创建和/或数据恢复,编码切片0需要填充部810b。因为fec-0数据包820的大小被调谐成编码切片1的数据包811a的大小(即,是可以使用fec-0校正的数据包集合中的最大数据包),所以编码切片1的数据包811a不需要任何用于创建fec和/或数据恢复的填充部。
110.在另一实施方案中,可以将填充部设置为一个实施方案中的mtu。具体而言,将fec数据包标准化为mtu的大小。此外,出于fec创建和/或数据恢复的目的,可以使用对应fec校正的数据包集合中数据包中的每一个也被填充到mtu。例如,出于fec创建和/或数据恢复的目的,fec-0将被调整大小为mtu,编码切片0将被填充到mtu,并且编码切片1也将被填充到mtu。
111.继续图8a的示例,fec-1可用于校正包括编码切片2和编码切片3的数据包集合。具体而言,在压缩期间为编码切片2创建数据包812a,其中编码切片2可以被调整大小为压缩成一个数据包。编码切片2不包括用于fec创建和/或数据恢复的对应填充部分,因为它是可以使用fec-1恢复的数据包集合中的最大数据包。另外,在压缩期间为编码切片3创建数据包813a,其中编码切片3可以被调整大小为压缩成一个数据包。编码切片3可以包括用于在传输之前被剥离的用于fec创建和数据恢复的对应填充部分813b。fec-1作为数据包825生成,并且在编码切片2和编码切片3之后传输。fec-1可用于校正可能丢失的那些编码切片中的每一个,和/或可用于校正那些压缩编码切片中的每一个的丢失数据包。具体地,编码切片1的数据包812a可以在一旦其在服务器的编码器处被压缩就被传输,而无需等待fec-1的生成,并且可以被存储或缓冲以用于fec创建。此外,编码切片3的数据包813a可以在一旦其在服务器的编码器处被压缩就被传输,也无需等待fec-1的生成,并且可以被存储或缓冲以用于fec创建。
112.类似地,fec-1的数据包825的数据包大小可以规定在编码期间用于编码切片2和编码切片3的填充部的大小。如前所述,每个数据包的大小可以包括在需要出于fec创建的目的而读取的对应数据包的报头中。如前所述,因为存储了编码切片的数据包812a和813a中的每一个,所以这些数据包中的每一个的大小调整是已知的或可以确定的,而不是传达需要被读取以用于创建fec的对应数据包的报头中每个数据包的大小。一旦可以使用对应fec数据包来校正的数据包集合中已知最大数据包的大小,则在生成fec-1时,可以将fec-1的数据包的块大小调整调谐成数据包812a和813a中的最大值。具体而言,一旦已知fec-1的大小,则出于fec创建和数据恢复的目的可以使用fec-1来校正的数据包集合中数据包的填充部是已知的。如图8a中所示,fec-1被调谐成编码切片2的数据包812a的大小调整,数据包812a是包含编码切片2和编码切片3的集合中的最大数据包。因此,对于fec创建和/或数据恢复,编码切片2不需要填充部。另一方面,对于fec创建和/或数据恢复,编码切片3需要填充部813b。
113.在本公开的实施方案中,可以实现一种或多种策略来恢复在流式传输媒体内容和/或接收被流式传输的媒体内容时在从服务器到客户端的传输期间丢失的客户端处的编码切片和/或编码切片的数据包。如前所述,对应压缩视频帧的每个编码切片被打包成一个对应网络数据包,使得一个数据包以一对一关系对应于单个编码切片。当重叠包括服务器操作和客户端操作的流水线的所有部分时,需要确定何时等待对应视频帧的附加数据包(例如,当丢失数据包尚未接收到时)以及何时进入下一个视频帧。
114.数据包的报头中的信息可用于确定何时移动到下一视频帧。在每个数据包报头中,存在一个帧索引,它告诉视频游戏(例如,游戏应用)对应数据包属于哪个视频帧。此外,每个数据包报头都包含有关所述帧的数据包索引和数据包总数的信息。例如,图8b是根据本公开的一个实施方案的对应视频帧的编码切片的数据包800b的报头850的图。例如,报头850中的信息包括:对应视频帧的帧号851、对应视频帧的编码切片的总数852、帧生成时间戳(例如,在翻转时间获取)853、加密验证854、对应fec数据包的标识符855、编码切片号856、以及指定对应编码切片何时生成的时间戳857。可选地,数据包800b的大小可以包括在报头850中。数据包800b包括数据部分858。
115.在客户端处接收到来自下一个视频帧的数据包时,决定是等待当前视频帧的剩余数据包,还是进入下一个视频帧。具体地,当接收到当前视频帧(n)的数据包时,执行对接收到哪些数据包的跟踪。在一个实施方案中,一旦接收到来自下一个视频帧(n 1)的数据包,就需要校正当前视频帧的尚未接收到的任何数据包(减去fec数据包),诸如通过称为“predec”的方法。执行predec以生成语法正确的h.264编码切片,以保持整个h.264视频帧的语法正确。也就是说,当确定编码切片和/或编码切片的一个或多个数据包丢失时,通过插入跳过宏块来生成填料切片作为丢失的编码切片的替代。以这种方式,当有丢失的编码切片时,解码器不太可能崩溃。
116.此时,客户端侧可能会发生损坏,并且可能需要执行参考帧失效、fec恢复或使用来自先前渲染的视频帧的数据来修复屏幕上的任何损坏区域(例如,对应于丢失的编码切片的跳过宏块)。
117.例如,在一个实施方案中,可以执行参考帧失效以修复对应于第一编码切片的像素的跳过宏块。在另一实施方案中,执行fec恢复以校正丢失的编码切片和/或对应编码切
片的丢失的数据包或丢失的多个数据包。例如,所接收fec数据包和/或fec切片用于重新生成和/或恢复丢失的编码切片或对应编码切片的丢失的数据包或丢失的多个数据包。
118.在又一个实施方案中,先前的视频帧用于修复跳过宏块。例如,当在客户端处渲染到用于当前视频帧的显示器时,使用先前视频帧的颜色值用于对应于丢失的编码切片的跳过宏块的像素。具体而言,来自保存前一视频帧的像素数据的帧缓冲区的适当数据被识别为与丢失的编码切片的像素和/或跳过宏块重叠。例如,当前视频帧可能具有八个切片,其中缺少第二编码切片。由于前一视频帧已经被渲染以供客户端处显示,因此来自前一视频帧的数据可用于寻址当前视频帧的丢失的第二编码切片。出于说明的目的,前一视频帧可能已经被分割成十三个编码切片。为了在客户端处显示而渲染的当前视频帧的数据被放置到“新”显示缓冲区中(例如,逐个像素地)。与对应于丢失编码切片的像素重叠的前一视频帧的像素数据可以从“旧”显示缓冲区识别和访问。也就是说,来自前一视频帧的像素数据可用于当前视频帧的丢失的第二编码切片。
119.图9示出了可以用于执行本公开的各种实施方案的各方面的示例性设备900的部件。例如,图9示出了根据本公开的实施方案的适用于流式传输媒体内容和/或接收被流式传输的媒体内容的示例性硬件系统,包括在服务器处重叠编码操作与发送操作,和在客户端处重叠接收操作与解码操作,以及在客户端处重叠接收操作、解码操作与渲染到显示器的操作。这一框图示出了设备900,设备900可以并入有或可以是个人计算机、服务器计算机、游戏控制台、移动设备或其他数字设备,其中每一个都适用于实践本发明的实施方案。设备900包括用于运行软件应用和可选的操作系统的中央处理单元(cpu)902。cpu 902可以由一个或多个同构处理核心或异构处理核心组成。
120.根据各种实施方案中,cpu 902是具有一个或多个处理核心的一个或多个通用微处理器。进一步的实施方案可以使用一个或多个cpu来实现,这些cpu具有专门适用于在游戏执行期间配置用于图形处理的应用的高度并行和计算密集型应用(诸如媒体和互动娱乐应用)的微处理器架构。
121.存储器904存储应用和数据,以供cpu 902和gpu 916使用。存储设备906为应用和数据提供非易失性存储设备和其他计算机可读介质并且可以包括固定磁盘驱动器、可移动磁盘驱动器、闪存设备和cd-rom、dvd-rom、蓝光、hd-dvd或其他光学存储设备,以及信号传输和存储介质。用户输入设备908将来自一个或多个用户的用户输入传达到设备900,其示例可以包括键盘、鼠标、操纵杆、触摸板、触摸屏、静止或视频录像器/摄像机和/或传声器。网络接口909允许设备900经由电子通信网络与其他计算机系统通信,并且可以包括通过局域网和广域网(诸如因特网)的有线或无线通信。音频处理器912适于从由cpu 902、存储器904和/或存储设备906提供的指令和/或数据生成模拟或数字音频输出。设备900的部件,包括cpu 902、包括gpu 916和gpu高速缓存918的图形子系统、存储器904、数据存储设备906、用户输入设备908、网络接口909和音频处理器912,经由一根或多根数据总线922连接。
122.图形子系统914进一步与数据总线922和设备900的部件连接。图形子系统914包括图形处理单元(gpu)916和图形存储器918。图形存储器918包括用于存储输出图像的每个像素的像素数据的显示存储器(例如,帧缓冲区)。图形存储器918可以与gpu 916集成在相同的设备中、作为单独的设备与gpu 916连接和/或在存储器904中实现。像素数据可以直接从cpu 902提供到图形存储器918。替代地,cpu 902向gpu 916提供定义期望输出图像的数据
和/或指令,gpu 916从中生成一个或多个输出图像的像素数据。定义期望输出图像的数据和/或指令可以存储在存储器904和/或图形存储器918中。在实施方案中,gpu 916包括3d渲染能力,用于根据定义场景的几何形状、照明、着色、纹理化、动作和/或相机参数的指令和数据生成输出图像的像素数据。gpu 916可以进一步包括能够执行着色器程序的一个或多个可编程执行单元。
123.图形子系统914周期性地从图形存储器918输出图像的像素数据,以显示在显示设备910上,或由投影系统(未显示)投影。显示设备910可以是能够响应于来自设备900的信号而显示视觉信息的任何设备,包括crt、lcd、等离子和oled显示器。设备900可以向显示设备910提供例如模拟信号或数字信号。
124.用于优化图形子系统914的其他实施方案可以包括gpu实例在多个应用之间共享的多租户gpu操作,以及支持单个游戏的分布式gpu。图形子系统914可以被配置为一个或多个处理设备。
125.例如,图形子系统914可以被配置为执行多租户gpu功能,其中在一个实施方案中,一个图形子系统可以为多个游戏实现图形和/或渲染流水线。也就是说,图形子系统914在正在执行的多个游戏之间被共享。
126.在其他实施方案中,图形子系统914包括多个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中的每一个可以被分配给对应于视频帧的场景的不同对象和/或部分。在上述实施方案和实现方式中,这些操作可以在同一帧周期(同时并行)或不同帧周期(顺序并行)中执行。
127.因此,本公开描述了被配置用于流式传输媒体内容和/或接收被流式传输的媒体内容的方法和系统,包括在服务器处重叠编码操作与发送操作,和在客户端处重叠接收操作与解码操作,以及在客户端处重叠接收操作、解码操作与渲染到显示器的操作。
128.应当理解,可以使用本文公开的各种特征将本文定义的各种实施方案组合或组装成具体的实现方式。因此,所提供示例只是一些可能的示例,而不限于通过组合各种元件来定义更多的实现方式而可能的各种实现方式。在一些示例中,一些实现方式可以包括更少的元件,而不背离所公开的或等效实现方式的精神。
129.本公开的实施方案可以用包括手持式设备、微处理器系统、基于微处理器的或可编程的消费电子产品、小型计算机、大型计算机等的各种计算机系统配置来实践。还可以在分布式计算环境中实践本公开的实施方案,在所述分布式计算环境中,通过基于有线或无
线网络链接的远程处理设备执行任务。
130.考虑到以上实施方案,应当理解,本公开的实施方案可以采用涉及存储在计算机系统中的数据的各种计算机实现的操作。这些操作是需要物理地操纵物理量的那些操作。本文描述的形成本公开的实施方案的一部分的任何操作都是有用的机器操作。本公开的实施方案还涉及用于执行这些操作的设备或装置。可以针对所需目的专门构造所述装置,或者所述装置可以是由存储在计算机中的计算机程序选择性地激活或配置的通用计算机。具体地,各种通用机器可与根据本文的教导编写的计算机程序一起使用,或者构造更专门的装置来执行所需操作可能更方便。
131.本公开还可以实施为计算机可读介质上的计算机可读代码。计算机可读介质是可以存储数据的任何数据存储设备,所述数据随后可以由计算机系统读取。计算机可读介质的示例包括硬盘驱动器、网络附接存储器(nas)、只读存储器、随机存取存储器、cd-rom、cd-r、cd-rw、磁带以及其他光学和非光学数据存储设备。计算机可读介质可以包括分布在网络耦接的计算机系统上的计算机可读有形介质,使得以分布式方式存储和执行计算机可读代码。
132.尽管以具体的顺序描述了方法操作,但应理解,可在操作之间执行其他内务操作,或者可以调整操作,使得它们在略微不同的时间发生,或者可以分布在允许以与处理关联的各种间隔发生处理操作的系统中,只要覆盖操作的处理以期望的方式执行即可。
133.虽然出于清楚理解的目的相当详细地描述了前述公开内容,但显而易见的是,可以在所附权利要求的范围内实践某些改变和修改。因此,本实施方案被认为是说明性的而非限制性的,并且本公开的各种实施方案不限于本文给出的细节,而可以在所附权利要求的范围和等效物内进行修改。
再多了解一些

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

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

相关文献