图像渲染和编码方法及相关装置与流程

文档序号:19580045发布日期:2019-12-31 19:53阅读:341来源:国知局
图像渲染和编码方法及相关装置与流程

本发明涉及图像数据处理技术领域,尤其涉及一种图像渲染和编码方法及相关装置。



背景技术:

在云服务环境下,服务或者程序运行在服务器端做关键或复杂的运算,并将运算的结果传送给远端客户端,远端客户端负责接收服务器端的结果。在手机云游戏场景中,服务器对每帧图像进行渲染、编码后通过网络传送给远端的客户端,远端客户端接收云服务器端的帧数据后再解码显示。服务器端采用图形处理器(graphicsprocessingunit,gpu)渲染游戏画面,渲染出来的图像是rgba格式的图像数据(rgba是代表红色(red)、绿色(green)、蓝色(blue)和alpha的色彩空间),而一幅典型的720p图像的数据大小约为28m比特,这么大数据量在网络带宽有限的情况下很难处理,因此需要对图像流进行h.264或h.265视频编码压缩后再进行网络传输,以此降低网络带宽。

现有方案中渲染和编码的数据流程的具体实现可以如图1所示,在图1中gpu完成渲染操作后需要将渲染后得到的rgba格式的图像数据复制到中央处理器(centralprocessingunit,cpu),由cpu将rgba格式的图像数据转换成yuv格式的帧数据,然后cpu再将yuv格式帧数据复制到gpu的显存空间,然后在gpu中进行h264或h265的编码。在这个过程中,渲染操作之后的数据在cpu和gpu间需传输2次,即图1中步骤3和步骤5,耗费了额外的cpu和gpu资源,降低性能,降低了编码和渲染的效率。

综上所述,在图像渲染和编码的过程中如何节省cpu和gpu资源、提高效率是本领域技术人员需要解决的技术问题。



技术实现要素:

本申请实施例公开了一种图像渲染和编码方法及相关装置,能够节省处理器的资源、提高渲染和编码的效率。

第一方面,本申请实施例公开了一种图像渲染和编码方法,该方法包括:

第一处理器将待渲染的数据发送给第二处理器;

上述第一处理器指示上述第二处理器根据上述待渲染的数据渲染得到第一格式数据,上述第一格式数据包括图像的三基色颜色特征;上述第一格式数据存储在上述第二处理器的第一存储空间中;

上述第一处理器指示上述第二处理器将上述第一格式数据转换为第二格式数据,上述第二格式数据包括图像的亮度值和色度值;

上述第一处理器指示上述第二处理器将上述第二格式数据编码为第三格式数据,上述第三格式数据的数据容量小于上述第二格式数据的数据容量;

上述第一处理器向客户端发送上述第三格式数据。

上述第一处理器可以是中央处理器cpu、无互锁管道阶段架构的微处理器、进阶精简指令集机器以及现场可编程逻辑门阵列(fieldprogrammablegatearray,fpga)等。上述第二处理器可以是图形处理器gpu、人工智能加速卡等其它可以完成图形处理的装置或设备。

相比于现有技术中需要将在第二处理器中渲染好的第一格式的数据复制到第一处理器内存中,在第一处理器转换为第二格式的数据之后,再复制到第二处理器内存中进行编码,本申请实施例可以在第二处理器中完成渲染、格式转换和编码的过程,不需要额外两次的数据传输,因此通过本申请实施例能够节省处理器的资源、提高渲染和编码的效率。

在其中一种可能的实施方式中,在上述第一处理器指示上述第二处理器根据上述待渲染的数据渲染得到第一格式数据之后,上述第一处理器指示上述第二处理器将上述第一格式数据转换为第二格式数据之前,还包括:

上述第一处理器调用第一接口获取上述第一格式数据在上述第一存储空间中的存储地址;

上述第一处理器调用上述第一接口将上述存储地址发送给第二接口;

上述第一处理器调用上述第二接口指示上述第二处理器将上述存储地址标记到待编码区中,上述待编码区包括用于存放待编码的数据和/或待编码数据的存储地址的存储空间。

在本申请实施例中,可以通过专门的应用程序接口获取渲染之后的图像数据,以使得可以在第二处理器侧对该图像数据进行格式转换,避免了将渲染后的数据复制到第一处理器转换格式后再复制到第二处理器的操作,节省了第一处理器和第二处理器的资源。

在其中一种可能的实施方式中,上述第一接口为图形库中配置的用于获取上述存储地址的应用程序接口。

在其中一种可能的实施方式中,上述第二接口为视频加速库中配置的用于接收上述第一接口发送过来的上述存储地址以及指示上述第二处理器将上述存储地址标记到上述待编码区中的应用程序接口。

在其中一种可能的实施方式中,上述第一处理器调用第三接口向上述第二处理器申请第二存储空间,上述第二存储空间为用于存放上述第二格式数据的地址空间;上述第三接口为视频加速库中的应用程序接口;上述第一处理器调用上述第三接口指示上述第二处理器将上述第一格式数据转换为第二格式数据。

在其中一种可能的实施方式中,上述第一处理器指示上述第二处理器将上述第二格式数据编码为第三格式数据,包括:

上述第一处理器调用第四接口向上述第二处理器申请第三存储空间,上述第三存储空间为用于存放上述第三格式数据的地址空间;上述第四接口为视频加速库中的应用程序接口;

上述第一处理器调用上述第四接口指示上述第二处理器将上述第二格式数据编码为第三格式数据。

第二方面,本申请实施例公开了一种图像渲染和编码方法,该方法应用于处理器,该方法包括:

接收待渲染的数据;

根据上述待渲染的数据渲染得到第一格式数据,上述第一格式数据包括图像的三基色颜色特征;上述第一格式数据存储在上述处理器的第一存储空间中;

将上述第一格式数据转换为第二格式数据,上述第二格式数据包括图像的亮度值和色度值;

将上述第二格式数据编码为第三格式数据,上述第三格式数据的数据容量小于上述第二格式数据的数据容量;

发送上述第三格式数据。

第三方面,本申请实施例公开了一种处理器,该处理器执行如下操作:

将待渲染的数据发送给第二处理器;

指示上述第二处理器根据上述待渲染的数据渲染得到第一格式数据,上述第一格式数据包括图像的三基色颜色特征;上述第一格式数据存储在上述第二处理器的第一存储空间中;

指示上述第二处理器将上述第一格式数据转换为第二格式数据,上述第二格式数据包括图像的亮度值和色度值;

指示上述第二处理器将上述第二格式数据编码为第三格式数据,上述第三格式数据的数据容量小于上述第二格式数据的数据容量;

向客户端发送上述第三格式数据。

在其中一种可能的实施方式中,在上述处理器指示上述第二处理器根据上述待渲染的数据渲染得到第一格式数据之后,上述处理器指示上述第二处理器将上述第一格式数据转换为第二格式数据之前,还包括:

上述处理器调用第一接口获取上述第一格式数据在上述第一存储空间中的存储地址;

上述处理器调用上述第一接口将上述存储地址发送给第二接口;

上述处理器调用上述第二接口指示上述第二处理器将上述存储地址标记到待编码区中,上述待编码区包括用于存放待编码的数据和/或待编码数据的存储地址的存储空间。

在其中一种可能的实施方式中,上述第一接口为图形库中配置的用于获取上述存储地址的应用程序接口。

在其中一种可能的实施方式中,上述第二接口为视频加速库中配置的用于接收上述第一接口发送过来的上述存储地址以及指示上述第二处理器将上述存储地址标记到上述待编码区中的应用程序接口。

在其中一种可能的实施方式中,上述处理器指示上述第二处理器将上述第一格式数据转换为第二格式数据,包括:

上述处理器调用第三接口向上述第二处理器申请第二存储空间,上述第二存储空间为用于存放上述第二格式数据的地址空间;上述第三接口为视频加速库中的应用程序接口;

上述处理器调用上述第三接口指示上述第二处理器将上述第一格式数据转换为第二格式数据。

在其中一种可能的实施方式中,上述处理器指示上述第二处理器将上述第二格式数据编码为第三格式数据,包括:

上述处理器调用第四接口向上述第二处理器申请第三存储空间,上述第三存储空间为用于存放上述第三格式数据的地址空间;上述第四接口为视频加速库中的应用程序接口;

上述处理器调用上述第四接口指示上述第二处理器将上述第二格式数据编码为第三格式数据。

第四方面,本申请实施例公开了一种处理器,该处理器执行如下操作:

接收待渲染的数据;

根据上述待渲染的数据渲染得到第一格式数据,上述第一格式数据包括图像的三基色颜色特征;上述第一格式数据存储在上述处理器的第一存储空间中;

将上述第一格式数据转换为第二格式数据,上述第二格式数据包括图像的亮度值和色度值;

将上述第二格式数据编码为第三格式数据,上述第三格式数据的数据容量小于上述第二格式数据的数据容量;

发送上述第三格式数据。

第五方面,本申请实施例公开了一种处理器,该处理器包括:

发送单元,用于将待渲染的数据发送给第二处理器;

指示单元,用于:指示上述第二处理器根据上述待渲染的数据渲染得到第一格式数据,上述第一格式数据包括图像的三基色颜色特征;上述第一格式数据存储在上述第二处理器的第一存储空间中;

指示上述第二处理器将上述第一存储空间中的上述第一格式数据转换为第二格式数据,上述第二格式数据包括图像的亮度值和色度值;以及

指示上述第二处理器将上述第二格式数据编码为第三格式数据,上述第三格式数据的数据容量小于上述第二格式数据的数据容量;

上述发送单元,还用于向客户端发送上述第三格式数据。

在其中一种可能的实施方式中,上述处理器还包括;

调用单元,用于:在所述指示单元指示所述第二处理器根据所述待渲染的数据渲染得到第一格式数据之后,指示所述第二处理器将所述第一格式数据转换为第二格式数据之前,调用第一接口获取所述第一格式数据在所述第一存储空间中的存储地址;

调用所述第一接口将所述存储地址发送给第二接口;以及

调用所述第二接口指示所述第二处理器将所述存储地址标记到待编码区中,所述待编码区包括用于存放待编码的数据和/或待编码数据的存储地址的存储空间。

在其中一种可能的实施方式中,上述第一接口为图形库中配置的用于获取上述存储地址的应用程序接口。

在其中一种可能的实施方式中,上述第二接口为视频加速库中配置的用于接收上述第一接口发送过来的上述存储地址以及指示上述第二处理器将上述存储地址标记到上述待编码区中的应用程序接口。

在其中一种可能的实施方式中,上述指示单元具体用于:

调用第三接口向上述第二处理器申请第二存储空间,上述第二存储空间为用于存放上述第二格式数据的地址空间;上述第三接口为视频加速库中的应用程序接口;

调用上述第三接口指示上述第二处理器将上述第一格式数据转换为第二格式数据。

在其中一种可能的实施方式中,上述指示单元具体还用于:

调用第四接口向上述第二处理器申请第三存储空间,上述第三存储空间为用于存放上述第三格式数据的地址空间;上述第四接口为视频加速库中的应用程序接口;

调用上述第四接口指示上述第二处理器将上述第二格式数据编码为第三格式数据。

第六方面,本申请实施例公开了一种处理器,该处理器包括:

接收单元,用于接收第一处理器发送的待渲染的数据;

渲染单元,用于根据上述待渲染的数据渲染得到第一格式数据,上述第一格式数据包括图像的三基色颜色特征;上述第一格式数据存储在上述处理器的第一存储空间中;

转换单元,用于将上述第一存储空间中的上述第一格式数据转换为第二格式数据,上述第二格式数据包括图像的亮度值和色度值;

编码单元,用于将上述第二格式数据编码为第三格式数据,上述第三格式数据的数据容量小于上述第二格式数据的数据容量;

发送单元,用于发送上述第三格式数据。

第七方面,本申请实施例公开了一种服务器,该服务器包括第一处理器、第二处理器和存储器,该存储器存储有计算机程序,上述第一处理器用于调用该计算机程序来执行上述第一方面任一项所述的方法。

第八方面,本申请实施例公开了一种计算机可读存储介质,该计算机可读存储介质中存储有计算机程序,当该程序被处理器执行时,实现上述第一方面任一项所述的方法。

综上所述,相比于现有技术中需要将在第二处理器中渲染好的第一格式的数据复制到第一处理器内存中,在第一处理器转换为第二格式的数据之后,再复制到第二处理器内存中进行编码,本申请实施例可以在第二处理器中完成渲染、格式转换和编码的过程,不需要额外两次的数据传输,因此通过本申请实施例能够节省处理器的资源、提高渲染和编码的效率。

附图说明

下面将对本申请实施例中所需要使用的附图作介绍。

图1是现有技术中的一种渲染和编码方法的交互示意图;

图2是本发明实施例提供的一种系统架构示意图;

图3是本发明实施例提供的一种渲染和编码方法的交互示意图;

图4是本发明实施例提供的一种客户端与服务器交互的场景示意图;

图5是本发明实施例提供的一种处理器的结构示意图;

图6是本发明实施例提供的另一种处理器的结构示意图;

图7是本发明实施例提供的一种服务器的结构示意图。

具体实施方式

下面结合本发明实施例中的附图对本发明实施例进行描述。

为了更好的理解本发明实施例提供的一种图像渲染和编码方法及相关装置,下面先对本发明实施例涉及的系统架构进行描述。如图2所示的系统架构,可以包括服务器201和客户端202。其中:服务器201主要用于根据客户端202的请求对客户端202需要的图像或视频进行渲染、编码后发送给客户端202显示。

服务器201可以包括但不限于后台服务器、组件服务器、图像渲染和编码服务器等。服务器201上需要运行有相应的服务器端程序来提供相应的图像渲染和编码服务,如用于数据计算、决策执行的程序等等。

客户端202可以包括手持设备(例如,手机、平板电脑、掌上电脑等)、车载设备、可穿戴设备(例如智能手表、智能手环、计步器等)、智能家居设备(例如,冰箱、电视、空调、电表等)、智能机器人、车间设备,以及各种形式的用户设备(userequipment,ue)、移动台(mobilestation,ms)、终端设备(terminalequipment),等等。

需要说明的是,本申请实施例提供的图像渲染和编码方法所涉及的系统构架不限于图2所示系统架构。

请参见图3,图3是本发明实施例提供的一种图像渲染和编码方法,该方法包括但不限于如下步骤:

步骤301、第一处理器将待渲染的数据发送给第二处理器。

步骤302、所述第二处理器根据所述待渲染的数据渲染得到第一格式数据,并存储在第一存储空间。

可选的,上述第一处理器可以是cpu、无互锁管道阶段架构的微处理器、进阶精简指令集机器以及现场可编程逻辑门阵列(fieldprogrammablegatearray,fpga)等。上述第二处理器可以是gpu、人工智能加速卡等其它可以加速完成图形处理的装置或设备。

在具体的实施例中,上述第一处理器将待渲染的数据发送给第二处理器,该第二处理器接收到该待渲染的数据之后,该第一处理器指示该第二处理器根据该待渲染的数据渲染得到第一格式数据,并将该第一格式数据存储在第二处理器的第一存储空间中。

可选的,上述待渲染的数据包括图像的标志点的位置信息和纹理信息等,例如,该标志点的位置信息可以是需要渲染得到的图像中的矩形的四个顶点的坐标信息等等。该纹理信息可以包括需要渲染得到的图像中的填充的颜色信息,即包括需要渲染得到的图像中的颜色布局信息等。

在其中一种可能的实施方式中,上述第一处理器可以通过调用图形库中用于数据渲染的应用程序接口来指示第二处理器根据上述待渲染的数据进行渲染。

可选的,该图像库可以为开放图形库(opengraphicslibrary,opengl)等。

可选的,上述opengl可以通过mesa3d来实现,该mesa3d是一个在麻省理工学院(massachusettsinstituteoftechnology,mit)许可证下开放源代码的三维计算机图形库,可以以开源形式实现opengl的应用程序接口。

在其中一种可能的实现方式中,上述第一格式数据可以包括图像的三基色颜色特征。

可选的,上述第一格式数据可以是rgba格式的图像数据。其中,rgba是代表红色(red)、绿色(green)、蓝色(blue)和alpha的色彩空间。该alpha通道可以用作不透明度参数。如果一个像素的alpha通道数值为0%,那它就是完全透明的(也就是看不见的),而数值为100%则意味着一个完全不透明的像素(传统的数字图像)。在0%和100%之间的值,则使得像素可以透过背景显示出来,就像透过玻璃(半透明性),这种效果是简单的二元透明性(透明或不透明)做不到的。它使数码合成变得容易。alpha通道值可以用百分比、整数或者像rgb参数那样用0到1的实数表示。

在其中一种可能的实施方式中,上述第一存储空间可以是上述第一处理器通过调用图形库中用于申请存储空间的应用程序接口向第二处理器申请用于存放上述第一格式数据的存储空间。

可选的,如果第二处理器是gpu,则上述第一存储空间可以是用于存放上述第一格式数据的显存空间。

可选的,本方案所涉及的第一处理器可以是服务器(包括云服务器)中的处理器,也可以是能够完成渲染编码操作并与客户端交互的设备的处理器,本方案对第一处理器所在的设备不做具体限制,只要是能够实现本方案的功能的设备都是本方案所保护的设备。同样的,本方案对第二处理器所在的设备不做具体限制,只要是能够实现本方案的功能的设备都是本方案所保护的设备。

步骤303、所述第二处理器将所述第一存储空间中的所述第一格式数据转换为第二格式数据。

在具体的实施例中,可以由上述第一处理器指示所述第二处理器将上述第一格式数据转换为第二格式数据。

在其中一种可能的实施方式中,上述第一处理器可以通过调用视频加速库中用于格式转换的应用程序接口来指示第二处理器对上述第一格式数据进行转换。该视频加速库可以用于提供视频硬件编解码功能,同时也可以用于将第一格式数据转换为第二格式数据。

可选的,该视频加速库可以包括视频加速应用程序接口(videoaccelerationapi,vaapi)等。

可选的,上述vaapi可以通过mesa3d来实现,该mesa3d可以以开源形式实现视频加速(videoacceleration,va)的应用程序接口。

在其中一种可能的实现方式中,上述第二格式数据可以包括图像的亮度值和色度值。

可选的,上述第二格式数据可以是yuv格式的帧数据。其中,yuv是一种颜色编码方法,常使用在各个视频处理组件中。yuv在对照片或视频编码时,考虑到人类的感知能力,允许降低色度的带宽。yuv是用于编译图像数据的一种格式,y'uv、yuv、ycbcr、ypbpr等专有名词都可以称为yuv,彼此有重叠。“y”表示明亮度(luminance或luma),也就是灰阶值,“u”和“v”表示的则是色度(chrominance或chroma),作用是描述影像色彩及饱和度,用于指定像素的颜色。

在其中一种可能的实施方式中,上述图形库中包括配置用于获取上述第一格式数据的存储资源的应用程序接口(可以称为第一接口)。上述第一处理器可以直接调用该第一接口获取上述第一格式数据的存储资源。该存储资源可以包括该第一格式数据的存储地址信息,即上述第一存储空间的具体地址信息,还可以包括该第一格式数据的容量大小等信息。

可选的,如果第二处理器是gpu,则上述存储资源可以是显存资源,该显存资源可以包括上述第一格式数据的所在的显存空间的存储地址信息,还可以包括该第一格式数据的容量大小等信息。

此外,上述视频加速库包括配置用于接收上述第一处理器调用上述第一接口发送过来的所述存储资源的应用程序接口(可以称为第二接口),即上述第一接口获取到第一格式数据的存储资源后,将该存储资源发送给该第二接口。该第二接口获取该存储资源之后,可以指示第二处理器将所述存储资源标记到待编码区例如编码缓冲区中,以等待格式转换后进行编码。该待编码区包括用于存放待编码的数据和/或待编码数据的存储地址的存储空间。

在其中一种可能的实施方式中,上述第一接口可以是在不能实现获取上述第一格式数据的存储资源、并将存储资源发送给上述第二接口这一功能的图形库中新增加的应用程序接口,该接口专门用于获取上述第一格式数据的存储资源,并将存储资源发送给上述第二接口。此外,上述第二接口可以是在不能实现从上述第一接口中接收上述存储资源、并将所述存储资源标记到待编码区中这一功能的视频加速库中新增的应用程序接口,该接口专门用于从上述第一接口中接收上述存储资源、并将所述存储资源标记到待编码区中。

在其中一种可能的实现方式中,可以在上述mesa3d的opengl状态跟踪器里添加计算机程序实现上述第一接口,该opengl状态跟踪器管理着图像数据的存储资源。此外,可以在上述mesa3d的va状态跟踪器里添加计算机程序实现上述第二接口,va状态跟踪器管理着编码缓冲区的存储资源,该编码缓冲区用于管理图像/视频编码的输入数据和输出数据。

在其中一种可能的实施方式中,上述第一处理器可以调用第三接口向上述第二处理器申请第二存储空间,上述第二存储空间为用于存放上述第二格式数据的地址空间;然后,再调用上述第三接口指示上述第二处理器将上述第一格式数据转换为第二格式数据。

可选的,上述第三接口可以为上述视频加速库中的应用程序接口,具体的可以是格式转换接口,该接口用于将上述第一格式数据转换为第二格式数据。

在具体实施例中,上述第一处理器调用第三接口通过上述第二接口获取到上述第一格式数据的存储资源之后,向第二处理器申请一个存储空间用于存放将第一格式数据格式转换后的数据,即第二格式数据,然后调用第三接口根据上述存储资源获取上述第一格式数据,然后指示第二处理器将该图像数据转换为第二格式数据,并将该第二格式数据存储在申请的存储空间中。

可选的,如果第二处理器是gpu,则上述第二存储空间可以是用于存放上述第二格式数据的显存空间。

在本申请实施例中,可以通过专门的应用程序接口获取渲染之后的图像数据,以使得可以在第二处理器侧对该图像数据进行格式转换,避免了将渲染后的数据复制到第一处理器转换格式后再复制到第二处理器的操作,节省了第一处理器和第二处理器的资源。

步骤304、所述第二处理器将所述第二格式数据编码为第三格式数据。

在具体实施例中,上述第一处理器指示所述第二处理器将上述第一格式数据转换为第二格式数据之后,继续指示该第二处理器将该第二格式数据编码为第三格式数据。

在其中一种可能的实现方式中,上述第三格式数据的数据容量小于上述第二格式数据的数据容量,因此,上述第三格式数据在传输过程中占用的带宽小于所述第二格式数据在传输过程中占用的带宽。

可选的,上述第三格式数据可以是h.264或h.265格式的帧数据。其中,h.264是一种高度压缩数字视频编解码器标准,h.264标准各主要部分包括访问单元分割符(accessunitdelimiter)、附加增强信息(sei)、基本图像编码(primarycodedpicture)和冗余图像编码(redundantcodedpicture),还可以包括即时解码刷新(instantaneousdecodingrefresh,idr)、假想参考解码(hypotheticalreferencedecoder,hrd)和假想码流调度器(hypotheticalstreamhcheduler,hss)。此外,h.265为高效率视频编码(highefficiencyvideocoding,hevc),是继h.264之后所制定的新的视频编码标准。

在其中一种可能的实施方式中,上述第一处理器调用第四接口向上述第二处理器申请第三存储空间,上述第三存储空间为用于存放上述第三格式数据的地址空间;然后,再调用上述该第四接口指示上述第二处理器将上述第二格式数据编码为第三格式数据。

可选的,上述第四接口可以为上述视频加速库中的应用程序接口,具体的可以是编码接口,该接口用于将上述第二格式数据编码为第三格式数据。

在具体实施例中,在上述第三接口将上述第一格式数据转换为第二格式数据之后,上述第一处理器调用第四接口向第二处理器申请一个存储空间用于存放将第二格式数据编码后的数据,即第三格式数据,然后调用第四接口指示上述第二处理器将该第二格式数据编码得到第三格式数据,并将该第三格式数据存储在申请的存储空间中。

可选的,如果第二处理器是gpu,则上述第三存储空间可以是用于存放上述第三格式数据的显存空间。

步骤305、所述第二处理器将上述第三格式数据从第二处理器对应的存储空间复制到第一处理器对应的存储空间。

具体的,可以是第一处理器指示所述第二处理器将上述第三格式数据从第二处理器对应的存储空间复制到第一处理器对应的存储空间,即第一处理器指示所述第二处理器将上述第三格式数据从第二处理器对应的存储空间发送到第一处理器对应的存储空间。

可选的,如果上述第一处理器为cpu,则第一处理器对应的存储空间可以是内存空间。具体的,内存为cpu的存储器,用于保存进程运行时的程序和数据,也称可执行存储器。上述内存空间可以是上述cpu在内存中分配的用于存放上述第三格式数据的地址空间。

步骤306、所述第一处理器将上述第三格式数据发送到客户端。

在具体的实施例中,上述第一处理器指示上述第二处理器将编码得到的第三格式数据从第二处理器的存储空间复制到第一处理器的存储空间中,然后,第一处理器将该第三格式数据发送给对应的客户端以用于显示。

在其中一种可能的实施方式中,本方案的实现可以基于第二处理器开源驱动mesa3d的状态跟踪器一层,没有依赖第二处理器设备相关驱动层,即不依赖特定的第二处理器型号,只要是基于开源驱动mesa3d实现了opengl接口和vaapi接口的第二处理器,都可以使用本方案。

在其中一种可能的实现方式中,上述第二处理器的开源驱动mesa3d可以基于linux系统来实现,当然也可以基于其它的系统例如伯克利软件套件(berkeleysoftwaredistribution,bsd)来实现,bsd是unix的衍生系统。本方案对实现所应用的系统或平台不做限制,只要可以实现本方案的功能的系统或平台都可以。

在其中一种可能的实现方式中,上述第一接口也可以是独立于图形库的应用程序接口,其同样可以实现上述第一接口可以实现的功能,即获取上述第一格式数据的存储资源,并将存储资源发送给上述第二接口。

在其中一种可能的实现方式中,上述第二接口也可以是独立于视频加速库的应用程序接口,该第二接口可以与图形库中的应用程序接口进行数据交互,因此同样可以实现上述第二接口可以实现的功能,即从上述第一接口中接收上述存储资源,然后将该存储资源发送给视频加速库,再将所述存储资源标记到编码缓冲区中。

在其中一种可能的实现方式中,上述步骤301至步骤306所述的操作可以是上述第一处理器执行一个主程序所实现的操作。具体的,该第一处理器将该主程序下载到内存空间,然后运行该主程序,从而实现了上述步骤301至步骤306所述的操作。

综上所述,现有技术中将渲染结果rgba格式的图像数据传回第一处理器侧、第一处理器做rgba格式到yuv格式的转码、再将yuv格式数据发送到第二处理器、第二处理器做yuv数据到h.264或h265转码、将h.264或h265数据传回第一处理器,这整个流程步骤较多,处理时间很长,整套流程下来平均需要80ms左右。本发明中一帧图像在渲染后直接在第二处理器内完成rgba到yuv格式转换、yuv格式到h264或h265编码的流程,流程少,处理所需时间短,平均需8ms左右完成,性能较现有技术提升10倍,时延低,客户端能够更快的接收到画面更新,使得画面更新更流畅。

此外,现有技术额外的两次在第一处理器存储空间和第二处理器存储空间之间的数据复制,在多路云手机并发的情况下,需要消耗较大的第一处理器和第二处理器负载去做数据搬移,导致云手机并发密度受限。本发明方案减少了上述的两次数据复制,节省了第一处理器和第二处理器资源,增加了云手机并发密度。

而且,现有技术需要第一处理器做rgba到yuv格式的转换,会耗费第一处理器资源,本发明方案由第二处理器来做该转换,节省了第一处理器资源,同时第二处理器做这类转换比第一处理器更快、效率更高。

为了便于理解本方案,下面结合图4示例性示出的客户端与服务器交互的场景图来介绍本方案实施例提供的一种图像渲染和编码的方法的一个应用实施例。

图4所示的场景包括云手机客户端和服务器端,其中,服务器上运行有云手机服务器,该云手机服务可以是安卓android虚拟机。该云手机服务可以包括操控模块、抓图服务模块和视频流服务模块;该云手机服务还可以包括图像显示模块和编码库。服务器中还可以包括gpu,当然该gpu也可以是独立于该服务器,但是可以与该服务器进行数据交互的图形处理器。

下面就结合图4示例性介绍本方案实施例提供的一种图像渲染和编码的方法的一个应用流程,该流程可以包括但不限于如下步骤:

①云手机客户端响应于硬件的触控操作获取该触控的信息,该触控的信息可以包括触控的位置信息,以及根据该触控匹配出的需要获取显示的图像数据的信息等等。

②然后,云手机客户端通过网络将该触控信息发送给服务器。

③服务器接收到该触控信息之后触发云手机服务的操控模块对该触控信息进行处理,得到处理后的数据。

④和⑤步骤中,服务器触发云手机服务的图像显示模块请求gpu对处理后的数据进行渲染,得到渲染后的rgba格式的图像数据。

⑥然后、gpu继续将渲染后的rgba格式的图像数据转换为yuv格式的帧数据。

⑦格式转换后,gpu继续将转换后的yuv格式的帧数编码为h.264或h.265格式的数据。

⑧、⑨和⑩步骤中,gpu将编码得到的h.264或h.265帧数据回传给云手机服务视频流服务模块。

云手机服务视频流服务模块通过网路将h.264或h.265帧数据发送给云手机客户端。

云手机客户端接收该h.264或h.265帧数据后,对其进行视频解码。

云手机客户端将解码后的数据显示在显示屏中。

上述步骤④、⑤、⑥和⑦中的具体实现及有益效果可以参见图3中对应的描述,此处不再赘述。

上述主要从第一处理器与第二处理器之间交互的角度对本申请实施例提供的方案进行了介绍。可以理解的是,各个网元,例如第一处理器、第二处理器等为了实现上述功能,其包含了执行各个功能相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,本申请能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。

本申请实施例可以根据上述方法示例对第一处理器、第二处理器等进行功能模块的划分,例如,可以对应各个功能划分各个功能模块,也可以将两个或两个以上的功能集成在一个处理模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。需要说明的是,本申请实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。

在采用对应各个功能划分各个功能模块的情况下,图5示出了上述方法实施例中所涉及的第一处理器的一种可能的逻辑结构示意图,第一处理器500包括:发送单元501、指示单元502和调用单元503。示例性的,发送单元501用于执行如前述图3所示方法实施例中步骤301和步骤306所示的第一处理器发送信息的步骤;指示单元502用于执行前述图3所示方法实施例中步骤302、步骤303、步骤304和步骤305所示的第一处理器指示第二处理器完成图像渲染、格式转换、编码以及复制的步骤;调用单元503用于执行前述图3所示方法实施例中步骤302、步骤303和步骤304的可能的实施方式所示的第一处理器调用接口的步骤。

例如,发送单元501,用于将待渲染的数据发送给第二处理器;指示单元502,用于:指示所述第二处理器根据所述待渲染的数据渲染得到第一格式数据,所述第一格式数据包括图像的三基色颜色特征;所述第一格式数据存储在所述第二处理器的第一存储空间中;指示所述第二处理器将所述第一存储空间中的所述第一格式数据转换为第二格式数据,所述第二格式数据包括图像的亮度值和色度值;以及指示所述第二处理器将所述第二格式数据编码为第三格式数据,所述第三格式数据的数据容量小于所述第二格式数据的数据容量;发送单元501,还用于向客户端发送所述第三格式数据。

在采用对应各个功能划分各个功能模块的情况下,图6示出了上述方法实施例中所涉及的第二处理器的一种可能的逻辑结构示意图,第二处理器600包括:接收单元601、渲染单元602、转换单元603、编码单元604和发送单元605。示例性的,接收单元601用于执行前述图3所示方法实施例中步骤302所示的第二处理器接收信息的步骤;渲染单元602,用于执行前述图3所示方法实施例中步骤302所示的第二处理器渲染图像的步骤;转换单元603用于执行前述图3所示方法实施例中步骤303所示的第二处理器转换格式的步骤;编码单元604用于执行前述图3所示方法实施例中步骤304所示的第二处理器编码的步骤;发送单元605用于执行前述图3所示方法实施例中步骤305所示的第二处理器发送信息的步骤。

例如,接收单元601,用于接收第一处理器发送的待渲染的数据;渲染单元602,用于根据所述待渲染的数据渲染得到第一格式数据,所述第一格式数据包括图像的三基色颜色特征;所述第一格式数据存储在所述处理器的第一存储空间中;转换单元603,用于将所述第一存储空间中的所述第一格式数据转换为第二格式数据,所述第二格式数据包括图像的亮度值和色度值;编码单元604,用于将所述第二格式数据编码为第三格式数据,所述第三格式数据的数据容量小于所述第二格式数据的数据容量;发送单元605,用于发送所述第三格式数据。

为了便于更好地实施本发明的上述方案,本发明实施例还对应提供了一种处理器,该处理器可以是上述图3中所述的第一处理器,该处理器执行如下操作:

将待渲染的数据发送给第二处理器;指示上述第二处理器根据上述待渲染的数据渲染得到第一格式数据,上述第一格式数据包括图像的三基色颜色特征;上述第一格式数据存储在上述第二处理器的第一存储空间中;指示上述第二处理器将上述第一格式数据转换为第二格式数据,上述第二格式数据包括图像的亮度值和色度值;指示上述第二处理器将上述第二格式数据编码为第三格式数据,上述第三格式数据的数据容量小于上述第二格式数据的数据容量;向客户端发送上述第三格式数据。

在其中一种可能的实施方式中,在上述处理器指示上述第二处理器根据上述待渲染的数据渲染得到第一格式数据之后,上述处理器指示上述第二处理器将上述第一格式数据转换为第二格式数据之前,还包括:上述处理器调用第一接口获取上述第一格式数据在上述第一存储空间中的存储地址;上述处理器调用上述第一接口将上述存储地址发送给第二接口;上述处理器调用上述第二接口指示上述第二处理器将上述存储地址标记到待编码区中,上述待编码区包括用于存放待编码的数据和/或待编码数据的存储地址的存储空间。

在其中一种可能的实施方式中,上述第一接口为图形库中配置的用于获取上述存储地址的应用程序接口。

在其中一种可能的实施方式中,上述第二接口为视频加速库中配置的用于接收上述第一接口发送过来的上述存储地址以及指示上述第二处理器将上述存储地址标记到上述待编码区中的应用程序接口。

在其中一种可能的实施方式中,上述处理器指示上述第二处理器将上述第一格式数据转换为第二格式数据,包括:上述处理器调用第三接口向上述第二处理器申请第二存储空间,上述第二存储空间为用于存放上述第二格式数据的地址空间;上述第三接口为视频加速库中的应用程序接口;上述处理器调用上述第三接口指示上述第二处理器将上述第一格式数据转换为第二格式数据。

在其中一种可能的实施方式中,上述处理器指示上述第二处理器将上述第二格式数据编码为第三格式数据,包括:上述处理器调用第四接口向上述第二处理器申请第三存储空间,上述第三存储空间为用于存放上述第三格式数据的地址空间;上述第四接口为视频加速库中的应用程序接口;上述处理器调用上述第四接口指示上述第二处理器将上述第二格式数据编码为第三格式数据。

本发明实施例还对应提供了一种处理器,该处理器可以是上述图3中所述的第二处理器,该处理器执行如下操作:

接收待渲染的数据;根据上述待渲染的数据渲染得到第一格式数据,上述第一格式数据包括图像的三基色颜色特征;上述第一格式数据存储在上述处理器的第一存储空间中;将上述第一格式数据转换为第二格式数据,上述第二格式数据包括图像的亮度值和色度值;将上述第二格式数据编码为第三格式数据,上述第三格式数据的数据容量小于上述第二格式数据的数据容量;发送上述第三格式数据。

本发明实施例还对应提供了一种服务器,如图7所示。图7是本发明实施例提供的一种服务器700,该服务器700包括第一处理器701(可以是图3中所述的第一处理器)、存储器702、通信接口703和第二处理器705(可以是图3中所述的第二处理器),所述第一处理器701、存储器702、通信接口703和第二处理器705通过总线704相互连接。

存储器702包括但不限于是随机存储记忆体(randomaccessmemory,ram)、只读存储器(read-onlymemory,rom)、可擦除可编程只读存储器(erasableprogrammablereadonlymemory,eprom)、或便携式只读存储器(compactdiscread-onlymemory,cd-rom),该存储器702用于相关指令及数据的存储。通信接口703用于接收和发送数据。

该服务器700中的第一处理器701用于读取所述存储器702中存储的计算机程序,以用于执行前述图3及其可能的实施方式中的方法实施例。

本发明实施例还提供一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行以实现前述图3及其可能的实施方式所述方法实施例。

本发明实施例还提供一种计算机程序产品,当该计算机程序产品被计算机读取并执行时,前述图3及其可能的实施方式所述方法实施例得以实现。

本发明实施例还提供一种计算机程序,当该计算机程序在计算机上执行时,将会使所述计算机实现前述图3及其可能的实施方式所述方法实施例。

综上所述,相比于现有技术中需要将在第二处理器中渲染好的第一格式的数据复制到第一处理器的内存中,在第一处理器转换为第二格式的数据之后,再复制到第二处理器内存中进行编码,本申请实施例可以在第二处理器中完成渲染、格式转换和编码的过程,不需要额外两次的数据传输,因此通过本申请实施例能够节省第一处理器和第二处理器的资源、提高渲染和编码的效率。

综上,以上仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1