渲染指令的抓取方法、装置、电子设备及存储介质与流程

文档序号:32300551发布日期:2022-11-23 08:11阅读:57来源:国知局
渲染指令的抓取方法、装置、电子设备及存储介质与流程

1.本技术涉及图形处理技术领域,尤其涉及一种渲染指令的抓取方法、装置、电子设备及存储介质。


背景技术:

2.目前渲染指令的抓取大都依赖抓帧工具(如renderdoc、gapid等)来实现,而抓帧工具在抓取电子设备上的渲染指令时,需要与该电子设备保持连接。若电子设备因故障导致与抓帧工具的连接断开,则通常会影响渲染指令的有效抓取。


技术实现要素:

3.本技术实施例提供了一种渲染指令的抓取方法、装置、电子设备及存储介质,能够提高渲染指令的抓取效率。
4.本技术实施例第一方面提供了一种渲染指令的抓取方法,所述方法适用于电子设备,所述电子设备的操作系统包括应用层、hook层及驱动层,所述方法包括:
5.通过所述hook层,捕获所述应用层向所述驱动层下发的渲染指令;
6.处理所述渲染指令,并存储处理后的渲染指令至指定存储空间。
7.本技术实施例第二方面提供了一种渲染指令的抓取装置,所述渲染指令的抓取装置处于电子设备上,所述电子设备的操作系统包括应用层、hook层及驱动层,所述渲染指令的抓取装置包括:
8.数据捕获单元,用于通过所述hook层,捕获所述应用层向所述驱动层下发的渲染指令;
9.数据处理单元,用于处理所述渲染指令,并存储处理后的渲染指令至指定存储空间。
10.本技术实施例第三方面提供了一种电子设备,包括:
11.存储有可执行程序代码的存储器;
12.以及所述存储器耦合的处理器;
13.所述处理器调用所述存储器中存储的所述可执行程序代码,所述可执行程序代码被所述处理器执行时,使得所述处理器实现如本技术实施例第一方面所述的方法。
14.本技术实施例第四方面提供一种计算机可读存储介质,其上存储有可执行程序代码,所述可执行程序代码被处理器执行时,实现如本技术实施例第一方面所述的方法。
15.本技术实施例第五方面公开一种计算机程序产品,当该计算机程序产品在计算机上运行时,使得该计算机执行本技术实施例第一方面公开的任意一种所述的方法。
16.本技术实施例第六方面公开一种应用发布平台,该应用发布平台用于发布计算机程序产品,其中,当该计算机程序产品在计算机上运行时,使得该计算机执行本技术实施例第一方面公开的任意一种所述的方法。
17.从以上技术方案可以看出,本技术实施例具有以下优点:
18.本技术实施例公开的渲染指令的抓取方法适用于电子设备,该电子设备的操作系统包括应用层、hook层及驱动层。该渲染指令的抓取方法可以包括:通过hook层,捕获应用层向驱动层下发的渲染指令;处理渲染指令,并存储处理后的渲染指令至指定存储空间。
19.通过实施该方法,电子设备可以通过hook层,捕获应用层向驱动层下发的渲染指令,然后对捕获的渲染指令执行处理及存储操作,从而达到了不借助抓帧工具,自主完成渲染指令抓取的目的,有利于提高渲染指令抓取的有效性。
附图说明
20.为了更清楚地说明本技术实施例技术方案,下面将对实施例和现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,还可以根据这些附图获得其它的附图。
21.图1是本技术实施例公开的电子设备的操作系统的一种架构图示;
22.图2是本技术实施例公开的渲染指令的抓取方法的一种流程示意图;
23.图3是本技术实施例公开的渲染指令的抓取方法的另一种流程示意图;
24.图4a是本技术实施例公开的hook层的一种工作流程图示;
25.图4b是本技术实施例公开的电子设备的缓冲区的一种结构图示;
26.图4c是本技术实施例公开的渲染指令的一种存储图示;
27.图5是本技术实施例公开的渲染指令的抓取装置的一种结构图示。
28.图6是本技术实施例公开的电子设备的一种结构框图。
具体实施方式
29.本技术实施例提供了一种渲染指令的抓取方法、装置、电子设备及存储介质,能够提高渲染指令的抓取效率。
30.为了使本技术领域的人员更好地理解本技术方案,下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行描述,显然,所描述的实施例仅仅是本技术一部分的实施例,而不是全部的实施例。基于本技术中的实施例,都应当属于本技术保护的范围。
31.可以理解的是,本技术实施例中所涉及的电子设备可以包括一般的手持有屏电子用户终端,诸如手机、智能电话、便携式终端、终端、个人数字助理(personal digital assistant,pda)、便携式多媒体播放器(personal media player,pmp)装置、笔记本电脑、笔记本(note pad)、无线宽带(wireless broadband,wibro)终端、平板电脑(personal computer,pc)、智能pc、销售终端(point of sales,pos)和车载电脑等。
32.电子设备也可以包括可穿戴设备。可穿戴设备可以直接穿戴在用户身上,或是整合到用户的衣服或配件的一种便携式电子设备。可穿戴设备不仅仅是一种硬件设备,更可以通过软件支持以及数据交互、云服务器交互来实现强大的智能功能,比如:计算功能、定位功能、报警功能,同时还可以连接手机及各类终端。可穿戴设备可以包括但不限于以手腕为支撑的watch类(比如手表、手腕等产品),以脚为支撑的shoes类(比如鞋、袜子或者其他腿上佩戴产品),以头部为支撑的glass类(比如眼镜、头盔、头带等)以及智能服装,书包、拐杖、配饰等各类非主流产品形态。
33.下面对本技术实施例涉及到的专有名词进行说明:
34.应用层:是开放式通信系统互联参考模型(open system interconnection,osi)的最高层,例如,可以是七层osi的第七层,或者可以是五层osi的第五层。应用层可以直接为应用进程提供服务的,例如,应用层负责对应用程序提供接口,以使应用程序能使用网络应用服务。
35.hook层:处于应用层和驱动层中间,用于截取应用层与驱动层之间的交互数据,该交互数据可以是渲染指令、操作指令数据等,在此不作限制。
36.驱动层:一般由硬件抽象层、板级支持包和驱动程序组成,是电子设备的系统中不可或缺的部分。它的作用是为应用层程序提供访问底层硬件的接口,应用层通过对驱动程序发送相应的指令,实现硬件控制的动作指令,从而实现应用层对应的功能。
37.缓冲区:是内存中用来对输入/输出数据做临时存储的存储空间,可以用来存储访问频率较高的数据,这样当处理器需要访问数据时可以直接从缓冲区中获取数据,以提高处理器数据访问效率。该缓冲区的大小可以是预先设置的,也可以根据实际情况灵活调整,在此不作限制。
38.非易失存储空间:是指当电流关掉后,所存储的数据不会消失的存储空间:
39.共享内存空间:指的是可被多个设备访问的存储空间。
40.目前渲染指令的抓取大都依赖抓帧工具(如renderdoc、gapid等)来实现,而抓帧工具在抓取电子设备上的渲染指令时,需要与该电子设备保持连接。若电子设备因故障导致与抓帧工具的连接断开,则通常会影响渲染指令的有效抓取。为解决这一问题,在本技术实施例中,电子设备通过hook层,捕获应用层向驱动层下发的渲染指令,然后对捕获的渲染指令执行处理及存储操作,从而达到了不借助抓帧工具,自主完成渲染指令抓取的目的,有利于提高渲染指令抓取的有效性。
41.请参阅图1,图1是本技术实施例公开的电子设备的操作系统的一种架构图示。如图1所示的架构图示可以包括应用层110、hook层120以及驱动层130。其中,应用层110可以根据用户对电子设备的操作生成渲染指令render command(),该render command()经由hook层120发送给驱动层130。或者,可以理解成,在应用层110中插入了监听事件,只要应用层110向驱动层130下发render command(),hook层120可以通过该监控事件捕获到该render command(),从效果上实现了render command()经由hook层120发送给驱动层130。综上,在应用层110向驱动层130下发的渲染指令后,该渲染指令可被hook层120捕获,从而达到了不借助抓帧工具,自主完成渲染指令抓取的目的,有利于提高渲染指令抓取的有效性。
42.需要说明的是,在图1所示的系统中,包括了多个render command(),这些render command()可以是并行处理也可以是按照一定顺序串行处理,在本技术实施例中不作限制。
43.请参阅图2,图2是本技术实施例公开的渲染指令的抓取方法的一种流程示意图,该方法可以应用于如图1所示的电子设备中。如图2所示的渲染指令的抓取方法可以包括以下步骤:
44.201、通过hook层,捕获应用层向驱动层下发的渲染指令。
45.其中,渲染指令包括渲染指令的名称和参数信息。其中,渲染指令的名称用于识别渲染指令的类别,参数信息可以包括图像数据参数和/或非图像数据参数。其中,图像数据
参数可以为指向内存中图像数据的指针,该图像数据可以包括以下任一种:纹理数据、着色数据及几何数据,非图像数据参数可以包括图像数据的属性参数。示例性的,渲染指令的名称指示渲染指令为二维纹理生成指令,则该渲染指令的非图像数据参数可以包括表征纹理类型的参数、表征详细程度编号的参数、表征纹理的内容格式的参数、表征纹理图像的高度的参数、表征纹理图像的宽度的参数、表征纹理图像的边框宽度的参数等。
46.在一些实施例中,通过hook层,捕获应用层向驱动层下发的渲染指令,可以包括:通过hook层,对应用层向驱动层下发的渲染指令进行监听,并在监听到该渲染指令时,对该渲染指令进行截取。
47.在本技术实施例中,应用层向驱动层下发渲染指令的方式可以和相关技术中相似,在此不再赘述。
48.202、处理渲染指令,并存储处理后的渲染指令至指定存储空间。
49.在一些实施例中,电子设备可以通过hook层,处理渲染指令,并存储处理后的渲染指令至指定存储空间。
50.在一些实施例中,针对渲染指令的处理及存储操作还可以是应用层或驱动层执行,此处不做限定。
51.在一些实施例中,指定存储空间指的可以是以下任一种:电子设备的缓冲区、电子设备的非易失存储空间或云端的共享内存空间等,具体存储位置可以根据实际情况设置,本技术实施例不做限定。
52.需要说明的是,云端的共享内存空间指的是允许除电子设备之外的其他电子设备访问的存储空间,该其他电子设备可以是与电子设备处于同一局域网的其他设备,或者可以是远程服务器,远程服务器可以获取该共享存储空间中存储的数据,以及对该共享存储空间中的数据进行操作,例如,可以删除部分数据,或者可以根据存储在共享存储空间上的电子设备对应的渲染指令,回放电子设备对应的渲染帧,在此不作限制。这样,电子设备将处理后的渲染指令上传到共享存储空间,远程服务器可以通过访问共享存储空间得到电子设备对应的渲染指令,这样不仅节省了电子设备的存储空间,也节省了远程服务器的存储空间。
53.通过实施上述方法,电子设备可以通过hook层,捕获应用层向驱动层下发的渲染指令,然后对捕获的渲染指令执行处理及存储操作,从而达到了不借助抓帧工具,自主完成渲染指令抓取的目的,有利于提高渲染指令抓取的有效性。
54.请参阅图3,图3是本技术实施例公开的渲染指令的抓取方法的另一种流程示意图。如图3所示的渲染指令的抓取方法可以包括以下步骤:
55.301、通过hook层,捕获应用层向驱动层下发的渲染指令。
56.在一些实施例中,通过hook层,捕获应用层向驱动层下发的渲染指令,可以包括:通过hook层,响应于用于抓取渲染指令的数据抓取指令,捕获应用层向驱动层下发的渲染指令,数据抓取指令用于指示对第一指定时长内的渲染帧对应的渲染指令进行抓取。
57.在一些实施例中,数据抓取指令可以是远程服务器发送的;或者,根据电子设备播放的视频流的画面质量生成的;或者,响应用户输入的目标操作,生成的,本技术实施例不做限定。
58.在一些实施例中,远程服务器可以周期性向电子设备发送数据抓取指令,以对电
子设备的渲染情况进行分析。
59.其中,根据电子设备播放的视频流的画面质量生成数据抓取指令指的可以是,若电子设备播放的视频流的画面质量不佳,则电子设备自动生成数据抓取指令。
60.在一些实施例中,视频流指的可以是当前时间点之前的第二指定时长内的视频流,该视频流的画面质量可以根据视频流中的至少一帧的画面质量确定。
61.在一些实施例中,视频流的画面质量可以是根据第二指定时长内的多帧的画面质量确定的,该多帧指的可以是第二指定时长内的所有或部分帧,本技术实施例不做限定。
62.进一步的,确定电子设备播放的视频流的画面质量,可以包括:
63.获取每帧的质量分值,并对每帧的质量分值求平均,得到视频流对应的平均质量分值,以及在平均质量分值小于或等于平均分值阈值时,确定视频流的画面质量不佳;
64.或者,
65.获取每帧的质量分值,并根据每帧的质量分值,得到质量分值小于质量分值阈值的帧的占比,以及在该占比大于占比阈值时,确定视频流的画面质量不佳。
66.在一些实施例中,视频流的画面质量可以是根据第二指定时长内的最后一帧的画面质量确定的。进一步的,确定电子设备播放的视频流的画面质量,可以包括:获取第二指定时长内的最后一帧的质量分值,并在该最后一帧的质量分值小于或等于质量分值阈值时,确定电子设备播放的视频流的画面质量不佳。
67.在一些实施例中,触发电子设备生成数据抓取指令的目标操作可以包括以下任一种:手势操作、语音操作或触摸操作等等。
68.302、处理渲染指令,并存储处理后的渲染指令至指定存储空间。
69.在一些实施例中,通过hook层,捕获应用层向驱动层下发的渲染指令,可以包括:通过hook层从第一线程中捕获渲染指令,第一线程为应用层向驱动层下发渲染指令的线程,第一线程是由应用层、hook层及驱动层执行的。
70.进一步的,处理渲染指令,并存储处理后的渲染指令至指定存储空间,可以包括:通过第二线程,从第一线程中获取渲染指令,并处理渲染指令,以及存储处理后的渲染指令至指定存储空间。
71.在一些实施例中,第二线程可以由hook层执行。通过实施该方法,hook层利用第一线程捕获渲染指令,并利用第二线程执行渲染指令的处理及存储操作,这种多线程抓取渲染指令的方法可以有效解决因渲染指令的数据量过大而导致的程序卡顿问题。
72.请参阅图4a,图4a是本技术实施例公开的hook层的一种工作流程图示。如图4a所示,第一线程是由应用app层110、hook层120及驱动driver层130执行的。其中,hook层120首先从第一线程中捕获渲染指令,并将该渲染指令发送给第二线程,然后再利用第二线程处理该渲染指令,并将处理后的渲染指令存储至电子设备的缓冲区buffer中。
73.在一些实施例中,处理渲染指令,并存储处理后的渲染指令至指定存储空间,可以包括:若渲染指令的名称为目标名称,则从渲染指令中解析出图像数据参数和非图像数据参数,图像数据参数为指向内存中图像数据的指针,图像数据包括以下任一种:纹理数据、着色数据及几何数据;根据图像数据参数,从内存中拷贝图像数据;将渲染指令的名称及非图像数据参数存储至第一存储空间,以及,将图像数据存储至第二存储空间,指定存储空间包括第一存储空间和第二存储空间。
74.其中,目标名称为指定类别的渲染指令的名称,该指定类别指的可以是纹理相关的渲染指令、着色相关的渲染指令或几何相关的渲染指令。
75.在一些实施例中,将渲染指令的名称及非图像数据参数存储至第一存储空间,以及,将图像数据存储至第二存储空间,可以包括:分别对渲染指令的名称、非图像数据参数及图像数据进行编码,得到编码后的渲染指令的名称、编码后的非图像数据参数以及编码后的图像数据;其中,编码后的图像数据包括数据标识;将编码后的渲染指令的名称、编码后的非图像数据参数以及数据标识存储至第一存储空间,以及将编码后的图像数据存储至第二存储空间。
76.在一些实施例中,对渲染指令的名称进行编码指的可以是,从渲染指令的名称对应的映射表中,确定上述渲染指令的名称对应的id,以及将上述渲染指令的名称对应的id作为编码后的渲染指令的名称。
77.在一些实施例中,非图像数据参数可以包括数值和符号常量值。对非图像数据参数进行编码指的可以是对符号常量值进行编码。进一步的,对符号常量值进行编码,可以包括:从符号常量值对应的映射表中,确定符号常量值对应的id,以及将该id作为编码后的符号常量值。其中,映射表可以包括符号常量值所指示的参数类型对应的所有符号常量值,及每一符号常量值对应的id。
78.对图像数据进行编码,可以包括:分别确定图像数据的数据标识及数据长度,以及,将数据标识、数据长度以及图像数据作为编码后的图像数据。
79.其中,第二存储空间包括纹理存储空间、着色存储空间以及几何存储空间。请参照图4b,图4b是本技术实施例公开的电子设备的缓冲区的一种结构图示。如图4b所示的缓冲区包括第一存储空间410和第二存储空间420;其中,第二存储空间420包括纹理存储空间、着色存储空间及几何存储空间。
80.进一步的,将编码后的图像数据存储至第二存储空间,可以包括:在图像数据为纹理数据时,将编码后的图像数据存储至纹理存储空间;或者,在图像数据为着色数据时,将编码后的图像数据存储至着色存储空间;或者,在图像数据为几何数据时,将编码后的图像数据存储至几何储空间。
81.在一些实施例中,分别对渲染指令的名称、非图像数据参数及图像数据进行编码,得到编码后的渲染指令的名称、编码后的非图像数据参数以及编码后的图像数据,可以包括但不限于以下方式:
82.方式1、从电子设备预先存储的多种编码规则中,确定与远程服务器匹配的编码规则作为第一编码规则,远程服务器用于根据存储在指定存储空间的渲染指令,回放对应的渲染帧;基于第一编码规则,分别对渲染指令的名称、非图像数据参数及图像数据进行编码,得到编码后的渲染指令的名称、编码后的非图像数据参数以及编码后的图像数据。
83.在一些实施例中,电子设备中可以存储有多个远程服务器的标识信息,且每一远程服务器的标识信息对应关联有一个编码规则。电子设备可以将与上述远程服务器的标识信息对应关联的编码规则,作为第一编码规则。通过实施该方法,电子设备中存储有多种编码规则,电子设备可以自动基于与上述远程服务器匹配的编码规则,对渲染指令进行编码,极大提高了电子设备的智能化程度。
84.方式2、基于预先设定的第二编码规则,分别对渲染指令的名称、非图像数据参数
及图像数据进行编码,得到编码后的渲染指令的名称、编码后的非图像数据参数以及编码后的图像数据。可以理解的是,电子设备仅存储有一种编码规则,电子设备可基于该唯一的编码规则对渲染指令进行编码。
85.通过实施上述方法,在存储渲染指令时,先对渲染指令进行编码,然后再对编码后的渲染指令执行存储操作,可以有效降低渲染指令的数据量,进而有利于节省存储空间。
86.示例性的,渲染指令glteximage2d(gl_texture_2d,0,gl_alpha,32,32,0,gl_alpha,gl_unsigned_byte,src)。其中,glteximage2d是渲染指令的名称,gl_texture_2d、0、gl_alpha、32、32、gl_alpha及gl_unsigned_byte为均为非图像数据参数,src是图像数据参数,为指向内存中纹理数据的指针。其中,gl_texture_2d为表征纹理类型的参数,0为表征详细度编号的参数,gl_alpha为表征纹理的内部格式的参数,第一个32为表征纹理图像的宽度的参数、第二个32为表征纹理图像的长度的参数,0为表征边框的宽度,gl_unsigned_byte为表征纹理数据的数据类型的参数。
87.下面结合上述示例,对渲染指令的编码进行说明:
88.目前已知的渲染指令的类别大都不超过3000,所以渲染指令的名称可以以16位进行存储。glteximage2d用16位表示为36。
89.在非图像数据参数中的,32、32及0为数值,所以无需编码,需要编码的是符号常量值:gl_texture_2d、gl_alpha及gl_unsigned_byte。
90.其中,符号常量值的编码依赖对应的映射表进行。下述以符号常量值gl_texture_2d为例来进行说明:表征纹理类型的映射表中包括10种符号常量值,以及每种符号常量值对应的id。
91.10种符号常量值如下:
92.gl_texture_1d:0x0de0;
93.gl_texture_1d_array:0x8c18;
94.gl_texture_2d;
95.gl_texture_2d_array;
96.gl_texture_2d_multisample;
97.gl_texture_2d_multisample_array;
98.gl_texture_rectangle;
99.gl_texture_3d;
100.gl_texture_cube_map;
101.gl_texture_cube_map_array;
102.上述10种符号常量值对应的id依次是0-9。其中,gl_texture_2d对应的id为2,编码后gl_texture_2d为2。
103.同理,gl_alph编码后为1,gl_unsigned_byte编码后为5。
104.其中,编码后的纹理数据包括数据标识、数据长度及具体的纹理数据。示例性的,src指示的纹理数据的数据标识为3,数据长度为纹理图像的长乘以宽等于1024。
105.综上,针对渲染指令glteximage2d(gl_texture_2d,0,gl_alpha,32,32,0,gl_alpha,gl_unsigned_byte,src),第一存储空间中存储的包括:36、2、0、1、32、32、0、1、5及3;纹理存储空间存储的包括:3、1024、datd。
106.请参阅图4c,图4c是本技术实施例公开的渲染指令的一种存储图示。如图4c所示,第一线程分别由应用app层110、hook层120及驱动driver层130执行。其中,hook层120从第一线程中捕获渲染指令glteximage2d(gl_texture_2d,0,gl_alpha,32,32,0,gl_alpha,gl_unsigned_byte,src),并将渲染指令glteximage2d(gl_texture_2d,0,gl_alpha,32,32,0,gl_alpha,gl_unsigned_byte,src)发送给第二线程,hook层利用第二线程对渲染指令的名称、非图像数据参数、图像数据参数指示的纹理数据进行编码,得到编码后的渲染指令的名称、编码后的非图像数据参数、纹理数据的数据标识,以及纹理数据的数据长度;以及将编码后的渲染指令的名称、编码后的非图像数据参数及纹理数据的数据标识存储在buffer中的第一存储空间410,以及将纹理数据的数据标识、纹理数据的数据长度以及纹理数据存储在第二存储空间420中的纹理存储空间。
107.303、若目标渲染帧对应的渲染指令存储完成,则向远程服务器发送与目标渲染帧对应的渲染指令,以使远程服务器根据目标渲染帧对应的渲染指令,对目标渲染帧进行渲染回放。
108.在一些实施例中,向远程服务器发送与目标渲染帧对应的渲染指令,以使远程服务器根据目标渲染帧对应的渲染指令,对目标渲染帧进行渲染回放,可以包括:通过hook层向远程服务器发送与目标渲染帧对应的渲染指令,以使远程服务器根据目标渲染帧对应的渲染指令,对目标渲染帧进行渲染回放。
109.在一些实施例中,通过hook层,向远程服务器发送与目标渲染帧对应的渲染指令,以使远程服务器根据目标渲染帧对应的渲染指令,对目标渲染帧进行渲染回放,可以包括但不限于以下方式:
110.通过hook层,从指定存储空间获取目标渲染帧对应的数据块,并将目标渲染帧对应的数据块向远程服务器发送,以使远程服务器通过解析目标渲染帧对应的数据块,得到目标渲染帧对应的渲染指令,并根据目标渲染帧对应的渲染指令,对目标渲染帧进行渲染回放。可以理解的是,电子设备仅执行渲染指令的编码操作,渲染指令的解码是远程服务器执行的,可以有效降低电子设备的功耗,以及卡顿的发生概率。
111.或者,
112.通过hook层,从指定存储空间中解析目标渲染帧对应的渲染指令,并将目标渲染帧对应的渲染指令向远程服务器发送,以使远程服务器根据目标渲染帧对应的渲染指令,对目标渲染帧进行渲染回放。可以理解的是,渲染指令存储时的编码操作以及发送时的解码操作均由电子设备执行。
113.需要说明的是,在渲染指令的解码由远程服务器执行的情况下,若针对渲染指令的名称和图像数据参数的编码是基于预先设定的第二编码规则编码的,则电子设备还可以将第二编码规则向远程服务器发送,以使远程服务器可以根据该第二编码规则解析目标渲染帧对应的数据块,得到目标渲染帧对应的渲染指令。
114.另外,步骤303为可选步骤,即不是必须要执行的,例如,远程服务器可以根据预设的周期获取捕获的渲染指令然后进行回放,本领域技术人员根据实际情况进行设置。
115.通过实施上述方法,电子设备可以通过hook层,捕获应用层向驱动层下发的渲染指令,然后对捕获的渲染指令执行处理及存储操作,从而达到了不借助抓帧工具,自主完成渲染指令抓取的目的,有利于提高渲染指令抓取的有效性。进一步的,在一帧对应的渲染指
令存储完成之后,即刻向远程服务器进行发送,使得远程服务器可以及时对电子设备的渲染情况进行分析。
116.请参阅图5,图5是本技术实施例公开的渲染指令的抓取装置的一种结构图示。如图5所示的渲染指令的抓取装置可以包括数据捕获单元501和数据处理单元502,其中:
117.数据捕获单元501,用于通过hook层,捕获应用层向驱动层下发的渲染指令;
118.数据处理单元502,用于处理渲染指令,并存储处理后的渲染指令至指定存储空间。
119.在一些实施例中,数据捕获单元501用于通过hook层,捕获应用层向驱动层下发的渲染指令的方式具体可以包括:数据捕获单元501,用于通过hook层从第一线程中捕获渲染指令,第一线程为应用层向驱动层下发渲染指令的线程,第一线程是由应用层、hook层及驱动层执行的;
120.进一步的,数据处理单元502用于处理渲染指令,并存储处理后的渲染指令至指定存储空间的方式具体可以包括:数据处理单元502,用于通过第二线程,从第一线程中获取渲染指令,并处理渲染指令,以及存储处理后的渲染指令至指定存储空间。
121.在一些实施例中,数据处理单元502用于处理渲染指令,并存储处理后的渲染指令至指定存储空间的方式具体可以包括:数据处理单元502,用于若渲染指令的名称为目标名称,则从渲染指令中解析出图像数据参数和非图像数据参数,图像数据参数为指向内存中图像数据的指针,图像数据包括以下任一种:纹理数据、着色数据及几何数据;根据图像数据参数,从内存中拷贝图像数据;将渲染指令的名称及非图像数据参数存储至第一存储空间,以及,将图像数据存储至第二存储空间,指定存储空间包括第一存储空间和第二存储空间。
122.在一些实施例中,数据处理单元502用于将渲染指令的名称及非图像数据参数存储至第一存储空间,以及,将图像数据存储至第二存储空间的方式具体可以包括:数据处理单元502,用于分别对渲染指令的名称、非图像数据参数及图像数据进行编码,得到编码后的渲染指令的名称、编码后的非图像数据参数以及编码后的图像数据;其中,编码后的图像数据包括数据标识;将编码后的渲染指令的名称、编码后的非图像数据参数以及数据标识存储至第一存储空间,以及将编码后的图像数据存储至第二存储空间。
123.在一些实施例中,数据处理单元502用于分别对渲染指令的名称、非图像数据参数及图像数据进行编码,得到编码后的渲染指令的名称、编码后的非图像数据参数以及编码后的图像数据的方式具体可以包括:数据处理单元502,用于从电子设备预先存储的多种编码规则中,确定与远程服务器匹配的编码规则作为第一编码规则,远程服务器用于根据存储在指定存储空间的渲染指令,回放对应的渲染帧;以及,基于第一编码规则,分别对渲染指令的名称、非图像数据参数及图像数据进行编码,得到编码后的渲染指令的名称、编码后的非图像数据参数以及编码后的图像数据。
124.在一些实施例中,数据捕获单元501用于通过hook层,捕获应用层向驱动层下发的渲染指令的方式具体可以包括:数据捕获单元501,用于通过hook层,响应于用于抓取渲染指令的数据抓取指令,捕获应用层向驱动层下发的渲染指令,数据抓取指令用于指示对第一指定时长内的渲染帧对应的渲染指令进行抓取。
125.在一些实施例中,数据抓取指令是远程服务器发送的,或者,根据电子设备播放的
视频流的画面质量生成的。
126.在一些实施例中,数据处理单元502,还用于若目标渲染帧对应的渲染指令存储完成,则向远程服务器发送与目标渲染帧对应的渲染指令,以使远程服务器根据目标渲染帧对应的渲染指令,对目标渲染帧进行渲染回放。
127.请参阅图6,图6是本技术实施例公开的电子设备的一种结构框图。如图6所示的电子设备可以包括处理器601、与处理器601耦合的存储器602,其中存储器602可存储有一个或多个计算机程序。
128.处理器601可以包括一个或者多个处理核。处理器601利用各种接口和线路连接整个电子设备内的各个部分,通过运行或执行存储在存储器602内的指令、程序、代码集或指令集,以及调用存储在存储器602内的数据,执行电子设备的各种功能和处理数据。可选地,处理器601可以采用数字信号处理(digital signal processing,dsp)、现场可编程门阵列(field-programmable gate array,fpga)、可编程逻辑阵列(programmable logic array,pla)中的至少一种硬件形式来实现。处理器601可集成中央处理器(central processing unit,cpu)、图像处理器(graphics processing unit,gpu)和调制解调器等中的一种或几种的组合。其中,cpu主要处理操作系统、用户界面和应用程序等;gpu用于负责显示内容的渲染和绘制;调制解调器用于处理无线通信。可以理解的是,上述调制解调器也可以不集成到处理器601中,单独通过一块通信芯片进行实现。
129.存储器602可以包括随机存储器(random access memory,ram),也可以包括只读存储器(read-only memory,rom)。存储器602可用于存储指令、程序、代码、代码集或指令集。存储器602可包括存储程序区和存储数据区,其中,存储程序区可存储用于实现操作系统的指令、用于实现至少一个功能的指令(比如触控功能、声音播放功能、图像播放功能等)、用于实现上述各个方法实施例的指令等。存储数据区还可以存储电子设备在使用中所创建的数据等。
130.在本技术实施例中,处理器601还具有以下功能:
131.通过hook层,捕获应用层向驱动层下发的渲染指令;
132.处理渲染指令,并存储处理后的渲染指令至指定存储空间。
133.在本技术实施例中,处理器601还具有以下功能:
134.通过hook层从第一线程中捕获渲染指令,第一线程为应用层向驱动层下发渲染指令的线程,第一线程是由应用层、hook层及驱动层执行的;
135.通过第二线程,从第一线程中获取渲染指令,并处理渲染指令,以及存储处理后的渲染指令至指定存储空间。
136.在本技术实施例中,处理器601还具有以下功能:
137.若渲染指令的名称为目标名称,则从渲染指令中解析出图像数据参数和非图像数据参数,图像数据参数为指向内存中图像数据的指针,图像数据包括以下任一种:纹理数据、着色数据及几何数据;
138.根据图像数据参数,从内存中拷贝图像数据;
139.将渲染指令的名称及非图像数据参数存储至第一存储空间,以及,将图像数据存储至第二存储空间,指定存储空间包括第一存储空间和第二存储空间。
140.在本技术实施例中,处理器601还具有以下功能:
141.分别对渲染指令的名称、非图像数据参数及图像数据进行编码,得到编码后的渲染指令的名称、编码后的非图像数据参数以及编码后的图像数据;其中,编码后的图像数据包括数据标识;
142.将编码后的渲染指令的名称、编码后的非图像数据参数以及数据标识存储至第一存储空间,以及将编码后的图像数据存储至第二存储空间。
143.在本技术实施例中,处理器601还具有以下功能:
144.从电子设备预先存储的多种编码规则中,确定与远程服务器匹配的编码规则作为第一编码规则,远程服务器用于根据存储在指定存储空间的渲染指令,回放对应的渲染帧;
145.基于第一编码规则,分别对渲染指令的名称、非图像数据参数及图像数据进行编码,得到编码后的渲染指令的名称、编码后的非图像数据参数以及编码后的图像数据。
146.在本技术实施例中,处理器601还具有以下功能:
147.通过hook层,响应于用于抓取渲染指令的数据抓取指令,捕获应用层向驱动层下发的渲染指令,数据抓取指令用于指示对第一指定时长内的渲染帧对应的渲染指令进行抓取。
148.在本技术实施例中,数据抓取指令是远程服务器发送的,或者,根据电子设备播放的视频流的画面质量生成的。
149.在本技术实施例中,处理器601还具有以下功能:
150.若目标渲染帧对应的渲染指令存储完成,则向远程服务器发送与目标渲染帧对应的渲染指令,以使远程服务器根据目标渲染帧对应的渲染指令,对目标渲染帧进行渲染回放。
151.申请实施例公开一种计算机可读存储介质,其存储计算机程序,其中,计算机程序被处理器执行时,使得处理器实现上述实施例中电子设备执行的部分或全部步骤。
152.本技术实施例公开了一种计算机程序产品,当计算机程序产品在计算机上运行时,使得计算机执行上述实施例中电子设备执行的部分或全部步骤。
153.本技术实施例公开了一种应用发布平台,应用发布平台用于发布计算机程序产品,其中,当计算机程序产品在计算机上运行时,使得计算机执行上述实施例中电子设备执行的部分或全部步骤。
154.在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。
155.计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行计算机程序指令时,全部或部分地产生按照本技术实施例的流程或功能。计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一计算机可读存储介质传输,例如,计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(dsl))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。计算机可读存储介质可以是计算机能够存储的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。可用介质可以是磁性介质,(例如,软盘、磁盘、磁带)、光介质(例如,dvd)、或者半导体介质(例如固态磁盘solid state disk(ssd))等。
156.所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
157.在本技术所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
158.作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
159.另外,在本技术各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
160.集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本技术各个实施例方法的全部或部分步骤。而前述的存储介质包括:u盘、移动磁盘、只读存储器(read-only memory,rom)、随机存取存储器(random access memory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。
161.以上,以上实施例仅用以说明本技术的技术方案,而非对其限制;尽管参照前述实施例对本技术进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本技术各实施例技术方案的精神和范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1