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

一种游戏引擎中视频编码的方法及相关设备与流程

2021-12-14 23:32:00 来源:中国专利 TAG:


1.本发明涉及图形处理技术领域,尤其涉及一种游戏引擎中视频编码的方法及相关设备。


背景技术:

2.通常在硬件视频编码过程中,硬件视频编码器依次接受来自视频流中的每个帧的图片进行编码,在此过程中对于目标比特率试图达到最佳视频质量。由于硬件编码通常要求编码的耗时一致(和每帧的复杂度无关),并且硬件设计上由于芯片大小等因数造成的成本制约,硬件视频编码器理解其正在编码的每个图片帧的能力有限。例如,视频编码中常用的运动矢量搜素,由于在硬件中实现的更大搜索范围通常会花费更多的内存存储、内存访问、性能影响和更高的操作功耗,这些都限制了运动矢量搜索范围。再举例对于一个视频流中包含长期连续的静态内容,如果不实现lookahead编码,硬件视频编码器就不可能发现多帧上内容行为的统计信息的规律。
3.但lookahead编码通常是分两步来实现视频编码,第一遍编码执行多达40帧的以记录帧编码统计信息,而作为实际编码的第二遍编码可以使用该统计信息来对编码参数进行正确的调整,以在质量和比特率分布上达到更好的性能。然而,lookahead编码会对帧输入和编码比特流输出延迟造成严重的影响。
4.图1示出了一个简化的云游戏服务的系统框图。用户通常通过键盘、鼠标和平板等物理组件与游戏或桌面应用程序(本地或者云端)进行交互。游戏引擎能够处理数据并向图形处理单元(gpu)提供渲染指令以执行对帧缓冲器的渲染。通常,通过显示组件来处理gpu渲染之后的帧,因此除了帧同步指令之外,不需要特殊指令来避免图像撕裂。随着互联网视频流和云游戏越来越成为主流,由于没有物理的显示组件,这些帧没有发送到显示组件上,而是由视频编码器引擎来处理。gpu提供的每个渲染帧将按顺序来执行视频编码。视频编码器引擎将还需要将转换后帧的副本存储在参考帧缓冲器中以供将来的帧预测编码使用。最后,由视频编码器引擎生成压缩编码比特流输出,用于传输到接收端以进行反向操作,以再现由gpu渲染的帧以在客户端显示帧的信息。
5.游戏或桌面应用程序引擎,通常是使用通用cpu在操作系统上运行的软件。对于游戏来说,它通常处理和执行来自不同来源的游戏命令包括了物理游戏输入源、音频和声音、网络脚本、游戏对象管理,最重要的是通过直接接口渲染到gpu引擎。
6.经过gpu的渲染,最终的对象都被渲染到二维视点上,称为显示帧缓冲。因为可能存在多帧缓冲器,其中有些被用于消耗(显示在屏幕上或被视频编码器编码),而其它被用于渲染操作。
7.视频编码器引擎是gpu渲染后获得的2d帧的使用者。它需要把当前帧即gpu渲染的后新的可用帧通过视频编码器进行编码。


技术实现要素:

8.本发明实施例提供一种游戏引擎中视频编码的方法及相关设备,用以提高编码的效率和速度。
9.第一方面,本发明实施例提供一种游戏引擎中视频编码的方法,包括:
10.依序获取图像处理单元gpu渲染输出的视频帧,以及,从游戏引擎获取视频编码参数;
11.基于所述视频编码参数所确定的编码行为,对所述gpu渲染输出的视频帧进行编码。
12.在一些实施例中,所获取的视频编码参数至少包括如下参数中的一种:全局运动偏移位置参数,强制场景更改参数,下一帧的时间间隔,gpu渲染帧的时间戳和游戏帧流码率控制期望参数。
13.在一些实施例中,在所述视频编码参数包括全局运动偏移位置参数的情况下,基于所述视频编码参数所确定的编码行为,对所述gpu渲染输出的视频帧进行编码包括:
14.在视频编码器的搜索范围之外,基于所述全局运动偏移位置参数进行搜索,以实现帧间的运动估计计算。
15.在一些实施例中,在视频编码器的搜索范围之外,基于所述全局运动偏移位置参数进行搜索包括:
16.基于所述全局运动偏移位置参数配置目标像素块,以所述目标像素块当前位置为起点进行块匹配,以进行全局偏移搜索。
17.在一些实施例中,进行全局偏移搜索,还包括:
18.基于窗口中的目标图像配置全局偏移区域,以及,在所述全局偏移区域之外不执行全局偏移搜索。
19.在一些实施例中,进行全局偏移搜索,还包括:
20.在存在多个窗口重叠的情况下,利用异或逻辑运算,以对于不同的窗口选择性地启用全局偏移。
21.在一些实施例中,在所述强制场景更改参数包括全局运动偏移位置参数的情况下,所述强制场景更改参数被配置为:
22.在基于所述游戏引擎的逻辑作为外部参数输入,确定场景变化的情况下,对在后的场景强制使用i帧进行编码,以跳过运动估计和补偿。
23.第二方面,本发明实施例提供一种游戏引擎中视频编码的装置,包括视频编码引擎,被配置为:
24.依序获取图像处理单元gpu渲染输出的视频帧,以及,从游戏引擎获取视频编码参数;
25.基于所述视频编码参数所确定的编码行为,对所述gpu渲染输出的视频帧进行编码。
26.第三方面,本发明实施例提供一种计算机设备,包括处理器、存储器及通信总线;
27.所述通信总线用于实现处理器和存储器之间的连接通信;
28.所述处理器用于执行存储器中存储的一个或者多个计算机程序,以实现前述的视频编码的方法的步骤。
29.第四方面,本发明实施例提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现前述的视频编码的方法的步骤。
30.本发明实施例通过从游戏引擎获取视频编码参数,基于所述视频编码参数所确定的编码行为,对所述gpu渲染输出的视频帧进行编码,由此能够通过游戏引擎获取额外的视频编码参数,能够有效提高视频编码引擎的编码效率。
31.上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
32.通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
33.图1示出了现有的游戏服务的系统框图;
34.图2示出了本公开实施例的基本流程图;
35.图3示出了本公开实施例的游戏服务的系统框图。
36.图4示出了本公开实施例的利用全局偏移进行运动估计的示意图。
37.图5示出了现有技术的像素块的帧间运动估计示意图。
38.图6示出了本公开实施例的像素块的帧间运动估计示意图。
39.图7示出了本公开实施例的像素块的帧间运动估计另一种示意图。
40.图8示出了本公开实施例的游戏者视角定义示意图。
41.图9示出了本公开实施例的强制场景改变参数的运行流程图。
具体实施方式
42.下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
43.本发明第一实施例提供一种游戏引擎中视频编码的方法,如图2所示,包括:
44.s201、依序获取图像处理单元gpu渲染输出的视频帧,以及,从游戏引擎获取视频编码参数。在一些实施例中,所获取的视频编码参数至少包括如下参数中的一种:全局运动偏移位置参数,强制场景更改参数,下一帧的时间间隔,gpu渲染帧的时间戳和游戏帧流码率控制期望参数。作为一种可选的从游戏引擎获取视频编码参数,游戏引擎可以通过sdk接口的方式来发送视频编码参数。视频渲染引擎可以从游戏引擎的sdk接口来获取所需的参数。具体的sdk可以包括vulkan、directx12和metal提供的瘦绘图提交接口,还可以将游戏引擎的渲染提交到gpu。现代的游戏引擎变得越来越复杂,能够直接处理gpu命令缓冲区、内存分配和同步决策,从而很好地映射到现代cpu的多核/多线程功能,允许并行操作。在一些实施方式中,游戏引擎可以通过sdk的形式将参数提供给视频编码器,具体能够提供的参数
可以包括各种游戏行为,如世界视图转换为渲染的2d视图、物理输入信息、静态对象位置、帧渲染行为等。sdk的作用是将游戏相关的信息转换为视频编码器引擎的使用的编码参数。
45.gpu渲染引擎,是一个以数据为中心的超高性能并行流水线引擎。它需要来自游戏引擎的命令来执行实时计算机图形渲染到可显示的帧缓冲区。单前主要的gpu硬件引擎来自nvidia和amd。执行渲染的过程实际上需要经历多个阶段的数据处理。
46.s202、基于所述视频编码参数所确定的编码行为,对所述gpu渲染输出的视频帧进行编码。
47.经过gpu的渲染,最终的对象都被渲染到二维视点上,称为显示帧缓冲。因为可能存在多帧缓冲器,其中有些被用于消耗(显示在屏幕上或被视频编码器编码),而其它被用于渲染操作。视频编码器引擎是gpu渲染后获得的2d帧的使用者。它需要把当前帧即gpu渲染的后新的可用帧通过视频编码器进行编码。
48.本发明实施例通过从游戏引擎获取视频编码参数,基于所述视频编码参数所确定的编码行为,对所述gpu渲染输出的视频帧进行编码,由此能够通过游戏引擎获取额外的视频编码参数,能够有效提高视频编码引擎的编码效率。
49.在一些实施例中,在所述视频编码参数包括全局运动偏移位置参数的情况下,基于所述视频编码参数所确定的编码行为,对所述gpu渲染输出的视频帧进行编码包括:
50.在视频编码器的搜索范围之外,基于所述全局运动偏移位置参数进行搜索,以实现帧间的运动估计计算。
51.如图4所示,本实施例的视频编码的方法中,全局运动偏移位置参数可以应用于运动估计硬件中,其中全局运动偏移位置参数可以提供整个帧已经在2d位置中移动的量,从而简化帧间预测的运动估计计算。本示例中,全局运动偏移位置参数应用于视频编码器的搜索范围之外来进行有针对性的搜索,从而达到简化运算的效果。现有的硬件视频编码器在运动评估中可以执行多达128像素(垂直/水平)的搜索。主要用于帧间预测,其中前一帧(对于b帧则包括未来帧)的全帧范围内。而对于游戏中的运动场景,特别是在高分辨率上,快速运动可以很容易地超过运动估计器的128像素能力。本公开的方法使用全局运动偏移,视频编码引擎的编码器可以根据全局运动偏移位置参数从对应的偏移位置执行128像素的搜索,从而极大简化运动估计的计算量。
52.在一些实施例中,在视频编码器的搜索范围之外,基于所述全局运动偏移位置参数进行搜索包括:
53.基于所述全局运动偏移位置参数配置目标像素块,以所述目标像素块当前位置为起点进行块匹配,以进行全局偏移搜索。
54.如图5所示,用于帧间预测的搜索范围的常规实现,像素块将用于执行帧间预测,但是由于视频编码器的搜索范围有限,因此无法找到匹配的块,因此现有的搜索方案并不能达到理想的搜索效果。本公开的视频编码的方法,如图6所示,可以根据全局运动偏移位置参数来进行搜索范围的偏移。还是通过像素块来进行帧间的搜索,例如像素块来进行前一帧与当前帧的搜索匹配。用于进行搜索的像素块可以从其当前位置的起始位置

全局偏移进行搜索。全局偏移可能不是100%准确,但只要它在视频编码器的最大搜索范围内,就能够找到一个很好的匹配,从而简化运动估计的计算量。本实施例中全局偏移量可以是利用特定窗口进行可选配置。只有在游戏中,gui面板也可以根本不平移并且保持静态。
55.在一些实施例中,进行全局偏移搜索,还包括:
56.基于窗口中的目标图像配置全局偏移区域,以及,在所述全局偏移区域之外不执行全局偏移搜索。
57.图7示出了一个窗口全局偏移应用实例,其中可以将窗口中的图像部分配置为使用全局偏移,而在区域之外时,全局偏移将被禁用。也即在图像部分以外的区域可以禁用全局偏移。
58.在一些实施例中,进行全局偏移搜索,还包括:
59.在存在多个窗口重叠的情况下,利用异或逻辑运算,以对于不同的窗口选择性地启用全局偏移。也即在实际应用中,对于存在多个窗口重叠的复杂场景,多窗口重叠可以使用异或逻辑。从而对于不同的窗口选择性地根据全局运动偏移位置参数启用全局偏移。
60.游戏引擎通常会根据游戏者的视角来聚焦于游戏引擎世界空间一部分的进行渲染。为了简化描述,以二维游戏引擎为例,如图8所示,游戏者的视角定义了相对于摄影机距离和角度。对于一些2d游戏,其相对距离常常保持,但是允许在世界空间中滚动来获取游戏世界的不同信息。像godot这样的游戏引擎提供了屏幕滚动应用程序编程接口(api)滚动,同时锁定感兴趣的对象。不过,为了支持不同的终端屏幕的分辨率,游戏引擎可以将视角的值归一化到0.0到1.0之间。大多数游戏引擎已经能够将标准化值转换为以像素为单位定义的屏幕上的点。在一些实施方式中可以将这两个api结合在一起,所产生的滚动可以转换成像素,进而可以传递给视频编码器。
61.在一些实施例中,在所述强制场景更改参数包括全局运动偏移位置参数的情况下,所述强制场景更改参数被配置为:在基于所述游戏引擎的逻辑作为外部参数输入,确定场景变化的情况下,对在后的场景强制使用i帧进行编码,以跳过运动估计和补偿。
62.具体的说,码率控制通常控制编码比特率,使得结果满足所需的目标比特率。控制混合编码器的帧类型、量化和熵编码。如图9所示,通过对强制场景变化的额外支持能够在编码过程中,对于新的场景可以强制使用以i帧进行编码,从而跳过运动估计和补偿步骤。
63.通过游戏引擎的逻辑,作为外部参数输入,可以通知编码器场景变化,以便对当前帧进行编码。而不需要特殊的硬件来检测场景的变化。如图9所示,此时未使用的运动估计和补偿逻辑硬件,可以将其置于省电模式。
64.本公开的视频编码的方法采用额外的参数来允许在偏移的搜索范围内执行运动估计,有效扩大了硬件视频编码器的搜索范围。通过游戏引擎根据其场景变化所对应的参数,可以完全绕过运动估计逻辑以节省电能,提高编码效率和速度。
65.第二方面,本发明实施例提供一种游戏引擎中视频编码的装置,包括视频编码引擎,被配置为:
66.依序获取图像处理单元gpu渲染输出的视频帧,以及,从游戏引擎获取视频编码参数;
67.基于所述视频编码参数所确定的编码行为,对所述gpu渲染输出的视频帧进行编码。
68.第三方面,本发明实施例提供一种计算机设备,包括处理器、存储器及通信总线;
69.所述通信总线用于实现处理器和存储器之间的连接通信;
70.所述处理器用于执行存储器中存储的一个或者多个计算机程序,以实现前述的视
频编码的方法的步骤。
71.第四方面,本发明实施例提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现前述的视频编码的方法的步骤。
72.需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
73.上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
74.通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端(可以是手机,计算机,服务器或者网络设备等)执行本发明各个实施例所述的方法。
75.上面结合附图对本发明的实施例进行了描述,但是本发明并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本发明的启示下,在不脱离本发明宗旨和权利要求所保护的范围情况下,还可做出很多形式,这些均属于本发明的保护之内。
再多了解一些

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

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

相关文献