用于云游戏的方法和装置与流程

文档序号:29643811发布日期:2022-04-13 19:25阅读:603来源:国知局
用于云游戏的方法和装置与流程
用于云游戏的方法和装置
引用并入
1.本技术要求于2021年2月16日提交的美国专利申请第17/176,502号“用于云游戏的方法和装置”的优先权,该申请要求于2020年3月16日提交的美国临时申请第62/990,193号“云游戏系统中的视频编解码方法”的优先权。在先申请的全部公开内容在此全文引入作为参考。
技术领域
2.本公开描述了总体上涉及云游戏领域中的多媒体技术的实施例。


背景技术:

3.本文中提供的背景描述是为了总体地呈现本公开的上下文。当前署名的发明人的工作,在该背景技术部分中描述了该工作的程度,以及在提交时可能不构成现有技术的描述的各方面,既不明示地也不暗示地被认为是本公开的现有技术。
4.云游戏服务是可从多个服务提供商获得的趋势在线服务。云游戏也可以被称为点播游戏。在云游戏系统中,游戏在远程服务器上运行并且被称为基于云的游戏。用户可以经由用户设备玩基于云的游戏。游戏内容可以在移除服务器处生成,并且被流传输并且显示在用户设备上。


技术实现要素:

5.本公开的各方面提供了用于云游戏的方法和装置。在一些示例中,用于云游戏的装置包括处理电路。例如,处理电路接收视频序列和与该视频序列相关联的元数据。该视频序列包括响应于游戏控制信息而生成的图片帧序列,并且该元数据指示游戏控制信息。该处理电路可以基于指示游戏控制信息的元数据来配置编码参数。然后,该处理电路可以基于编码参数将视频序列编码成已编码视频码流。
6.在一些实施例中,元数据包括摄像头信息、颜色信息、照明信息、运动信息、视图信息、叠加信息和用户控制信息中的至少一种。
7.在实施例中,处理电路通过网络接收携带用户控制信息的信号。响应于用户控制信息生成视频序列。
8.在一些示例中,处理电路基于游戏场景控制信息和用户控制信息来确定游戏场景的全局运动和游戏场景内的边界框中的对象的局部运动中的至少一个的运动信息。
9.在一些实施例中,处理电路基于指示游戏控制信息的元数据确定用于对视频序列进行编码的运动模型。运动模型可以是仿射模型、透视模型、旋转模型和缩放模型之一。
10.在一些示例中,元数据可以经由接口电路和网络被传输到已编码视频码流的目的地设备。在示例中,在补充增强信息(sei)消息中与已编码视频码流一起传输元数据。
11.在另一示例中,元数据包括叠加内容。处理电路将叠加内容编码成叠加内容码流,并且将已编码视频码流和叠加内容码流多路复用成输出码流。然后输出码流可以被传输。
12.在一些其它示例中,一种用于云游戏的装置包括处理电路,该处理电路接收已编码视频码流以及与该已编码视频码流相关联的元数据。元数据指示游戏控制信息。处理电路基于元数据来配置解码参数和重建参数。然后,处理电路基于解码参数对已编码视频码流进行解码,并且基于重建参数对视频序列进行重建。在示例中,元数据包括叠加内容。处理电路将输入码流解多路复用成已编码视频码流和叠加内容码流。对叠加内容码流进行解码以生成叠加内容。然后,可以利用叠加内容来重建视频序列。
13.本公开的各方面还提供了一种存储指令的非易失性计算机可读介质,这些指令在由计算机执行时使得计算机执行用于云游戏的方法。
附图说明
14.根据以下具体实施方式和附图,所公开的主题的其它特征、性质和各种优点将更加明显,在附图中:
15.图1示出了根据本公开的实施例的云游戏系统的框图。
16.图2示出了根据本公开的一些实施例的云游戏场景的示意图。
17.图3示出了根据本公开的一些实施例的云游戏系统的框图。
18.图4示出了根据本公开的实施例的视频编码器的框图。
19.图5示出了根据本公开的一些实施例的视频解码器的图。
20.图6示出了概述根据本公开的实施例的过程示例的流程图。
21.图7示出了概述根据本公开的实施例的另一过程示例的流程图。
22.图8是根据实施例的计算机系统的示意图。
具体实施方式
23.本公开的各方面提供了用于云游戏领域中的元数据辅助的视频编解码(编码/解码)设计的系统、设备和方法。
24.图1示出了根据本公开的实施例的云游戏系统(100)的框图。云游戏系统(100)包括通过网络(150)连接的服务器系统(101)和客户端系统(102)。服务器系统(101)包括耦合在一起的一个或多个服务器(110)。例如,服务器系统(101)可以包括一个或多个数据中心、一个或多个服务器场等。服务器系统(101)可以呈现游戏内容并且将游戏内容压缩为码流。码流可以经由网络(150)传递到客户端系统(102)。客户端系统(102)包括可以分别与游戏用户(也被称为玩家)交互的一个或多个客户端设备(160)。例如,客户端设备(160)可以从游戏用户接收用户控制信息,并且可以向游戏用户提供输出,诸如视频输出、音频输出。
25.服务器(110)可以分别使用任何合适的技术来实现。在图1的示例中,服务器(110)包括耦合在一起的处理电路(120)、存储器(115)和接口电路(111)。存储器(115)被配置为在处理之前、处理期间和处理之后存储软件指令和各种数据(诸如媒体数据、配置信息、控制信息等)。
26.处理电路(120)可以包括任何合适的处理电路,诸如一个或多个中央处理单元(cpu)、一个或多个图形处理单元(gpu)、专用集成电路等。在图1的示例中,处理电路(120)可以被配置为包括游戏引擎(125)。例如,一个或多个cpu和/或gpu可以执行存储在存储器(115)中的游戏软件以用作游戏引擎(125)。进一步地,处理电路(120)可以被配置为包括编
码器,诸如视频编码器、音频编码器等。在图1的示例中,处理电路(120)被配置为包括视频编码器(130)。例如,一个或多个cpu和/或gpu可以被配置为用作视频编码器(130)。在另一示例中,可以使用专用集成电路来实现视频编码器(130)。
27.接口电路(111)可以将服务器(110)与网络(150)连接。接口电路(111)可以包括从网络(150)接收信号的接收部分和向网络(150)传输信号的传输部分。例如,接口电路(111)可以经由网络(150)向其他设备(诸如客户端设备(160))传输携带已编码媒体数据(诸如已编码视频码流、已编码音频码流等)的信号。接口电路(111)可以经由网络(150)从客户端设备(160)接收携带诸如用户输入等用户信息的信号。
28.网络(150)经由诸如以太网连接、光纤连接、wifi连接、蜂窝网络连接等有线和/或无线连接适当地与服务器系统(101)和客户端系统(102)耦合。网络(150)可以包括网络服务器设备、存储设备、网络设备等。网络(150)的部件经由有线和/或无线连接适当地耦合在一起。
29.客户端设备(160)被配置为与用户交互。在图1的示例中,客户端设备(160)包括耦合在一起的各种部件,诸如接口电路(161)、处理电路(170)、显示器(165)和用户输入设备(169)。
30.接口电路(161)可以将客户端设备(160)与网络(150)接口。接口电路(161)可以包括从网络(150)接收信号的接收部分和向网络(150)传输信号的传输部分。例如,接口电路(161)可以从网络(150)接收由服务器(110)发送的携带数据的信号(诸如携带已编码视频码流的信号、携带音频码流的信号等),并且可以经由网络(150)将信号(诸如携带用户输入的信号等)传输到其他设备(诸如服务器(110))。
31.用户输入设备(169)可以接收用户输入,并且用户输入可以被适当地发送到服务器系统(101)。在示例中,可以将用户输入提供给处理电路(170),并且处理电路(170)可以将用户输入转换成适当的形式,诸如消息、分组等,并且经由接口电路(161)发送用户输入。用户输入可以经由网络(150)被发送到服务器系统(101)。用户输入设备(169)可以是任何合适的用户输入设备,诸如操纵杆、运动传感器、麦克风、键盘、鼠标、触摸屏、触摸板等。
32.处理电路(170)可以包括适当的处理电路,诸如cpu、gpu、专用集成电路等。处理电路(170)可以被配置为包括一个或多个媒体解码器,诸如视频解码器、音频解码器等。例如,处理电路(170)被配置为包括视频解码器(180)。在示例中,gpu被配置为视频解码器(180)。在另一示例中,cpu可以执行软件指令以用作视频解码器(180)。视频解码器(180)可以对已编码视频码流中的信息进行解码并且重建视频序列(例如,图片帧序列)。
33.进一步地,处理电路(170)可以被配置为包括游戏客户端(175)。例如,cpu可以执行云游戏客户端软件以用作游戏客户端(175)。游戏客户端(175)可以接收用户输入(171)并且将表示用户输入(171)的数据发送到服务器(110)中的游戏引擎(125)。
34.显示器(165)可以是任何合适的显示设备,诸如电视、智能电话、可穿戴显示器、头戴式设备等。在示例中,显示器(165)可以接收视频序列并且适当地显示该视频序列。
35.在一些示例中,为了玩游戏,游戏引擎(125)可以生成用于游戏的游戏内容,诸如描绘游戏的各种游戏环境的视频序列、音频等。在示例中,游戏引擎(125)可以生成视频内容(122)(例如,视频序列),并且将视频内容(122)提供给视频编码器(130)。视频编码器(130)可以将视频内容(122)压缩为已编码视频码流(123),并且已编码视频码流(123)可以
由接口电路(111)传输并且经由网络(150)被流传输到客户端设备(160)。在客户端设备(160)处,接口电路(161)可以接收携带已编码视频码流的信号,并且将已编码视频码流(172)提供给视频解码器(180)。视频解码器(180)可以从已编码视频码流(172)重建视频序列,并且重建的视频序列(173)可以被提供给显示器(165)以向游戏用户提供游戏环境。
36.游戏用户可以与游戏客户端交互(175)。例如,游戏客户端(175)可以接收用户控制信息(在一些示例中也称为交互数据),诸如图1中所示的用户输入(171)。用户控制信息(诸如命令、位置信息、深度信息、运动信息等)可以经由接口电路(161)、网络(150)和接口电路(111)从游戏客户端(175)传输到游戏引擎(125)(用户控制信息由服务器(110)处的(121)示出)。然后,响应于接收的用户控制信息(121),游戏引擎(130)可以执行操作并且生成更新的游戏内容。更新的游戏内容可以被压缩并且从服务器(110)提供给客户端设备(160)。当游戏继续时,游戏过程重复。
37.在一些实施例中,游戏引擎(125)可以生成原始视频内容(122)形式的游戏视频内容,诸如yuv格式的图片帧序列。可以将原始视频内容(122)提供给视频编码器(130)。视频编码器(130)压缩原始视频内容,并且生成遵循诸如h.264、h.265、av1、avs2等特定视频编码格式或标准的已编码视频码流(123)。该已编码视频码流(123)被发送到客户端设备(160),并且可以由客户端的视频解码器使用与视频编码器(130)一致的格式或标准来解码以供显示。
38.云游戏系统(100)提供了一种通过在远程服务器上运行游戏软件来玩视频游戏的方式,与相关示例中的游戏控制台或其他本地设备相反。例如,游戏公司拥有作为用于游戏流传输的专用服务器的服务器(110),并且服务器(110)可以比消费者端的硬件(例如,客户端设备)强大得多。进一步地,在一些示例中,流传输服务可以向多个玩家(用户)正在玩相同游戏的多个客户端设备(160)发送类似的数据。因此,多个玩家可以玩相同的游戏的操作成本(对于游戏公司)的总量小于相关示例中预期的操作成本的总量,其中成本与玩家的数量成比例。
39.图2示出了图示根据本公开的一些实施例的云游戏场景的图(200)。在图2的示例中,服务器(210)是为游戏提供游戏服务的云游戏服务器,并且客户端设备260a-260c是分别与游戏的玩家a-c交互的客户端设备。服务器(210)可以与图1中的服务器(110)类似地配置。客户端设备260a-260c可以分别与图1中的客户端设备(160)类似地配置。
40.在图2的示例中,服务器(210)中的游戏引擎(未示出)呈现用于游戏环境的游戏内容,并且经由网络(未示出)向客户端设备(260a)-(260c)提供游戏内容。在某个时刻,如图2中的(201)所示,客户端设备(260b)接收用户控制信息,诸如来自玩家b的用户输入。如图2中的(202)所示,客户端设备260b经由网络将表示用户输入的数据发送到服务器(210)。响应于表示用户输入的数据,如图2中的(203)所示,服务器(210)中的游戏引擎操作游戏环境并且对其进行更新。然后,如图2中的(204)所示,服务器(210)向客户端设备(260a)-(260c)发送更新的游戏内容。在客户端,如图2中的(205)所示,客户端设备(260a)-(260c)中的每一个可以响应于更新的游戏内容刷新游戏环境,诸如刷新显示器。
41.在相关示例中,客户端设备可以是游戏控制台或pc,其需要玩大多数游戏并且构成游戏的高额成本。游戏控制台或pc的成本可以为几千到几万美元。本地机器(游戏控制台或pc)也随时间磨损并且具有降低的性能。随着技术的发展,云游戏服务器不断升级,而对
消费者没有额外的成本。
42.根据本公开的一些方面,云游戏可能需要高的且可靠的带宽要求以及用于双向通信的低时延要求,以便实现良好的用户体验。在一些示例中,云游戏可能需要快速且稳定的因特网连接以及与游戏服务器的紧密接近,以便具有高且可靠的带宽。例如,用于云游戏的流传输服务可能需要10mbps至35mbps之间的带宽。本公开提供了提高编码速度和编码效率的技术,以便降低带宽要求并且提高视觉质量。
43.在一些示例中,高时延可能对游戏体验有害。时延可能由于许多因素造成,并且用于串媒体的视频编码是所述因素中的一者。本公开还提供减少编码时间同时维持编码效率且因此改进云游戏体验的技术。
44.本公开的各方面提供了用于云游戏系统中的元数据辅助视频编码设计的技术。在一些示例中,视频内容(例如,原始视频)的元数据是指提供关于视频内容的信息(诸如摄像头信息、颜色信息、照明信息、运动信息、视图信息、用户控制等)的数据。元数据连同原始视频可以由游戏引擎(例如,游戏(125))呈现,并且还可以由游戏引擎提供作为到视频编码器(例如,视频编码器(130))的输入,以便辅助编码过程。在一些实施例中,视频编码器(例如,视频编码器(130))可以在元数据的帮助下将原始视频编码成已编码视频码流。进一步地,在一些实施例中,可以将元数据与已编码视频码流一起提供给视频解码器(例如,视频解码器(180))。视频解码器(例如,视频解码器(180))可以在元数据的帮助下对已编码视频码流进行解码。
45.图3示出了根据本公开的一些实施例的云游戏系统(300)的框图。云游戏系统(300)类似于以上描述的云游戏系统(100)进行操作,并且利用与云游戏系统(100)中使用的部件相同或等同的某些部件。例如,服务器系统(301)与服务器系统(101)类似地配置;客户端系统(302)与客户端系统(102)类似地配置;网络(350)与网络(150)类似地配置;服务器(310)与服务器(110)类似地配置;处理电路(320)与处理电路(120)类似地配置;存储器(315)与存储器(115)类似地配置;接口电路(311)与接口电路(111)类似地配置;游戏引擎(325)与游戏引擎(125)类似地配置;视频编码器(330)与视频编码器(130)类似地配置;接口电路(361)与接口电路(161)类似地配置;处理电路(370)与处理电路(170)类似地配置;显示器365与显示器(165)类似地配置;用户输入设备369与用户输入设备(169)类似地配置;游戏客户端(375)与游戏客户端(175)类似地配置;视频解码器(380)与视频解码器(180)类似地配置。以上已经提供了对这些部件的描述,并且为了清楚起见,这里将省略这些描述。
46.进一步地,在图3的示例中,视频编码器(330)被配置为在元数据的帮助下将视频内容编码成视频码流。例如,视频编码器(330)包括控制器(331),其作为基于元数据的控制器。游戏引擎(325)将原始视频内容(322)与元数据(326)一起提供给视频编码器(330)。元数据(326)包括与原始视频内容(322)相关联的信息,诸如与原始视频内容(322)相关联的摄像头信息、颜色信息、照明信息、运动信息、视图信息、用户控制。控制器(331)接收元数据(326)并且基于元数据(326)控制视频编码器(330)的配置以对原始视频内容(322)进行编码并且生成已编码视频码流(323)。元数据的帮助提高了编码速度和效率,并且可以减少带宽要求以及减少时延。
47.在一些实施例中,已编码视频码流(323)可以与元数据一起输出,如由元数据输出
(327)所示。
48.进一步地,在图3的示例中,视频解码器(380)被配置为在元数据的帮助下对视频码流进行解码。例如,视频解码器(380)包括控制器(381),其作为基于元数据的控制器。控制器(381)接收元数据(377)以及已编码视频码流(372)。在示例中,已编码视频码流(372)可以是由视频编码器(330)生成的已编码视频码流(323),并且元数据(377)可以是元数据输出(327)。控制器(381)可以基于元数据(377)控制视频解码器(380)的配置以对已编码视频码流(372)进行解码,并且生成重建的视频序列(373)。
49.在一些实施例中,从游戏引擎(325)到视频编码器(330)的元数据(326)可以包含可以帮助改进编码效率和/或降低编码过程的复杂性的任何合适的游戏控制信息,比如游戏场景信息(例如,摄像头信息、颜色信息、照明信息、运动信息、视图信息)、用户控制信息等。
50.具体地,在一些示例中,来自用户输入设备(369)(诸如操纵杆、小键盘、鼠标和/或键盘)的用户输入(371)(也称为用户控制信息)可以从客户端设备(360)传输到服务器(310)。在示例中,游戏引擎(325)接收与客户端设备(360)处的用户输入(371)相对应的用户控制信息(321)。游戏引擎(325)可以基于用户控制信息(321)生成游戏场景内容(诸如视频内容、音频内容等)。在一些实施例中,可以基于游戏场景信息和用户控制信息(321)来确定元数据(326)。例如,可以基于游戏场景信息和用户控制信息来识别游戏场景的全局运动和/或对象的局部运动(321)。在示例中,用户控制信息(321)包括观看方向改变,因此可以基于观看方向改变来识别游戏场景的全局运动。在另一示例中,用户控制信息(321)包括对象的移动,因此可以识别对象的局部运动。在示例中,元数据(326)可以包括游戏场景的全局运动、对象的局部运动和对象的边界框。元数据(326)可以帮助视频编码过程作为到视频编码器(330)的附加输入数据。元数据(326)可以与由游戏引擎(325)呈现的原始视频内容(322)一起被馈送到视频编码器(330)。视频编码器(330)可以利用元数据(326)中的信息来有效地对原始视频内容(322)执行运动估计/补偿过程。
51.在一些实施例中,可以将元数据(326)作为可配置的编码器设置(例如视频编码器(330)的参数等)馈送到视频编码器(330)。在示例中,元数据(326)可以用于生成图片或图片区域的全局运动模型(例如,仿射模型、透视模型、旋转模型、缩放模型等)。在另一示例中,元数据(326)可以用于选择视频编码器(330)中的编码工具。然而,在示例中,当这些参数中的任何一个不可用时,视频编码器(330)可以假定一组默认值。
52.在一些实施例中,馈送到视频编码器(330)中的元数据(326)可以由元数据(327)连同已编码视频码流(323)一起处理并发送。元数据(327)可以帮助视频解码器对已编码视频码流(323)进行解码。例如,可以辅助对已编码视频码流(323)进行解码和显示的元数据(327)(诸如定时信息、叠加消息、叠加图形、边界框等)可以作为补充增强信息(sei)消息发送。sei消息可以在已编码视频码流内传递或单独传递。
53.在一些实施例中,客户端设备(360)接收已编码视频码流(372)以及元数据(377)。元数据(377)可以由客户端设备(360)用来帮助对已编码视频码流(372)中携带的视频序列进行解码或后处理。例如,元数据(377)可以包括定时信息、叠加消息、叠加图形、边界框信息,它们可以帮助对已编码视频码流(372)进行解码和显示。
54.在一些实施例中,可以使用附加编解码器对元数据进行编解码(编码/解码)。在一
些示例中,游戏引擎(325)可以输出分离的内容、视频、音频、叠加消息、叠加图形等。在示例中,叠加消息(或叠加图形)被视为视频内容的元数据。可以使用与视频编码器330分离的编码器将叠加消息(或叠加图形)压缩成分离的码流(第二码流)。然后,在示例中,可以将用于视频内容的已编码视频码流和用于叠加消息(或叠加图形)的第二码流多路复用成单个码流。
55.图4示出了根据本公开的实施例的视频编码器(430)的框图。视频编码器(430)包括在电子设备(410)中。在示例中,电子设备(410)是服务器设备,诸如图3的示例中的服务器(310)。电子设备(410)还包括发射机(411)(例如,发射电路等)。视频编码器(430)可以用于代替图3的示例中的视频编码器(330)。
56.视频编码器(430)可以从诸如图3的示例中的游戏引擎(325)的视频源接收原始视频内容。另外,视频编码器(430)可以接收提供与原始视频内容相关联的信息的元数据,诸如摄像头信息、颜色信息、照明信息、运动信息、视图信息、叠加信息(例如,叠加消息、叠加图形等)、用户控制等。
57.在一些示例中,原始视频内容是可以具有任何合适的比特深度的数字视频样本流的形式(例如:8比特、10比特、12比特
……
)、任何颜色空间(例如,bt.601y crcb、rgb
……
)以及任何适当的采样结构(例如,y crcb 4:2:0、y crcb 4:4:4)。原始视频内容可以被提供为当顺序观看时给予运动的多个单独图片。图片本身可以被组织为像素的空间阵列,其中每个像素可以包括一个或多个样本,这取决于所使用的采样结构、颜色空间等。
58.根据实施例,视频编码器(430)可以将原始视频内容(也称为视频序列)的图片编码和压缩成已编码视频码流(443)。在图4的示例中,视频编码器(430)包括控制器(431),该控制器(431)被配置为基于元数据来控制视频编码器(430)的编码配置,以便提高编码速度和效率。在一些实施例中,控制器(431)控制如下所描述的其它功能单元,并且在功能上耦合到其它功能单元。为了清楚起见,没有示出耦合。应注意,控制器(431)可以设置各种参数,诸如图片跳过、量化器、速率失真优化技术的λ值、图片大小、图片组(gop)布局、最大运动矢量搜索范围、运动模型等。
59.在示例中,控制器(431)被配置为基于元数据确定图片的全局运动模型(诸如仿射模型、透视模型、旋转模型、缩放模型等),并且可以相应地配置编码参数。在另一示例中,控制器(431)被配置为基于元数据确定图片内的边界框中的区域和该区域的局部运动模型。在一些实施例中,控制器(431)包括与视频编码器(430)的其它部分分离的编码器(未示出)。单独的编码器可以将元数据压缩成压缩的元数据。例如,元数据包括叠加内容,诸如叠加消息和叠加图形。可以将叠加内容压缩成叠加内容码流(444)。在示例中,叠加内容码流(444)可以(例如)由多路复用器(412)与已编码视频码流(443)组合成单个码流。在另一示例中,控制器431可以将元数据包括到与已编码视频码流相关联的sei消息中(443)。控制器(431)可以被配置为具有与针对特定系统设计而优化的视频编码器(430)相关的其它适当功能。
60.在一些实施例中,视频编码器(430)被配置为在编码循环中操作。作为过于简单化的描述,在示例中,编码循环可以包括源编码器(432)(例如,负责基于要编码的输入图片和一个或多个参考图片来创建诸如符号流的符号),以及嵌入在视频编码器(430)中的(本地)解码器(434)。解码器(434)以与(远程)解码器也将创建的方式类似的方式重建符号以创建
样本数据(因为符号与已编码视频码流之间的任何压缩在所公开主题中所考虑的视频压缩技术中是无损的)。重建的样本流(样本数据)被输入到参考图片存储器(435)。由于符号流的解码导致与解码器位置(本地或远程)无关的比特精确结果,所以参考图片存储器(435)中的内容在本地解码器与远程解码器之间也是比特精确的。换句话说,当在解码期间使用预测时,编码器的预测部分作为参考图片样本“看到”与解码器“看到”的样本值完全相同的样本值。
[0061]“本地”解码器(434)的操作可以与将结合图5详细描述的“远程”解码器的操作相同。
[0062]
在操作期间,在一些示例中,源编码器(432)可以执行运动补偿预测编码,其参考来自视频序列的被指定为“参考图片”的一个或多个先前已编码的图片来对输入图片进行预测地编码。以此方式,编码引擎(433)对输入图片的像素块与可以被选择作为对输入图片的预测参考的参考图片的像素块之间的差进行编码。在一些示例中,源编码器(432)可以从控制器(431)接收控制信号。基于视频序列的元数据生成控制信号,并且这些控制信号控制源编码器(432)以快速执行运动补偿预测编解码。
[0063]
本地视频解码器(434)可以基于由源编码器(432)创建的符号对可以被指定为参考图片的图片的已编码视频数据进行解码。编码引擎(433)的操作可以有利地是有损过程。当编码在视频解码器(诸如将参考图5描述的视频解码器)处对已编码视频数据进行解码时,重建的视频序列通常可以是具有一些错误的源视频序列的副本。本地视频解码器(434)复制可以由视频解码器对参考图片执行的解码过程,并且可以使重建的参考图片存储在参考图片高速缓存(435)中。以这种方式,视频编码器(430)可以本地存储重建的参考图片的副本,这些副本具有与将由远端视频解码器获得的重建的参考图片相同的内容(无传输错误)。
[0064]
预测器(436)可以对编码引擎(433)执行预测搜索。即,对于要编码的新图片,预测器(436)可以在参考图片存储器(435)中搜索样本数据(作为候选参考像素块)。在一些示例中,预测器(436)从控制器(431)接收控制信号。可以基于元数据、摄像头信息、颜色信息、照明信息、运动信息、视图信息、用户控制、块形状等来生成控制信号。控制信号可以控制预测器(436)以减少用于新图片的适当预测参考的预测搜索的时间。在示例中,控制信号可以指示参考(例如,参考图片、参考块等)。在另一示例中,控制信号可以指示搜索的起始点。预测器(436)可以在逐像素样本块的基础上操作以找到适当的预测参考。在一些情况下,如由预测器(436)获得的搜索结果所确定的,输入图片可以具有从存储在参考图片存储器(435)中的多个参考图片得出的预测参考。
[0065]
控制器(431)还可以管理源编码器(432)的编码操作,包括例如设置用于对视频数据进行编码的参数和子组参数。
[0066]
所有上述功能单元的输出可以在熵编码器(437)中进行熵编码。熵编码器(437)通过根据诸如霍夫曼编码、可变长度编码、算术编码等技术对符号无损压缩而将由各种功能单元生成的符号转换成已编码视频序列。
[0067]
发射机(411)可以缓冲由熵编码器(437)创建的一个或多个已编码视频序列,以准备经由网络传输。发射机(411)可以将来自视频编码器(430)的已编码视频数据与要传输的其它数据(例如已编码音频数据和/或辅助数据流(源未示出))合并。在一些示例中,已编码
视频码流(443)和叠加内容码流(444)被多路复用成单个码流。在另一示例中,元数据可以被包括在与已编码视频码流相关联的sei消息中(443)。
[0068]
控制器(431)可以执行视频编码器(430)的各种管理操作。在编码期间,控制器(431)可以为每个已编码图片分配某种已编码图片类型,这可能影响可以应用于相应图片的编码技术。例如,通常可以将图片指定为诸如i图片、p图片、b图片等图片类型之一。
[0069]
帧内图片(i图片)可以是不使用序列中的任何其它图片作为预测源而被编码和解码的图片。一些视频编解码器允许不同类型的帧内图片,包括例如独立解码器刷新(“idr”)图片。
[0070]
预测图片(p图片)可以是可以使用帧内预测或帧间预测来编码和解码的图片,该帧内预测或帧间预测使用至多一个运动矢量和参考索引来预测每个块的样本值。
[0071]
双向预测图片(b图片)可以是可以使用帧内预测或帧间预测来编码和解码的图片,该帧内预测或帧间预测使用至多两个运动矢量和参考索引来预测每个块的样本值。类似地,多预测图片可以使用多于两个参考图片和相关联的元数据来重建单个块。
[0072]
源图片通常可以在空间上被细分成多个样本块(例如,每个样本为4
×
4、8
×
8、4
×
8或16
×
16的块),并且在逐块的基础上被编码。可以参考由应用于块的相应图片的编码指派确定的其它(已编码)块来预测地编码块。例如,i图片的块可以被非预测地编码,或者它们可以参考相同图片的已经编码的块被预测地编码(空间预测或帧内预测)。可以参考一个先前已编码的参考图片通过空间预测或通过时间预测对p图片的像素块进行预测地编码。可以参考一个或两个先前已编码的参考图片通过空间预测或通过时间预测对b图片的块进行预测地编码。
[0073]
视频编码器(430)可以根据预定视频编码技术或标准执行编码操作。在其操作中,视频编码器(430)可以执行各种压缩操作,包括利用输入视频序列中的时间和空间冗余的预测编码操作。因此,已编码视频数据可以符合由所使用的视频编码技术或标准指定的语法。
[0074]
在实施例中,发射机(411)可以与已编码视频一起传输附加数据。源编码器(432)可以包括这样的数据作为已编码视频序列的一部分。附加数据可以包括时间/空间/snr增强层,其它形式的冗余数据,诸如冗余图片和切片、sei消息、vui参数集片段等。
[0075]
视频(或视频序列、原始视频内容)可以被捕获为时间序列中的多个源图片(视频图片)。图片内预测(通常缩写为帧内预测)利用给定图片中的空间相关性,而图片间预测利用图片之间的(时间或其它)相关性。在示例中,被称为当前图片的编码/解码下的特定图片被分区成块。当当前图片中的块类似于视频中先前已编码并且仍缓冲的参考图片中的参考块时,当前图片中的块可以由称为运动矢量的矢量来编码。在使用多个参考图片的情况下,运动矢量指向参考图片中的参考块,并且可以具有识别参考图片的第三维度。
[0076]
在一些实施例中,在图片间预测中可以使用双向预测技术。根据双向预测技术,使用两个参考图片,诸如第一参考图片和第二参考图片,这两个参考图片都按照解码顺序在视频中的当前图片之前(但是可以分别按照显示顺序在过去和将来)。当前图片中的块可以由指向第一参考图片中的第一参考块的第一运动矢量和指向第二参考图片中的第二参考块的第二运动矢量来编码。该块可以通过第一参考块和第二参考块的组合来预测。
[0077]
进一步地,可以在图片间预测中使用合并模式技术以提高编码效率。
[0078]
根据本公开的一些实施例,以块为单位执行预测,诸如图片间预测和图片内预测。例如,根据高效率视频编码(hevc)标准,视频图片序列中的图片被分区成编码树单元(ctu)用于压缩,图片中的ctu具有相同的大小,诸如64
×
64像素、32
×
32像素或16
×
16像素。通常,ctu包括三个编码树块(ctb),它们是一个亮度ctb和两个色度ctb。每个ctu可以被递归地四叉树分割成一个或多个编码单元(cu)。例如,64
×
64像素的ctu可以被分割成64
×
64像素的一个cu,或32
×
32像素的4个cu,或16
×
16像素的16个cu。在示例中,分析每个cu以确定cu的预测类型,诸如帧间预测类型或帧内预测类型。取决于时间和/或空间可预测性将cu分割成一个或多个预测单元(pu)。通常,每个pu包括亮度预测块(pb)和两个色度pb。在实施例中,以预测块为单位执行编解码(编码/解码)中的预测操作。使用亮度预测块作为预测块的示例,预测块包括诸如8
×
8像素、16
×
16像素、8
×
16像素、16
×
8像素等的像素的值(例如,亮度值)的矩阵。
[0079]
图5示出了根据本公开的一些实施例的视频解码器(580)的图。视频解码器(580)被配置为接收作为已编码视频序列的一部分的已编码图片,并且对已编码图片进行解码以生成重建图片。在示例中,使用视频解码器(580)代替图3示例中的视频解码器(380)。
[0080]
在图5的示例中,视频解码器(580)包括如图5中所示耦合在一起的熵解码器(582)、帧间解码器(585)、残差解码器(583)、重建模块(586)和帧内解码器(584)。
[0081]
熵解码器(582)可以被配置为从已编码图片重建某些符号,这些符号表示构成已编码图片的语法元素。这样的符号可以包括例如对块进行编码的模式(诸如例如,帧内模式、帧间模式、双向预测模式,帧间模式和双向预测模式处于合并子模式或另一子模式)、可以分别识别由帧内解码器(584)或帧间解码器(585)用于预测的某些样本或元数据的预测信息(诸如例如,帧内预测信息或帧间预测信息)、为例如量化变换系数形式的残差信息等。在示例中,当预测模式是帧间预测模式或双向预测模式时,将帧间预测信息提供给帧间解码器(585);并且当预测类型是帧内预测类型时,将帧内预测信息提供给帧内解码器(584)。可以对残差信息进行反量化,并且将其提供给残差解码器(583)。可以将元数据提供给控制器(581)。
[0082]
帧间解码器(585)被配置为接收帧间预测信息,并且基于帧间预测信息生成帧间预测结果。
[0083]
帧内解码器(584)被配置为接收帧内预测信息,并且基于帧内预测信息生成预测结果。
[0084]
残差解码器(583)被配置为执行逆量化以提取解量化的变换系数,并且处理解量化的变换系数以将残差从频域转换到空间域。残差解码器(583)还可能需要某些控制信息(以包括量化器参数(qp)),并且该信息可以由熵解码器(582)提供(数据路径未示出,因为这可能仅仅是少量控制信息)。
[0085]
重建模块(586)被配置为在空间域中组合由残差解码器(583)输出的残差和预测结果(视情况由帧间预测模块或帧内预测模块输出)以形成重建块,该重建块可以是重建图片的一部分,而重建图片又可以是重建视频的一部分。应注意,可以执行其它适当的操作(诸如如去块操作等)以提高视觉质量。例如,可以在缓冲器(587)中缓冲重建的图片,并且缓冲器(587)可以向帧间解码器(585)提供参考图片。
[0086]
在一些实施例中,控制器(581)接收元数据,并且可以基于元数据配置解码器
(580)的解码参数。在一些示例中,控制器(581)可以向帧内解码器(584)和/或帧间解码器(585)提供控制信号,以基于元数据来控制预测。在另一示例中,控制器(581)可以从元数据解码叠加内容,并且将叠加内容提供给重建模块(586)。因此,重建模块(586)可以利用叠加内容来重建图片。
[0087]
图6示出了概述根据本公开的实施例的过程(600)的流程图。过程(600)可以用于在云游戏系统(诸如云游戏系统(100)、云游戏系统(300)等)中对视频序列进行编码。在各种实施例中,过程(600)由处理电路执行,诸如服务器(110)中的处理电路(120)、服务器(310)中的处理电路(320)、视频编码器(130)、视频编码器(330)、视频编码器(430)等。在一些实施例中,过程(600)以软件指令实现,因此当处理电路执行软件指令时,处理电路执行过程(600)。该过程开始于(s601)并且进行到(s610)。
[0088]
在(s610)处,接收视频序列和与该视频序列相关联的元数据。视频序列包括响应于游戏控制信息而生成的图片帧序列。基于游戏控制信息确定元数据,并且该元数据指示游戏控制信息。在示例中,游戏引擎(诸如游戏引擎(325))基于游戏控制信息,诸如游戏场景控制信息、用户信息等,来生游戏内容(诸如视频内容、音频内容)。视频内容可以被生成为包括图片帧序列的视频序列。进一步地,可以基于游戏控制信息来识别与视频序列相关联的元数据。可以将视频序列和元数据提供给视频编码器,诸如视频编码器(330)。视频编码器(330)接收视频序列和与视频序列相关联的元数据。
[0089]
根据本公开的一方面,元数据可以是可以辅助编码的任何合适的信息、诸如摄像头信息、颜色信息、照明信息、运动信息、视图信息、叠加信息、用户控制信息等。
[0090]
在一些实施例中,通过网络接收信号,并且该信号携带由诸如用户输入设备(369)的远程用户输入设备捕获的用户控制信息。可以响应于用户控制信息生成视频序列。在一些示例中,元数据可以包括基于用户控制信息和游戏场景信息标识的运动信息。在示例中,运动信息包括游戏场景的全局运动。在另一示例中,运动信息包括游戏场景内的边界框中的对象的局部运动。
[0091]
在(s620)处,基于元数据配置编码参数。在示例中,基于指示游戏控制信息的元数据来确定用于对视频序列进行编码的运动模型。在一些示例中,运动模型可以是仿射模型、透视模型、旋转模型和缩放模型之一。
[0092]
在(s630)处,基于编码参数将视频序列编码成已编码视频码流。已编码视频码流可以经由网络被传输到目的地设备,诸如客户端设备(360)。在一些实施例中,元数据也被传输到目的地设备以帮助在目的地设备处对已编码视频码流进行解码。在实施例中,元数据在sei消息中与已编码视频码流一起传输。在另一实施例中,元数据包括叠加内容。可以将叠加内容编码成叠加内容码流。可以将叠加内容码流和已编码视频码流多路复用成单个输出码流。单个输出码流可以经由网络被传输到目的地设备。然后,处理进行到(s699)并且结束。
[0093]
图7示出了概述根据本公开的实施例的过程(700)的流程图。处理(700)可以用于在云游戏系统(诸如云游戏系统(100)、云游戏系统(300)等)中对视频序列进行解码。在各种实施例中,过程(700)由处理电路执行,诸如处理电路(170)、处理电路(370)、视频解码器(180)、视频解码器(380)、视频解码器(480)等。在一些实施例中,过程(700)以软件指令实现,因此当处理电路执行软件指令时,处理电路执行过程(700)。该开始于(s701)并且进行
到(s710)。
[0094]
在(s710)处,接收已编码视频码流以及与该已编码视频码流相关联的元数据。元数据指示游戏控制信息。
[0095]
在(s720)处,基于元数据来确定解码参数和重建参数。
[0096]
在(s730)处,基于解码参数对已编码视频码流进行解码,并且基于重建参数对视频序列进行重建。然后,过程进行到(s799)并且结束。
[0097]
在一些实施例中,可以将输入码流解多路复用成已编码视频码流和叠加内容码流。可以(例如,由不同解码器)对叠加内容码流单独地解码以生成叠加内容。然后,可以利用叠加内容来重建视频序列。
[0098]
以上描述的技术可以被实现为使用计算机可读指令并且物理地存储在一个或多个计算机可读介质中的计算机软件。例如,图8示出了适于实现所公开的主题的某些实施例的计算机系统(800)。
[0099]
可以使用任何合适的机器代码或计算机语言来编码计算机软件,该机器代码或计算机语言可以经过汇编、编译、链接或类似机制以创建代码,该代码包括可以由一个或多个计算机中央处理单元(cpu)、图形处理单元(gpu)等直接执行或通过解译、微代码执行等执行的指令。
[0100]
这些指令可以在各种类型的计算机或其部件上执行,包括(例如)个人计算机、平板计算机、服务器、智能电话、游戏设备、物联网设备等。
[0101]
图8中所示的用于计算机系统(800)的部件本质上是示例性的,并且不旨在对实现本公开的实施例的计算机软件的使用范围或功能提出任何限制。部件的配置也不应被解释为对计算机系统(800)的示例性实施例中图示的任何一个部件或其组合具有任何依赖性或要求。
[0102]
计算机系统(800)可以包括某些人机接口输入设备。这种人机接口输入设备可以响应于一个或多个人类用户通过例如触觉输入(诸如:击键、滑动、数据手套运动)、音频输入(诸如:语音、拍打)、可视输入(诸如:手势)、嗅觉输入(未描绘)。人机接口设备还可以用于捕获不一定与人的有意识输入直接相关的某些媒体,诸如音频(诸如:语音、音乐、环境声音)、图片(诸如:扫描图像、从静态图片摄像头获得的摄影图片)、视频(诸如二维视频、包括立体视频的三维视频)。
[0103]
输入人机接口设备可以包括以下中的一个或多个(每种仅描绘了其中的一个):键盘(801)、鼠标(802)、触控板(803)、触摸屏(810)、数据手套(未示出)、操纵杆(805)、麦克风(806)、扫描仪(807)、摄像头(808)。
[0104]
计算机系统(800)还可以包括某些人机接口输出设备。这样的人机接口输出设备可以通过例如触觉输出、声音、光和嗅觉/味觉来刺激一个或多个人类用户的感觉。这样的人机接口输出设备可以包括触觉输出设备(例如通过触摸屏(810)、数据手套(未示出)或操纵杆(805)的触觉反馈,但是也可以存在不用作输入设备的触觉反馈设备)、音频输出设备(诸如:扬声器(809)、耳机(未示出))、视觉输出设备(诸如用于包括crt屏幕、lcd屏幕、等离子屏幕、oled屏幕的屏幕(810),每个屏幕具有或不具有触摸屏输入能力,每个屏幕具有或不具有触觉反馈能力,其中一些屏幕能够通过诸如立体输出的手段输出二维视觉输出或多于三维输出;虚拟现实眼镜(未描绘)、全息显示器和烟雾罐(未示出)和打印机(未示出)。
[0105]
计算机系统(800)还可以包括人类可访问的存储设备及其相关联的介质,诸如包括带有cd/dvd的cd/dvd rom/rw(820)等介质(821)的光学介质、拇指驱动器(822)、可移动硬盘驱动器或固态驱动器(823)、诸如磁带和软盘(未示出)的传统磁性介质、诸如安全软件狗(未示出)的基于专用rom/asic/pld的设备等。
[0106]
本领域技术人员还应该理解,结合当前公开的主题使用的术语“计算机可读介质”不包含传输介质、载波或其它易失性信号。
[0107]
计算机系统(800)还可以包括到一个或多个通信网络的接口。网络可以例如是无线的、有线的、光学的。网络可以进一步是本地的、广域的、大城市的、车载的以及工业的、实时的、延迟容忍的等等。网络的示例包括局域网(诸如以太网)、无线lan、蜂窝网络(包括gsm、3g、4g、5g、lte等)、电视有线或无线广域数字网络(包括有线电视、卫星电视和地面广播电视)、车辆和工业网络(包括canbus)等。某些网络通常需要附接到某些通用数据端口或外围总线(849)(诸如,计算机系统(800)的usb端口)的外部网络接口适配器;其它网络通常通过附接到如下所描述的系统总线而集成到计算机系统(800)的内核中(例如以太网接口集成到pc计算机系统中或蜂窝网络接口集成到智能电话计算机系统中)。使用这些网络中的任何一个,计算机系统(800)可以与其它实体通信。这种通信可以是单向的、仅接收的(例如,广播tv)、仅单向发送的(例如,canbus到某些canbus设备)或双向的(例如到使用局域数字网络或广域数字网络的其它计算机系统)。可以在如以上所描述的那些网络和网络接口中的每一个上使用某些协议和协议栈。
[0108]
上述人机接口设备、人可访问的存储设备和网络接口可以附接到计算机系统(800)的内核(840)。
[0109]
内核(840)可以包括一个或多个中央处理单元(cpu)(841)、图形处理单元(gpu)(842)、现场可编程门阵列(fpga)形式的专用可编程处理单元(fpga)(843)、用于某些任务的硬件加速器(844)等。这些设备连同只读存储器(rom)(845)、随机存取存储器(846)、诸如内部非用户可访问硬盘驱动器、ssd等内部大容量存储装置(847)可以通过系统总线(848)连接。在一些计算机系统中,系统总线(848)可以以一个或多个物理插头的形式来访问,以实现由附加cpu、gpu等进行的扩展。外围设备可以直接附接到内核的系统总线(848),或者通过外围总线(849)附接该内核的系统总线(848)。外围总线的体系结构包括pci、usb等。
[0110]
cpu(841)、gpu(842)、fpga(843)和加速器(844)可以执行某些指令,这些指令的组合可以构成前述计算机代码。该计算机代码可以存储在rom(845)或ram(846)中。过渡数据也可以存储在ram(846)中,而永久数据可以存储在例如内部大容量存储装置(847)中。可以通过使用高速缓冲存储器来启用对任何存储器设备的快速存储和检索,该高速缓冲存储器可以与一个或多个cpu(841)、gpu(842)、大容量存储装置(847)、rom(845)、ram(846)等紧密相关联。
[0111]
计算机可读介质上可以具有用于执行各种计算机实现的操作的计算机代码。介质和计算机代码可以是为了本公开的目的而专门设计和构造的那些,或者它们可以是计算机软件领域的技术人员公知和可用的类型。
[0112]
作为示例而非作为限制,具有体系结构(800)并且特别是内核(840)的计算机系统可以提供作为执行包含在一个或多个有形的计算机可读介质中的软件的一个或多个处理器(包括cpu、gpu、fpga、加速器等)的结果的功能。这样的计算机可读介质可以是与如上所
介绍的用户可访问大容量存储装置相关联的介质,以及具有非易失性性质的内核(840)的某些存储装置(诸如内核内部大容量存储装置(847)或rom(845))。实现本公开的各种实施例的软件可以存储在这样的设备中并且由内核(840)执行。根据特定需要,计算机可读介质可以包括一个或多个存储器设备或芯片。软件可以使内核(840)并且特别是其中的处理器(包括cpu、gpu、fpga等)执行本文中描述的特定过程或特定过程的特定部分,包括定义存储在ram(846)中的数据结构,并且根据软件定义的过程修改这样的数据结构。此外或作为替代方案,该计算机系统可以提供作为逻辑硬连线或以其他方式体现在电路中的结果的功能(例如:加速器(844)),其可以代替软件或与软件一起操作以执行本文中描述的特定过程或特定过程的特定部分。适当时,对软件的引用可以包含逻辑,反之亦然。适当时,对计算机可读介质的引用可以包含存储用于执行的软件的电路(诸如集成电路(ic))、包含用于执行的逻辑的电路,或两者。本公开包含硬件和软件的任何合适的组合。
[0113]
虽然本公开已经描述了几个示例性实施例,但是存在落入本公开的范围内的改变、置换和各种替代等同物。因此,应当理解,本领域技术人员将能够设计出虽然未在本文中明确示出或描述但体现本公开的原理并且因此在本公开的精神和范围内的许多系统和方法。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1