图像帧流的显示方法、电子设备和存储介质转让专利

申请号 : CN202110763286.9

文献号 : CN114470750B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 王昱晨尹朝阳柏信付晓炜

申请人 : 荣耀终端有限公司

摘要 :

本申请提供了一种图像帧流的显示方法和电子设备以及存储介质,所述方法包括:基于第一预设比例,显示第一图像帧流中的一个或多个图像帧和一个或多个预测帧,其中所述预测帧基于至少三个所述图像帧预测获得,所述第一预设比例指示在第一图像帧流中所述图像帧和所述预测帧的比例;获获取所述电子设备在显示所述一个或多个图像帧时的触控位置,所述触控位置指示用户点击每个所述图像帧时,与所述目标控件距离最近的用户触控位置;基于所述目标控件和所述触控位置的预设关系,将所述第一预设比例调节为第二预设比例;基于所述第二预设比例,显示第二图像帧流中的一个或多个图像帧和一个或多个预测帧。

权利要求 :

1.一种图像帧流的显示方法,其特征在于,应用于电子设备,所述显示方法应用于游戏图像帧的显示,所述方法包括:基于第一预设比例,显示第一图像帧流中的一个或多个图像帧和一个或多个预测帧,其中所述预测帧基于至少三个所述图像帧预测获得,所述第一预设比例指示在第一图像帧流中所述图像帧和所述预测帧的比例;

在所述第一图像帧流中,每间隔a个所述图像帧具有b个所述预测帧,a为大于或等于1的正整数,b为大于或等于1的正整数;

获取所述一个或多个图像帧中的目标控件,所述目标控件用于控制所述图像帧中的一个或多个对象;

获取所述电子设备在显示所述一个或多个图像帧时的触控位置,所述触控位置指示用户点击每个所述图像帧时,与所述目标控件距离最近的用户触控位置;

基于所述目标控件和所述触控位置的预设关系,将所述第一预设比例调节为第二预设比例;

基于所述第二预设比例,显示第二图像帧流中的一个或多个图像帧和一个或多个预测帧;

在所述第二图像帧流中,每间隔c个所述图像帧具有d个所述预测帧,c为大于或等于1的正整数,d为大于或等于1的正整数;

在所述第一图像帧流和所述第二图像帧流中,每个所述预测帧基于前帧的预测得到。

2.根据权利要求1所述的显示方法,其特征在于,所述第一预设比例为第一正整数,所述基于第一预设比例,显示第一图像帧流中的一个或多个图像帧和一个或多个预测帧,包括:在所述第一图像帧流中,每显示所述第一正整数个所述图像帧,显示一个预测帧。

3.根据权利要求1或2所述的显示方法,其特征在于,第一图像帧流中的图像帧至少包括第一图像帧、第二图像帧以及第三图像帧,所述预测帧包括第二预测帧,所述显示第一图像帧流中的一个或多个图像帧和一个或多个预测帧,包括:获取第一图像帧的绘制指令流;

基于所述第一图像帧的绘制指令流中的第一类绘制指令,获取所述第一图像帧的一个或多个第一对象,所述第一类绘制指令为场景绘制指令;

基于所述绘制指令流中的第二类绘制指令,获取所述第一图像帧中的一个或多个第二对象,所述第二类绘制指令为控件绘制指令;

获取第二图像帧中的一个或多个第三对象;

计算所述一个或多个第一对象,和所述一个或多个第三对象之间的第一运动向量,所述一个或多个第三对象与所述一个或多个第一对象相匹配,所述第二图像帧为所述第一图像帧之前的一帧图像帧;

获取第二运动向量,所述第二运动向量为所述一个或多个第三对象,和第三图像帧中的一个或多个第四对象之间的运动向量,所述一个或多个第三对象与所述一个或多个第四对象相匹配,所述第三图像帧为所述第二图像帧之前的一帧图像帧;

基于所述第一运动向量和所述第二运动向量,计算第三运动向量;

基于所述第一运动向量、所述第三运动向量和所述一个或多个第一对象,获得第一预测帧;

将所述第一预测帧与所述一个或多个第二对象合并,以获得第二预测帧;

显示所述第一图像帧后,显示所述第二预测帧。

4.根据权利要求3所述的显示方法,其特征在于,所述获取所述一个或多个图像帧中的目标控件,包括:基于预先存储的所述目标控件的标识,从所述第二对象中获取所述第一图像帧中的目标控件;或者,对所述一个或多个第二对象进行图像识别,以从所述第二对象中确定所述第一图像帧中的目标控件。

5.根据权利要求1、2、4任一项所述的显示方法,其特征在于,所述基于所述目标控件和所述触控位置的预设关系,将所述第一预设比例调节为第二预设比例,包括:基于所述目标控件的坐标和所述触控位置的坐标,确定所述目标控件和所述触控位置的相对距离,基于所述相对距离,将所述第一预设比例调节为第二预设比例。

6.根据权利要求1、2、4任一项所述的显示方法,其特征在于,所述基于所述目标控件和所述触控位置的预设关系,将所述第一预设比例调节为第二预设比例,包括:基于所述目标控件和所述触控位置,确定用户在预设时间段内点击所述触控位置的频率;

基于所述频率,将所述第一预设比例调节为第二预设比例。

7.根据权利要求1、2、4任一项所述的显示方法,其特征在于,所述目标控件包括第一目标控件和第二目标控件,所述触控位置包括第一触控位置和第二触控位置,所述第一触控位置与所述第一目标控件相关联,所述第二触控位置与所述第二目标控件相关联,所述基于所述目标控件和所述触控位置的预设关系,将所述第一预设比例调节为第二预设比例,包括:获取在一个或多个第一图像帧中用户点击第一触控位置和第二触控位置的先后关系;

基于所述先后关系,确定用户对所述第一目标控件和所述第二目标控件的操作逻辑;

基于所述操作逻辑,将所述第一预设比例调节为第二预设比例。

8.一种图像帧流的显示方法,其特征在于,所述显示方法应用于游戏图像帧的显示,所述方法包括:获取第一图像帧流中的第一预测帧,所述第一预测帧为所述第一图像帧流中的最后一帧图像,所述第一图像帧流中的图像帧与预测帧的比例为第一预设比例,所述第一预测帧至少基于所述第一图像帧流中的三个所述图像帧预测获得;

在所述第一图像帧流中,每间隔a个所述图像帧具有b个所述预测帧,a为大于或等于1的正整数,b为大于或等于1的正整数;

获取所述第一预测帧的一个或多个第一参数,其中所述第一参数用于指示所述图像帧的图像质量;

基于所述一个或多个第一参数,确定第二预设比例;

基于所述第二预设比例,显示第二图像帧流中的一个或多个图像帧和一个或多个预测帧;

在所述第二图像帧流中,每间隔c个所述图像帧具有d个所述预测帧,c为大于或等于1的正整数,d为大于或等于1的正整数;

在所述第一图像帧流和所述第二图像帧流中,每个所述预测帧基于前帧的预测得到。

9.根据权利要求8所述的显示方法,其特征在于,所述获取所述第一预测帧的一个或多个第一参数,包括:获取与所述第一预测帧中空洞相关的一个或多个第一参数,所述一个或多个第一参数包括所述空洞的周边顶点个数、所述空洞像素点总个数以及所述空洞中最大空洞像素点个数中一个或多个。

10.根据权利要求8或9所述的显示方法,其特征在于,所述基于所述一个或多个第一参数,确定第二预设比例,包括:判断所述一个或多个第一参数的数值范围是否在一个或多个预设范围;

若所述一个或多个第一参数的数值范围在所述一个或多个预设范围,获取在所述预设范围内每个所述第一参数对应的预设比例;

确定所述一个或多个第一参数对应的最大预设比例为第二预设比例。

11.一种电子设备,其特征在于,包括处理器和存储设备,所述存储设备存有程序指令,所述程序指令由所述处理器运行时,使得所述电子设备执行如权利要求1‑7任一项所述的显示方法。

12.一种计算机可读存储介质,其特征在于,包括计算机指令,当所述计算机指令在所述电子设备上运行时,使得所述电子设备执行如权利要求1‑7任一项所述的显示方法。

13.一种电子设备,其特征在于,包括处理器和存储设备,所述存储设备存有程序指令,所述程序指令由所述处理器运行时,使得所述电子设备执行如权利要求8‑10任一项所述的显示方法。

14.一种计算机可读存储介质,其特征在于,包括计算机指令,当所述计算机指令在电子设备上运行时,使得所述电子设备执行如权利要求8‑10任一项所述的显示方法。

说明书 :

图像帧流的显示方法、电子设备和存储介质

技术领域

[0001] 本申请涉及终端技术领域,尤其涉及一种图像帧流的显示方法、电子设备和存储介质。

背景技术

[0002] 随着游戏画质越来越好、特效越来越精致,游戏运行时对终端设备的性能要求也越来越高。终端设备运行游戏时,特别是负载重的游戏(如枪战游戏),需要占用较大资源,这使有些游戏在手机等终端上不能流畅运行,会出现诸如掉帧、耗电快以及手机发热等问题。

发明内容

[0003] 为了解决上述技术问题,第一方面,本申请提供了一种图像帧流的显示方法,应用于电子设备,方法包括:
[0004] 基于第一预设比例,显示第一图像帧流中的一个或多个图像帧和一个或多个预测帧,其中预测帧基于至少三个图像帧预测获得,第一预设比例指示在第一图像帧流中图像帧和预测帧的比例;示例性地,第一图像帧流可以为图9C中真实帧N‑4到预测帧N+1,预测帧N+1至少基于三个真实帧预测获得。
[0005] 获取一个或多个图像帧中的目标控件,目标控件用于控制图像帧中的一个或多个对象;该目标控件可以为本申请实施例中的第一目标UI控件。
[0006] 获取电子设备在显示一个或多个图像帧时的触控位置,触控位置指示用户点击每个图像帧时,与目标控件距离最近的用户触控位置;该触控位置可以为实施例中的第一触控位置
[0007] 基于目标控件和触控位置的预设关系,将第一预设比例调节为第二预设比例;
[0008] 基于第二预设比例,显示第二图像帧流中的一个或多个图像帧和一个或多个预测帧。示例性地,该第二图像帧流可以为图9C中的真实帧N+2到预测帧N+4。通过本申请所示方案,可以基于用户的操作,动态调整预测帧的比例,减小CPU执行绘制指令的功耗,保证用户的体验。
[0009] 在本申请的一个实施例中,第一预设比例为第一正整数,基于第一预设比例,显示第一图像帧流中的一个或多个图像帧和一个或多个预测帧,包括:
[0010] 在第一图像帧流中,每显示第一正整数个图像帧,显示一个预测帧。
[0011] 在本申请的一个实施例中,第一图像帧流中的图像帧至少包括第一图像帧、第二图像帧以及第三图像帧,预测帧包括第二预测帧,显示第一图像帧流中的一个或多个图像帧和一个或多个预测帧,包括:
[0012] 获取第一图像帧的绘制指令流;示例性地,该第一图像帧可以为附图2和5所示的真实帧N。
[0013] 基于第一图像帧的绘制指令流中的第一类绘制指令,获取第一图像帧的一个或多个第一对象,第一类绘制指令为场景绘制指令;该第一对象可以为真实帧N中所示的对象502、对象504、对象506以及对象508等。
[0014] 基于第一图像帧的绘制指令流中的第二类绘制指令,获取第一图像帧中的一个或多个第二对象,第二类绘制指令为控件绘制指令。控件绘制指令也被称为UI绘制指令,第二对象可以为控件、血量条等,第二对象在图像帧中的位置一般固定;
[0015] 获取第二图像帧中的一个或多个第三对象;示例性地,第二图像帧可以为附图2和5所示的真实帧N‑2,一个或多个第三对象可以为真实帧N‑2中的对象502、对象504、对象506以及对象508;
[0016] 计算一个或多个第一对象,和一个或多个第三对象之间的第一运动向量,一个或多个第三对象与一个或多个第一对象相匹配,第二图像帧为第一图像帧之前的一帧图像帧;示例性地,真实帧N‑2中的对象502与真实帧N中所示的对象502相匹配,真实帧N‑2中的对象504与真实帧N中所示的对象504相匹配,第一运动向量可以包括真实帧N‑2中的对象502与真实帧N中的对象502之间的运动向量,以及真实帧N‑2中的对象504与真实帧N中的对象504之间的运动向量;
[0017] 获取第二运动向量,第二运动向量为一个或多个第三对象,和第三图像帧中的一个或多个第四对象之间的运动向量,一个或多个第三对象与一个或多个第四对象相匹配,第三图像帧为第二图像帧之前的一帧图像帧;示例性地第三图像帧可以为附图2和5所示的真实帧N‑4,一个或多个第四对象可以为真实帧N‑4中的对象502、对象504、对象506以及对象508。第二运动向量可以包括真实帧N‑4中的对象502与真实帧N‑2中的对象502之间的运动向量,以及真实帧N‑4中的对象504与真实帧N‑2中的对象504之间的运动向量。
[0018] 基于第一运动向量和第二运动向量,计算第三运动向量,示例性地,第三运动向量可以为第一运动向量与第二运动向量的差值的一半。
[0019] 基于第一运动向量、第三运动向量和一个或多个第一对象,获得第一预测图像帧,第一预测图像帧为附图2所示的真实帧N+1对应的预测场景图像;
[0020] 将第一预测图像帧与一个或多个第二对象合并,以获得第二预测图像帧,二预测图像帧可以指示预测帧N+1。具体地,第二对象的位置一般在图像帧中的位置固定,所以可以直接将第二对象添加到第一预测图像帧的固定位置,从而获得预测帧N+1。
[0021] 显示第一图像帧(真实帧N)后,显示第二预测帧(预测帧N+1)。
[0022] 在本身的一个实施例中,获取第一图像帧的绘制指令流之前,包括:替换指针列表中的第一指针为第二指针,第一指针指向第一函数,第二指针指向第二函数,其中第一函数用于绘制第一图像帧,第二函数用于对第一图像帧的绘制指令流的绘制指令进行识别。示例性地,第一指针可以为图形库中原始函数指针P1(其中指针P1指向图像库中原始函数对应的实现函数)第二指针可以为拦截函数指针P2(其中指针P2可指向识别模块中原始函数对应的实现函数)。
[0023] 在本申请的一个实施例中,基于绘制指令流中的第一类绘制指令,获取第一图像帧中的一个或多个第一对象之前,还包括:基于第二函数,对第一图像帧的绘制指令流的绘制指令进行识别,以确定第一图像帧的绘制指令流中的第一类绘制指令、第二类绘制指令和第三类绘制指令。
[0024] 在本申请的一个实施例中,获取第二图像帧中的一个或多个第三对象之前,还包括:获取第二图像帧的绘制指令流;基于第二图像帧的绘制指令流中的第一类绘制指令,获取第二图像帧中的一个或多个第三对象;存储一个或多个第三对象。
[0025] 在本申请的一个实施例中,获取第二图像帧中的一个或多个第三对象,包括:基于第一图像帧的绘制指令流的绘制指令中的第三类绘制指令,获取一个或多个第三对象,其中,第三类绘制指令为图像送显指令。示例性地,可在电子设备识别到真实帧N的的绘制指令流的中的图像送显指令时,获取真实帧N‑2中的一个或多个第三对象。
[0026] 在本申请的一个实施例中,一个或多个第一对象包括第五对象,一个或多个第三对象包括第六对象,一个或多个第四对象包括第七对象,一个或多个第一对象与一个或多个第三对象相匹配为第五对象和六对象的标识相同,一个或多个第三对象与一个或多个第四对象相匹配为第五对象和第七对象的标识相同。示例性地,第五对象可以为真实帧N中的对象502,第六对象可以为真实帧N‑2中的对象502,第七对象可以为真实帧N‑4中的对象502,其中一个或多个第一对象与一个或多个第三对象相匹配为真实帧N中的对象502和真实帧N‑2中的对象502的标识相同,一个或多个第三对象与一个或多个第四对象相匹配为真实帧N‑2中的对象502和真实帧N‑4中的对象502的标识相同。
[0027] 在本申请的一个实施例中,第一图像帧和第二图像帧之间间隔P帧图像帧,第二图像帧和第三图像帧之间间隔Q帧图像帧,P、Q为正整数,其中P、Q可以相同,也可以不同。
[0028] 在本申请的一个实施例中,一个或多个第一对象包括第五对象和第八对象,一个或多个第三对象包括第六对象和第九对象,第五对象和第六对象的标识相同,第八对象和第九对象的标识相同,示例性地,第八对象可以为真实帧N中的对象504,第九对象可以为真实帧N‑2中的对象504,获取第一图像帧中的一个或多个第一对象之后,还包括:
[0029] 基于第五对象的标识,获取第六对象的顶点信息。示例性地通过真实帧N中的对象502的标识,获取真实帧N‑2中的对象502的顶点信息。示例性地,可通过真实帧N中的对象
502的标识,即人的标识,获取真实帧N‑2中对应的人的顶点信息;
[0030] 基于第五对象的顶点信息和第六对象的顶点信息不同,确定第五对象为动态对象,通过比较真实帧N中的对象502的顶点信息和真实帧N‑2中的对象502的顶点信息,如果顶点信息不同,则真实帧N中的对象502为动态对象;
[0031] 基于第八对象的标识,获取第九对象的顶点信息;上文已经示出,第八对象可以为真实帧N中对象504,第九对象可以为真实帧N‑2中对象504,例如,对象504具体为树。通过真实帧N中对象504,即树的标识,可以获取真实帧N‑2中对象504顶点信息。示例性地,可以从缓存中获取真实帧N‑2中对象504顶点信息。
[0032] 基于第八对象的顶点信息和第九对象的顶点信息相同,确定第八对象为静态对象,示例性地,基于真实帧N中对象504和真实帧N‑2中对象504顶点信息一致,则真实帧N中对象504为静态对象;
[0033] 记录第五对象为动态对象;记录第八对象为静态对象。
[0034] 在本申请的一个实施例中,计算一个或多个第一对象,和一个或多个第三对象之间的第一运动向量,包括:
[0035] 基于第五对象与第六对象的坐标,计算第一运动向量的第一运动分量;示例性地,可以基于真实帧N中对象502的坐标,真实帧N‑2中的对象502的坐标,计算真实帧N中对象502和真实帧N‑2中的对象502的第一运动分量;
[0036] 基于第八对象和第九对象的坐标,计算第一运动向量的第二运动分量;示例性地,可以基于真实帧N中对象504的坐标,真实帧N‑2中的对象504的坐标,计算真实帧N中对象504和真实帧N‑2中的对象504的第二运动分量。
[0037] 在本申请的一个实施例中,获取第二运动向量之前,包括
[0038] 获取第三图像帧的绘制指令流;基于第三图像帧的绘制指令流中的第一类绘制指令,获取第三图像帧中的一个或多个第四对象;示例性地,基于真实帧N‑4的绘制指令流中的场景绘制指令,可以获取真实帧N‑4中的对象502、对象504、508等。
[0039] 存储一个或多个第四对象;
[0040] 获取第二图像帧中的一个或多个第三对象之后,还包括:计算一个或多个第三对象,和一个或多个第四对象之间的第二运动向量;示例性地,上文已经示出第二运动向量可以包括真实帧N‑4中的对象502与真实帧N‑2中的对象502之间的运动向量,以及真实帧N‑4中的对象508与真实帧N‑2中的对象508之间的运动向量,以及真实帧N‑4中的对象504与真实帧N‑2中的对象504之间的运动向量;
[0041] 存储第二运动向量。
[0042] 在本申请的一个实施例中,一个或多个第四对象包括第七对象和第十对象,第六对象和第七对象的标识相同,第九对象和第十对象的标识相同,示例性地,上文已经示出,第七对象可以为真实帧N‑4中的对象502,第六对象可以为真实帧N‑2中的对象502,第九对象可以为真实帧N‑2中对象504,第十对象可以为真实帧N‑4中的对象504;
[0043] 计算一个或多个第三对象,和一个或多个第四对象之间的第二运动向量,包括:
[0044] 基于第六对象与第七对象的坐标,计算第二运动向量的第一运动分量;示例性地,可以基于真实帧N‑2中对象502的坐标,真实帧N‑4中的对象502的坐标,可以计算真实帧N‑4中的对象502与真实帧N‑2中的对象502之间的第一运动分量;
[0045] 基于第九对象和第十对象的坐标,计算第二运动向量的第二运动分量;示例性地,可以基于真实帧N‑2中对象504的坐标,真实帧N‑4中的对象504的坐标,可以计算真实帧N‑4中的对象504与真实帧N‑2中的对象504之间的第二运动分量。
[0046] 在本申请的一个实施例中,基于第一运动向量和第二运动向量,计算第三运动向量,包括:
[0047] 将第二运动向量和第一运动向量的差值的一半,作为第三运动向量。示例性地,第三运动向量可以包括:真实帧N‑4中的对象502与真实帧N‑2中的对象502之间的第一运动分量与真实帧N‑2中的对象502与真实帧N中的对象502之间的第一运动分量的差值的一半。第三运动向量还可以包括:真实帧N‑4中的对象504与真实帧N‑2中的对象504之间的第二运动分量与真实帧N‑2中的对象504与真实帧N中的对象504之间的第二运动分量的差值的一半。
[0048] 在本申请的一个实施例中,基于第一运动向量、第三运动向量和一个或多个第一对象,获得第一预测图像帧,包括:
[0049] 基于第一运动向量的第一运动分量的一半、第三运动向量的第一运动分量和第五对象的坐标之和,得到第五对象的预测坐标基于第一运动向量的第二运动分量的一半、第三运动向量的第二运动分量和第八对象的坐标之和,得到第八对象的预测坐标;
[0050] 基于第五对象的预测坐标和第八对象的预测坐标,得到第一预测图像帧。
[0051] 在本申请的一个实施例中,还包括:
[0052] 丢弃第一图像帧第二图像帧之间的图像帧的绘制指令流;
[0053] 丢弃第二图像帧第三图像帧之间的图像帧的绘制指令流。
[0054] 在本申请的一个实施例中,还包括:
[0055] 对第一图像帧的绘制指令流进行绘制。
[0056] 在本申请的一个实施例中,还包括:
[0057] 在第一图像帧送显完成后,将第二预测图像帧送显。
[0058] 在本申请的一个实施例中,获取一个或多个图像帧中的目标控件,包括:
[0059] 基于预先存储的目标控件的标识,从第二对象中获取第一图像帧中的目标控件;或者,
[0060] 对一个或多个第二对象进行图像识别,以从第二对象中确定第一图像帧中的目标控件。
[0061] 在本申请的一个实施例中,基于目标控件和触控位置的预设关系,将第一预设比例调节为第二预设比例,包括:
[0062] 基于目标控件的坐标和触控位置的坐标,确定目标控件和触控位置的相对距离,基于相对距离,将第一预设比例调节为第二预设比例。
[0063] 在本申请的一个实施例中,基于目标控件和触控位置的预设关系,将第一预设比例调节为第二预设比例,包括:
[0064] 基于目标控件和触控位置,确定用户在预设时间段内点击触控位置的频率;
[0065] 基于频率,将第一预设比例调节为第二预设比例。
[0066] 在本申请的一个实施例中,目标控件包括第一目标控件和第二目标控件,触控位置包括第一触控位置和第二触控位置,第一触控位置与第一目标控件相关联,第二触控位置与第二目标控件相关联,基于目标控件和触控位置的预设关系,将第一预设比例调节为第二预设比例,包括:
[0067] 获取在一个或多个第一图像帧中用户点击第一触控位置和第二触控位置的先后关系;
[0068] 基于先后关系,确定用户对第一目标控件和第二目标控件的操作逻辑;
[0069] 基于操作逻辑,将第一预设比例调节为第二预设比例。
[0070] 第二方面,本申请提供了一种图像帧流的显示方法,方法包括:
[0071] 获取第一图像帧流中的第一预测帧,第一预测帧为第一图像帧流中的最后一帧图像,第一图像帧流中的图像帧与预测帧的比例为第一预设比例,第一预测帧至少基于第一图像帧流中的三个图像帧预测获得;
[0072] 获取第一预测帧的一个或多个第一参数,其中第一参数用于指示图像帧的图像质量;
[0073] 基于一个或多个第一参数,确定第二预设比例;
[0074] 基于第二预设比例,显示第二图像帧流中的一个或多个图像帧和一个或多个预测帧。
[0075] 在本申请的一个实施例中,获取第一预测帧的一个或多个第一参数,包括:
[0076] 获取与第一预测帧中空洞相关的一个或多个第一参数,一个或多个第一参数包括空洞的周边顶点个数、空洞像素点总个数以及空洞中最大空洞像素点个数中一个或多个。
[0077] 在本申请的一个实施例中,基于一个或多个第一参数,确定第二预设比例,包括:
[0078] 判断一个或多个第一参数的数值范围是否在一个或多个预设范围;
[0079] 若一个或多个第一参数的数值范围在一个或多个预设范围,获取在预设范围内每个第一参数对应的预设比例;
[0080] 确定一个或多个第一参数对应的最大预设比例为第二预设比例。
[0081] 第三方面,本申请提供了一种电子设备,包括处理器和存储设备,存储设备存有程序指令,程序指令由处理器运行时,使得电子设备执行第一方面中的显示方法。
[0082] 第四方面,本申请提供了一种计算机可读存储介质,包括计算机指令,当计算机指令在电子设备上运行时,使得电子设备执行第一方面中的显示方法。
[0083] 第五方面,本申请提供了一种电子设备,包括处理器和存储设备,存储设备存有程序指令,程序指令由处理器运行时,使得电子设备执行第二方面所示的显示方法。
[0084] 第六方面,本申请提供了一种计算机可读存储介质,包括计算机指令,当计算机指令在电子设备上运行时,使得电子设备执行第二方面所示的显示方法。

附图说明

[0085] 图1为本发明实施例提供的电子设备100的结构示意图;
[0086] 图2为本发明实施例中图像帧预测方法的原理图;
[0087] 图3为本发明实施例中执行本申请图像帧预测方法的硬件层和软件层的系统架构;
[0088] 图4为本发明实施例中丢弃绘制指令流中的部分绘制指令的示意图;
[0089] 图5A‑图5D为本发明实施例中获取相邻帧之间的运动向量图的示意图;
[0090] 图6为本发明实施例中缓存中图像帧和运动向量图的存储变化的示意图;
[0091] 图7为本发明实施例中电子设备100的硬件层和软件层;
[0092] 图8为本申请一个实施例提供的电子设备100的图形界面;
[0093] 图9A为本申请一个实施例拦截模块基于预设比例拦截真实帧的示例图;
[0094] 图9B为本申请一个实施例拦截模块基于预设比例拦截真实帧的示例图;
[0095] 图9C为本申请一个实施例拦截模块基于预设比例拦截真实帧的示例图;
[0096] 图10为本申请一个实施例中同一对象在真实帧N‑4到预测帧N+5的显示位置变化的示例图;
[0097] 图11为本发明另一个实施例中电子设备100的硬件层和软件层的系统架构;
[0098] 图12为本发明另一个实施例中图像中的空洞1202的示意图。

具体实施方式

[0099] 下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。其中,在本申请实施例的描述中,除非另有说明,“/”表示或的意思,例如,A/B可以表示A或B;本文中的“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。
[0100] 以下,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。在本申请实施例的描述中,除非另有说明,“多个”的含义是两个或两个以上。
[0101] 参见图1,具体地示出了电子设备100的结构示意图,本申请提供的方法可应用于电子设备100。
[0102] 电子设备100可以包括处理器110,外部存储器接口120,内部存储器121,通用串行总线(universal serial bus,USB)接口130,充电管理模块140,电源管理模块141,电池142,天线1,天线2,移动通信模块150,无线通信模块160,音频模块170,扬声器170A,受话器
170B,麦克风170C,耳机接口170D,传感器模块180,按键190,马达191,指示器192,摄像头
193,显示屏194,以及用户标识模块(subscriber identification module,SIM)卡接口195等。其中传感器模块180可以包括压力传感器180A,陀螺仪传感器180B,气压传感器180C,磁传感器180D,加速度传感器180E,距离传感器180F,接近光传感器180G,指纹传感器180H,温度传感器180J,触摸传感器180K,环境光传感器180L,骨传导传感器180M等。
[0103] 可以理解的是,本发明实施例示意的结构并不构成对电子设备100的具体限定。在本申请另一些实施例中,电子设备100可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。
[0104] 处理器110可以包括一个或多个处理单元,例如:处理器110可以包括应用处理器(application processor,AP),调制解调处理器,图形处理器(graphics processing unit,GPU),图像信号处理器(image signal processor,ISP),控制器,视频编解码器,数字信号处理器(digital signal processor,DSP),基带处理器,和/或神经网络处理器(neural‑network processing unit,NPU)等。其中,不同的处理单元可以是独立的器件,也可以集成在一个或多个处理器中。
[0105] 控制器可以根据指令操作码和时序信号,产生操作控制信号,完成取指令和执行指令的控制。
[0106] 处理器110中还可以设置存储器,用于存储指令和数据。在一些实施例中,处理器110中的存储器为高速缓冲存储器。该存储器可以保存处理器110刚用过或循环使用的指令或数据。如果处理器110需要再次使用该指令或数据,可从所述存储器中直接调用。避免了重复存取,减少了处理器110的等待时间,因而提高了系统的效率。
[0107] 在一些实施例中,处理器110可以包括一个或多个接口。接口可以包括集成电路(inter‑integrated circuit,I2C)接口,集成电路内置音频(inter‑integrated circuit sound,I2S)接口,脉冲编码调制(pulse code modulation,PCM)接口,通用异步收发传输器(universal asynchronous receiver/transmitter,UART)接口,移动产业处理器接口(mobile industry processor interface,MIPI),通用输入输出(general‑purpose input/output,GPIO)接口,用户标识模块(subscriber identity module,SIM)接口,和/或通用串行总线(universal serial bus,USB)接口等。
[0108] I2C接口是一种双向同步串行总线,包括一根串行数据线(serial data line,SDA)和一根串行时钟线(derail clock line,SCL)。在一些实施例中,处理器110可以包含多组I2C总线。处理器110可以通过不同的I2C总线接口分别耦合触摸传感器180K,充电器,闪光灯,摄像头193等。例如:处理器110可以通过I2C接口耦合触摸传感器180K,使处理器110与触摸传感器180K通过I2C总线接口通信,实现电子设备100的触摸功能。
[0109] I2S接口可以用于音频通信。在一些实施例中,处理器110可以包含多组I2S总线。处理器110可以通过I2S总线与音频模块170耦合,实现处理器110与音频模块170之间的通信。在一些实施例中,音频模块170可以通过I2S接口向无线通信模块160传递音频信号,实现通过蓝牙耳机接听电话的功能。
[0110] PCM接口也可以用于音频通信,将模拟信号抽样,量化和编码。在一些实施例中,音频模块170与无线通信模块160可以通过PCM总线接口耦合。在一些实施例中,音频模块170也可以通过PCM接口向无线通信模块160传递音频信号,实现通过蓝牙耳机接听电话的功能。所述I2S接口和所述PCM接口都可以用于音频通信。
[0111] UART接口是一种通用串行数据总线,用于异步通信。该总线可以为双向通信总线。它将要传输的数据在串行通信与并行通信之间转换。在一些实施例中,UART接口通常被用于连接处理器110与无线通信模块160。例如:处理器110通过UART接口与无线通信模块160中的蓝牙模块通信,实现蓝牙功能。在一些实施例中,音频模块170可以通过UART接口向无线通信模块160传递音频信号,实现通过蓝牙耳机播放音乐的功能。
[0112] MIPI接口可以被用于连接处理器110与显示屏194,摄像头193等外围器件。MIPI接口包括摄像头串行接口(camera serial interface,CSI),显示屏串行接口(display serial interface,DSI)等。在一些实施例中,处理器110和摄像头193通过CSI接口通信,实现电子设备100的拍摄功能。处理器110和显示屏194通过DSI接口通信,实现电子设备100的显示功能。
[0113] GPIO接口可以通过软件配置。GPIO接口可以被配置为控制信号,也可被配置为数据信号。在一些实施例中,GPIO接口可以用于连接处理器110与摄像头193,显示屏194,无线通信模块160,音频模块170,传感器模块180等。GPIO接口还可以被配置为I2C接口,I2S接口,UART接口,MIPI接口等。
[0114] USB接口130是符合USB标准规范的接口,具体可以是Mini USB接口,Micro USB接口,USB Type C接口等。USB接口130可以用于连接充电器为电子设备100充电,也可以用于电子设备100与外围设备之间传输数据。也可以用于连接耳机,通过耳机播放音频。该接口还可以用于连接其他电子设备,例如AR设备等。
[0115] 可以理解的是,本发明实施例示意的各模块间的接口连接关系,只是示意性说明,并不构成对电子设备100的结构限定。在本申请另一些实施例中,电子设备100也可以采用上述实施例中不同的接口连接方式,或多种接口连接方式的组合。
[0116] 充电管理模块140用于从充电器接收充电输入。其中,充电器可以是无线充电器,也可以是有线充电器。在一些有线充电的实施例中,充电管理模块140可以通过USB接口130接收有线充电器的充电输入。在一些无线充电的实施例中,充电管理模块140可以通过电子设备100的无线充电线圈接收无线充电输入。充电管理模块140为电池142充电的同时,还可以通过电源管理模块141为电子设备供电。
[0117] 电源管理模块141用于连接电池142,充电管理模块140与处理器110。电源管理模块141接收电池142和/或充电管理模块140的输入,为处理器110,内部存储器121,显示屏194,摄像头193,和无线通信模块160等供电。电源管理模块141还可以用于监测电池容量,电池循环次数,电池健康状态(漏电,阻抗)等参数。在其他一些实施例中,电源管理模块141也可以设置于处理器110中。在另一些实施例中,电源管理模块141和充电管理模块140也可以设置于同一个器件中。
[0118] 电子设备100的无线通信功能可以通过天线1,天线2,移动通信模块150,无线通信模块160,调制解调处理器以及基带处理器等实现。
[0119] 天线1和天线2用于发射和接收电磁波信号。电子设备100中的每个天线可用于覆盖单个或多个通信频带。不同的天线还可以复用,以提高天线的利用率。例如:可以将天线1复用为无线局域网的分集天线。在另外一些实施例中,天线可以和调谐开关结合使用。
[0120] 移动通信模块150可以提供应用在电子设备100上的包括2G/3G/4G/5G等无线通信的解决方案。移动通信模块150可以包括至少一个滤波器,开关,功率放大器,低噪声放大器(low noise amplifier,LNA)等。移动通信模块150可以由天线1接收电磁波,并对接收的电磁波进行滤波,放大等处理,传送至调制解调处理器进行解调。移动通信模块150还可以对经调制解调处理器调制后的信号放大,经天线1转为电磁波辐射出去。在一些实施例中,移动通信模块150的至少部分功能模块可以被设置于处理器110中。在一些实施例中,移动通信模块150的至少部分功能模块可以与处理器110的至少部分模块被设置在同一个器件中。
[0121] 调制解调处理器可以包括调制器和解调器。其中,调制器用于将待发送的低频基带信号调制成中高频信号。解调器用于将接收的电磁波信号解调为低频基带信号。随后解调器将解调得到的低频基带信号传送至基带处理器处理。低频基带信号经基带处理器处理后,被传递给应用处理器。应用处理器通过音频设备(不限于扬声器170A,受话器170B等)输出声音信号,或通过显示屏194显示图像或视频。在一些实施例中,调制解调处理器可以是独立的器件。在另一些实施例中,调制解调处理器可以独立于处理器110,与移动通信模块150或其他功能模块设置在同一个器件中。
[0122] 无线通信模块160可以提供应用在电子设备100上的包括无线局域网(wireless local area networks,WLAN)(如无线保真(wireless fidelity,Wi‑Fi)网络),蓝牙(bluetooth,BT),全球导航卫星系统(global navigation satellite system,GNSS),调频(frequency modulation,FM),近距离无线通信技术(near field communication,NFC),红外技术(infrared,IR)等无线通信的解决方案。无线通信模块160可以是集成至少一个通信处理模块的一个或多个器件。无线通信模块160经由天线2接收电磁波,将电磁波信号调频以及滤波处理,将处理后的信号发送到处理器110。无线通信模块160还可以从处理器110接收待发送的信号,对其进行调频,放大,经天线2转为电磁波辐射出去。
[0123] 在一些实施例中,电子设备100的天线1和移动通信模块150耦合,天线2和无线通信模块160耦合,使得电子设备100可以通过无线通信技术与网络以及其他设备通信。所述无线通信技术可以包括全球移动通讯系统(global system for mobile communications,GSM),通用分组无线服务(general packet radio service,GPRS),码分多址接入(code division multiple access,CDMA),宽带码分多址(wideband code division multiple access,WCDMA),时分码分多址(time‑division code division multiple access,TD‑SCDMA),长期演进(long term evolution,LTE),BT,GNSS,WLAN,NFC,FM,和/或IR技术等。所述GNSS可以包括全球卫星定位系统(global positioning system,GPS),全球导航卫星系统(global navigation satellite system,GLONASS),北斗卫星导航系统(beidou navigation satellite system,BDS),准天顶卫星系统(quasi‑zenith satellite system,QZSS)和/或星基增强系统(satellite based augmentation systems,SBAS)。
[0124] 电子设备100通过GPU,显示屏194,以及应用处理器等实现显示功能。GPU为图像处理的微处理器,连接显示屏194和应用处理器。GPU用于执行数学和几何计算,用于图形渲染。处理器110可包括一个或多个GPU,其执行程序指令以生成或改变显示信息。
[0125] 显示屏194用于显示图像,视频等。显示屏194包括显示面板。显示面板可以采用液晶显示屏(liquid crystal display,LCD),有机发光二极管(organic light‑emitting diode,OLED),有源矩阵有机发光二极体或主动矩阵有机发光二极体(active‑matrix organic light emitting diode的,AMOLED),柔性发光二极管(flex light‑emitting diode,FLED),Miniled,MicroLed,Micro‑oLed,量子点发光二极管(quantum dot light emitting diodes,QLED)等。在一些实施例中,电子设备100可以包括1个或N个显示屏194,N为大于1的正整数。
[0126] 电子设备100可以通过ISP,摄像头193,视频编解码器,GPU,显示屏194以及应用处理器等实现拍摄功能。
[0127] ISP用于处理摄像头193反馈的数据。例如,拍照时,打开快门,光线通过镜头被传递到摄像头感光元件上,光信号转换为电信号,摄像头感光元件将所述电信号传递给ISP处理,转化为肉眼可见的图像。ISP还可以对图像的噪点,亮度,肤色进行算法优化。ISP还可以对拍摄场景的曝光,色温等参数优化。在一些实施例中,ISP可以设置在摄像头193中。
[0128] 摄像头193用于捕获静态图像或视频。物体通过镜头生成光学图像投射到感光元件。感光元件可以是电荷耦合器件(charge coupled device,CCD)或互补金属氧化物半导体(complementary metal‑oxide‑semiconductor,CMOS)光电晶体管。感光元件把光信号转换成电信号,之后将电信号传递给ISP转换成数字图像信号。ISP将数字图像信号输出到DSP加工处理。DSP将数字图像信号转换成标准的RGB,YUV等格式的图像信号。在一些实施例中,电子设备100可以包括1个或N个摄像头193,N为大于1的正整数。
[0129] 数字信号处理器用于处理数字信号,除了可以处理数字图像信号,还可以处理其他数字信号。例如,当电子设备100在频点选择时,数字信号处理器用于对频点能量进行傅里叶变换等。
[0130] 视频编解码器用于对数字视频压缩或解压缩。电子设备100可以支持一种或多种视频编解码器。这样,电子设备100可以播放或录制多种编码格式的视频,例如:动态图像专家组(moving picture experts group,MPEG)1,MPEG2,MPEG3,MPEG4等。
[0131] NPU为神经网络(neural‑network,NN)计算处理器,通过借鉴生物神经网络结构,例如借鉴人脑神经元之间传递模式,对输入信息快速处理,还可以不断的自学习。通过NPU可以实现电子设备100的智能认知等应用,例如:图像识别,人脸识别,语音识别,文本理解等。
[0132] 外部存储器接口120可以用于连接外部存储卡,例如Micro SD卡,实现扩展电子设备100的存储能力。外部存储卡通过外部存储器接口120与处理器110通信,实现数据存储功能。例如将音乐,视频等文件保存在外部存储卡中。
[0133] 内部存储器121可以用于存储计算机可执行程序代码,所述可执行程序代码包括指令。内部存储器121可以包括存储程序区和存储数据区。其中,存储程序区可存储操作系统,至少一个功能所需的应用程序(比如声音播放功能,图像播放功能等)等。存储数据区可存储电子设备100使用过程中所创建的数据(比如音频数据,电话本等)等。此外,内部存储器121可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件,闪存器件,通用闪存存储器(universal flash storage,UFS)等。处理器110通过运行存储在内部存储器121的指令,和/或存储在设置于处理器中的存储器的指令,执行电子设备100的各种功能应用以及数据处理。
[0134] 电子设备100可以通过音频模块170,扬声器170A,受话器170B,麦克风170C,耳机接口170D,以及应用处理器等实现音频功能。例如音乐播放,录音等。
[0135] 音频模块170用于将数字音频信息转换成模拟音频信号输出,也用于将模拟音频输入转换为数字音频信号。音频模块170还可以用于对音频信号编码和解码。在一些实施例中,音频模块170可以设置于处理器110中,或将音频模块170的部分功能模块设置于处理器110中。
[0136] 扬声器170A,也称“喇叭”,用于将音频电信号转换为声音信号。电子设备100可以通过扬声器170A收听音乐,或收听免提通话。
[0137] 受话器170B,也称“听筒”,用于将音频电信号转换成声音信号。当电子设备100接听电话或语音信息时,可以通过将受话器170B靠近人耳接听语音。
[0138] 麦克风170C,也称“话筒”,“传声器”,用于将声音信号转换为电信号。当拨打电话或发送语音信息时,用户可以通过人嘴靠近麦克风170C发声,将声音信号输入到麦克风170C。电子设备100可以设置至少一个麦克风170C。在另一些实施例中,电子设备100可以设置两个麦克风170C,除了采集声音信号,还可以实现降噪功能。在另一些实施例中,电子设备100还可以设置三个,四个或更多麦克风170C,实现采集声音信号,降噪,还可以识别声音来源,实现定向录音功能等。
[0139] 耳机接口170D用于连接有线耳机。耳机接口170D可以是USB接口130,也可以是3.5mm的开放移动电子设备平台(open mobile terminal platform,OMTP)标准接口,美国蜂窝电信工业协会(cellular telecommunications industry association of the USA,CTIA)标准接口。
[0140] 压力传感器180A用于感受压力信号,可以将压力信号转换成电信号。在一些实施例中,压力传感器180A可以设置于显示屏194。压力传感器180A的种类很多,如电阻式压力传感器,电感式压力传感器,电容式压力传感器等。电容式压力传感器可以是包括至少两个具有导电材料的平行板。当有力作用于压力传感器180A,电极之间的电容改变。电子设备100根据电容的变化确定压力的强度。当有触摸操作作用于显示屏194,电子设备100根据压力传感器180A检测所述触摸操作强度。电子设备100也可以根据压力传感器180A的检测信号计算触摸的位置。在一些实施例中,作用于相同触摸位置,但不同触摸操作强度的触摸操作,可以对应不同的操作指令。例如:当有触摸操作强度小于第一压力阈值的触摸操作作用于短消息应用图标时,执行查看短消息的指令。当有触摸操作强度大于或等于第一压力阈值的触摸操作作用于短消息应用图标时,执行新建短消息的指令。
[0141] 陀螺仪传感器180B可以用于确定电子设备100的运动姿态。在一些实施例中,可以通过陀螺仪传感器180B确定电子设备100围绕三个轴(即,x,y和z轴)的角速度。陀螺仪传感器180B可以用于拍摄防抖。示例性的,当按下快门,陀螺仪传感器180B检测电子设备100抖动的角度,根据角度计算出镜头模组需要补偿的距离,让镜头通过反向运动抵消电子设备100的抖动,实现防抖。陀螺仪传感器180B还可以用于导航,体感游戏场景。
[0142] 气压传感器180C用于测量气压。在一些实施例中,电子设备100通过气压传感器180C测得的气压值计算海拔高度,辅助定位和导航。
[0143] 磁传感器180D包括霍尔传感器。电子设备100可以利用磁传感器180D检测翻盖皮套的开合。在一些实施例中,当电子设备100是翻盖机时,电子设备100可以根据磁传感器180D检测翻盖的开合。进而根据检测到的皮套的开合状态或翻盖的开合状态,设置翻盖自动解锁等特性。
[0144] 加速度传感器180E可检测电子设备100在各个方向上(一般为三轴)加速度的大小。当电子设备100静止时可检测出重力的大小及方向。还可以用于识别电子设备姿态,应用于横竖屏切换,计步器等应用。
[0145] 距离传感器180F,用于测量距离。电子设备100可以通过红外或激光测量距离。在一些实施例中,拍摄场景,电子设备100可以利用距离传感器180F测距以实现快速对焦。
[0146] 接近光传感器180G可以包括例如发光二极管(LED)和光检测器,例如光电二极管。发光二极管可以是红外发光二极管。电子设备100通过发光二极管向外发射红外光。电子设备100使用光电二极管检测来自附近物体的红外反射光。当检测到充分的反射光时,可以确定电子设备100附近有物体。当检测到不充分的反射光时,电子设备100可以确定电子设备
100附近没有物体。电子设备100可以利用接近光传感器180G检测用户手持电子设备100贴近耳朵通话,以便自动熄灭屏幕达到省电的目的。接近光传感器180G也可用于皮套模式,口袋模式自动解锁与锁屏。
[0147] 环境光传感器180L用于感知环境光亮度。电子设备100可以根据感知的环境光亮度自适应调节显示屏194亮度。环境光传感器180L也可用于拍照时自动调节白平衡。环境光传感器180L还可以与接近光传感器180G配合,检测电子设备100是否在口袋里,以防误触。
[0148] 指纹传感器180H用于采集指纹。电子设备100可以利用采集的指纹特性实现指纹解锁,访问应用锁,指纹拍照,指纹接听来电等。
[0149] 温度传感器180J用于检测温度。在一些实施例中,电子设备100利用温度传感器180J检测的温度,执行温度处理策略。例如,当温度传感器180J上报的温度超过阈值,电子设备100执行降低位于温度传感器180J附近的处理器的性能,以便降低功耗实施热保护。在另一些实施例中,当温度低于另一阈值时,电子设备100对电池142加热,以避免低温导致电子设备100异常关机。在其他一些实施例中,当温度低于又一阈值时,电子设备100对电池
142的输出电压执行升压,以避免低温导致的异常关机。
[0150] 触摸传感器180K,也称“触控器件”。触摸传感器180K可以设置于显示屏194,由触摸传感器180K与显示屏194组成触摸屏,也称“触控屏”。触摸传感器180K用于检测作用于其上或附近的触摸操作。触摸传感器可以将检测到的触摸操作传递给应用处理器,以确定触摸事件类型。可以通过显示屏194提供与触摸操作相关的视觉输出。在另一些实施例中,触摸传感器180K也可以设置于电子设备100的表面,与显示屏194所处的位置不同。
[0151] 骨传导传感器180M可以获取振动信号。在一些实施例中,骨传导传感器180M可以获取人体声部振动骨块的振动信号。骨传导传感器180M也可以接触人体脉搏,接收血压跳动信号。在一些实施例中,骨传导传感器180M也可以设置于耳机中,结合成骨传导耳机。音频模块170可以基于所述骨传导传感器180M获取的声部振动骨块的振动信号,解析出语音信号,实现语音功能。应用处理器可以基于所述骨传导传感器180M获取的血压跳动信号解析心率信息,实现心率检测功能。
[0152] 按键190包括开机键,音量键等。按键190可以是机械按键。也可以是触摸式按键。电子设备100可以接收按键输入,产生与电子设备100的用户设置以及功能控制有关的键信号输入。
[0153] 马达191可以产生振动提示。马达191可以用于来电振动提示,也可以用于触摸振动反馈。例如,作用于不同应用(例如拍照,音频播放等)的触摸操作,可以对应不同的振动反馈效果。作用于显示屏194不同区域的触摸操作,马达191也可对应不同的振动反馈效果。不同的应用场景(例如:时间提醒,接收信息,闹钟,游戏等)也可以对应不同的振动反馈效果。触摸振动反馈效果还可以支持自定义。
[0154] 指示器192可以是指示灯,可以用于指示充电状态,电量变化,也可以用于指示消息,未接来电,通知等。
[0155] SIM卡接口195用于连接SIM卡。SIM卡可以通过插入SIM卡接口195,或从SIM卡接口195拔出,实现和电子设备100的接触和分离。电子设备100可以支持1个或N个SIM卡接口,N为大于1的正整数。SIM卡接口195可以支持Nano SIM卡,Micro SIM卡,SIM卡等。同一个SIM卡接口195可以同时插入多张卡。所述多张卡的类型可以相同,也可以不同。SIM卡接口195也可以兼容不同类型的SIM卡。SIM卡接口195也可以兼容外部存储卡。电子设备100通过SIM卡和网络交互,实现通话以及数据通信等功能。在一些实施例中,电子设备100采用eSIM,即:嵌入式SIM卡。eSIM卡可以嵌在电子设备100中,不能和电子设备100分离。
[0156] 下面结合附图对本申请所示的图像帧的预测方法的原理进行解释和说明。
[0157] 为了方便理解,下面对本申请方案中的一些专业技术术语进行解释和说明:
[0158] 关于图形库
[0159] 图形库也称为绘图库,图形库用于定义跨编程语言、跨平台的应用程序编程接口(Application Programming Interface,API),其中包含许多对图形进行处理的函数,以OpenGL(Open Graphics Library,开放式图形库)为例,OpenGL定义的API中包括用于绘制二维图像或三维图像的接口(该接口包括绘制函数,例如绘制函数glDrawElements()),还包括将绘制函数绘制的图像呈现到显示界面上的接口(该接口包括呈现函数,例如函数eglSwapBuffers())等,本申请实施例在此不进行一一举例。其中,OpenGL中的函数可以通过指令调用,例如,通过绘制指令可以调用绘制函数,以绘制二维图像或三维图像。该绘制指令是在游戏应用开发时开发人员根据图形库内的函数编写的命令,用于调用与绘制指令对应的图形库的接口。
[0160] 关于游戏图像帧:
[0161] 上文中所示,绘制指令调用绘制函数所绘制的二维图像或三维图像可以包括游戏图像帧,还包括其他类型的图像帧。具体地,游戏应用在运行过程中,是通过对一帧帧图像进行连续渲染和快速播放显示的。一帧图像帧是游戏应用所显示的一帧静态图像。每一帧静态图像可以由场景图像和UI图像等组成。示例性地,场景图像可以包括游戏内风景、游戏人物、背景物体、特效、技能等,UI图像可以包括渲染控制按钮、小地图、悬浮文字等图像,有的游戏里人物血量条也包含在UI图像内。需要说明的是,不论是场景图像中游戏人物等,还是UI图像中的渲染控制按钮都可以认为是游戏图像帧中的对象,可以理解为,每个游戏图像帧是由一个个对象组成的。
[0162] 关于绘制指令:
[0163] 游戏图像帧中的每个对象都是通过电子设备特定软件或者硬件执行绘制指令绘制获得的。一个对象可以由一条或者多条绘制指令绘制获得,一般情况下,一个对象与绘制指令一一对应。需要说明的是,每条绘制指令还包括其携带的特定参数,例如顶点信息等。在电子设备执行该绘制指令时,基于其特定参数绘制该绘制指令对应的对象。需要说明的是,对于不同帧中的同一对象所对应的绘制指令是一致的,例如,游戏画面连续的多个游戏图像帧中显示的某棵大树是电子设备硬件基于相同的绘制指令绘制获得的。但是本申请并不限制这种“相同”是毫无差别的,在一些实施例中相同也可以是“近似”或“相似”。
[0164] 关于绘制指令流:
[0165] 绘制指令流是由一条或者多条绘制指令组成的指令流,一个绘制指令流一般用于绘制一帧图像,具体地,GPU可以通过运行绘制指令流中的一条或者多条绘制指令,调用图形库的一个或多个接口,来实现对图像帧中一个或多个对象进行绘制。需要说明的是,绘制指令所绘制的每个对象可以通过存储在内存中的数据表示。示例性地,根据该绘制指令流生成的绘制对象的集合可以组成对应游戏图像帧的显示数据。
[0166] 参见附图2,具体涉及本申请中图像帧的预测方法的原理图。
[0167] 如图2所示,真实帧N‑4、真实帧N‑3、真实帧N‑2、真实帧N‑1、真实帧N、真实帧N+1以及真实帧N+2为游戏应用按着时间顺序进行显示的图像帧,真实帧是相对预测帧而言,基于真实帧可预测获得预测帧。具体地,每个真实帧都包括一个或多个对象,每一真实帧的对象都可通过GPU执行绘制指令流中与对象相对应的绘制指令绘制获得。示例性地,真实帧N包括四个对象,分别是对象502、对象504、对象506和对象508,对象502、对象504、对象506和对象508可分别由绘制指令01、绘制指令11、绘制指令21以及绘制指令31绘制获得。真实帧N‑2包括四个对象,分别是对象502、对象504、对象506和对象508,对象502、对象504、对象506和对象508也分别由绘制指令01、绘制指令11、绘制指令21以及绘制指令31绘制获得。
[0168] 由于真实帧N‑4、真实帧N‑3、真实帧N‑2、真实帧N‑1、真实帧N、真实帧N+1以及真实帧N+2为游戏应用中连续的图像帧,在一定帧率下,例如60fps,一秒可以显示60帧游戏应用的图像帧。可以理解,相邻的一帧或多帧之间一般都包括相同的对象。示例性地,真实帧N‑2和真实帧N包括四个相同的对象(对象502、对象504、对象506和对象508)。由于相同的对象一般由相同的绘制指令绘制得到,因此相邻帧间的对象的运动轨迹是有迹可循的,是可以预测的。具体地,本申请通过对每个图像帧的绘制指令流中的绘制指令进行识别,并对图像帧内的对象进行分类和标记,从而对相邻帧之间的一个或者多个对象的运动轨迹进行预测,以形成预测帧。预测帧由预测获得,减少了GPU和GPU执行绘制指令时的资源消耗,也就减小了增加电子设备的负载。
[0169] 继续参见图2,在电子设备100对游戏应用的图像帧进行显示过程中,可以先对真实帧N‑3、真实帧N‑1、真实帧N+1等真实帧对应的绘制指令流进行丢弃,需要说明的是,丢弃绘制指令流可以理解为不执行该绘制指令流。由于真实帧N‑3、真实帧N‑1、真实帧N+1对应的绘制指令流已经丢弃,也就不会对其进行处理,从而可以减少GPU执行绘制指令时的资源消耗,也就减小了增加电子设备的负载。需要说明的是,本申请实施例并不限于隔1帧丢弃1一帧真实帧,还可以以更多的方式对真实帧的绘制指令流进行丢弃,对此本申请不进行限定。
[0170] 继续参见图2,电子设备100可基于真实帧N‑4、真实帧N‑2以及真实帧N中的所包括的相同对象的运动轨迹,对真实帧N+1内的对象的位置进行预测,从而形成预测帧N+1,该预测帧在真实帧N帧后显示。在一个实施例中,预测帧的数量与丢弃帧的数量可以相一致,这样,可以在降低电子设备负载的前提下,保证游戏图像帧的显示帧率。参见图2,真实帧N‑3、真实帧N‑1、真实帧N+1丢弃后,电子设备100在所丢弃的真实帧的位置,分别生成相对应的预测帧。可以理解,图2所示的实施例中,电子设备的帧流显示顺序依次为真实帧N‑4、预测帧N‑3、真实帧N‑2、预测帧N‑1、真实帧N、预测帧N+1以及真实帧N+2。
[0171] 需要说明的是,本申请所示的图像帧的预测方法与传统视频帧的预测方法并不等同,本申请主要应用于游戏图像帧的显示,而游戏图像帧与传统视频帧并不相同。具体地,游戏图像帧对实时性要求高,只能用前帧预测后帧,也就不可以前后插帧。而视频画面实时性要求并不高,可以用前帧和后帧预测中间帧,并可以在前帧和后帧插入该中间帧。此外,视频帧是基于视频帧中的像素数据计算获得,而游戏图像帧是终端设备可以基于游戏的渲染指令和与渲染指令对应的参数计算获得,这些与渲染指令对应的参数可以包括顶点信息等等,而视频帧中并不包含顶点信息。
[0172] 参见图3,具体涉及本申请实施例提供的电子设备100执行图像帧的预测方法的软件层和硬件层的框架图。下面结合图2和图3和图5A‑5D,对本申请所示方法进行进一步地解释和说明。其中图5A为本申请一个实施例中提供的真实帧N‑4的场景图像的示例图。图5B为本申请一个实施例中提供的真实帧N‑2的场景图像的示例图。图5C为本申请一个实施例中提供的真实帧N的场景图像的示例图。图5D为本申请一个实施例中提供的真实帧N‑4、真实帧N‑2以及真实帧N之间对象间的运动向量图。
[0173] 参见图3,电子设备100的软件层包括应用层302、系统框架层304,硬件层306包括GPU、CPU、缓存320等。
[0174] 应用层302包括一个或多个可在电子设备100上运行的应用,例如游戏应用308等。为了方便理解,下文将以游戏应用308为例,对本申请所示方法进行解释和说明。
[0175] 游戏应用308包括游戏引擎310,游戏引擎310可通过图形库接口,调用图形库312内的绘制函数对游戏应用的图像进行绘制。
[0176] 系统框架层304可包括各种图形库312,例如嵌入式开放图形库(open graphics library for embedded system,OpenGL ES)、EGL等。
[0177] 相关技术中,用户打开游戏应用308时,电子设备100响应于用户打开游戏的操作,启动游戏应用308。游戏引擎310基于游戏应用下发的图像帧的绘制指令流,通过图形库接口,调用图形库内的绘制函数来绘制该图像帧。图形库生成图形帧的图像数据后,调用送显接口(如eglSwapBuffers()),将图像数据发送给surfacefinger缓存队列。图形库基于用于送显的周期性信号,将缓存队列中的图像数据发送给硬件(如CPU)进行合成,最后将合成后的图像数据发送到电子设备100的显示屏送显。
[0178] 在本申请的一个实施例中,图形库312中包括拦截模块314,图形库312允许修改图形库内函数指针列表,拦截模块314通过替换图形库内函数指针列表中的指针,使得替换后的函数指针指向图形库外的识别模块316中的函数。这样,游戏引擎通过游戏应用下发图像帧的绘制指令流,在调用图形库内的函数时,将先被送到识别模块316,进行指令识别。也就是说,拦截模块314通过替换图形库内函数指针列表中的指针,可拦截图像帧的绘制指令流。
[0179] 在本申请的一个实施例中,拦截模块314当前所拦截的绘制指令流为真实帧N的绘制指令流。识别模块316可对游戏应用下发的真实帧N的绘制指令流中的每个绘制指令进行指令识别。
[0180] 绘制指令流中一般包括三种绘制指令,如场景绘制指令、UI绘制指令以及图像送显指令等。场景绘制指令用于绘制游戏内风景、人物、特效、技能等图像等,UI绘制指令用于绘制控制按钮、小地图、悬浮文字等图像,有的游戏里人物血量条也是由UI绘制指令绘制,需要说明的是,UI绘制指令也可以称为控件绘制指令。图像送显指令用于将绘制完成的图像数据放入系统指定位置(如在安卓系统里是framebuffer0),以便完成实际显示。
[0181] 绘制指令流中的图像送显指令一般是一个图像帧的绘制指令流中的最后一条指令,识别模块316可以通过判断绘制指令是否调用送显接口,确定该绘制指令是否为图像送显指令。示例性地,识别模块316若判断绘制指令用于调用swapbuffer接口,则确定该绘制指令为图像送显指令。
[0182] UI图像一般位于一个图像帧的最上层,如UI图像中的操作轮盘、按钮、小地图边框等是半透明的,图形库在绘制UI图像时,需要保证绘制的UI图像在整个画面的最上层。具体地,游戏应用可通过多种方式,使得UI图像位于图像帧的最上层。一种方式为游戏应用可通过关闭深度检测(depth test)功能,并开启混合检测(blend test)功能,使得UI图像位于图像帧的最上层。因此,识别模块316可以通过检测深度检测关闭和混合检测开启,来判断所识别的绘制指令是否是UI绘制指令。具体地,当识别模块316识别到绘制指令流中包含有混合使能命令和深度检测关闭命令时,识别模块316可以确定此后拦截模块314所拦截的指令均为UI绘制指令,直到接收到图像送显指令。示例性的,混合使能命令可以为glEnable(GL_BLEND),深度检测关闭指令可以是glDisable(GL_DEPTH_TEST)。一些游戏中,除了关闭深度检测和开启混合检测功能外,还可通过其他方式保证UI图像位于图像帧的最上层。示例性地,游戏应用可以通过将UI图像中的对象的深度值赋值为最大值,使得UI图像位于图像帧的最上层。因此,识别模块316识别到用于将对象的深度值设置为最大值的指令和混合使能命令后,可以确定此后拦截模块314所拦截的指令均为UI绘制指令,直到接收到图像送显指令。具体地,用于将对象的深度值设置为最大值的指令和混合使能命令的先后顺序不与限定。
[0183] 识别模块316识别出绘制指令为UI绘制指令时,将UI绘制指令绘制的UI图像数据存储到缓存320,以便与预测的场景图像进行合并,具体可参见下文。
[0184] 在一个实施例中,绘制指令流中除UI绘制指令和图像送显指令之外的绘制指令可视为场景绘制指令。具体地,一般情况下,一帧图像帧的绘制指令流按着场景绘制指令、UI绘制指令和图像送显指令的顺序下发。识别模块可将上述混合使能命令和深度检测关闭命令前的绘制指令,皆视为是场景绘制指令。示例性地,混合使能命令和深度检测关闭命令是具有先后顺序的,例如混合使能命令在深度检测关闭命令之前。当识别模块316识别出混合使能命令时,识别模块316会记录已收到混合使能命令的标记1。后续,当识别模块识别出深度检测关闭命令,识别模块316记录已收到深度检测命令的标记2。此时,识别模块通过确定已记录有标记1和标记2,则说明识别模块已收到混合使能命令和深度检测关闭命令,识别模块316可确定深度检测关闭命令之后的指令为UI绘制指令,混合使能命令之前的绘制指令为场景绘制指令。进一步地,识别模块316中可以设置一个全局变量,初始值可以设置为0,若识别模块判断全局变量的值为0,则识别模块316确认识别的绘制指令是场景绘制指令。当满足预设条件,识别模块将全局变量的值设置为1,后续识别模块判断全局变量的值为1时,识别模块316确认识别的绘制指令为UI绘制指令。具体地,识别模块306中可以基于上述标记1和标记2确定是否满足满足上述预设条件,例如,识别模块316可以在确定已记录有标记1和标记2时,将全局变量赋值为1,这样,识别模块314在按着场景绘制指令、UI绘制指令和图像送显指令的顺序向识别模块发送绘制指令时,识别模块314可以基于全局变量的值,对场景绘制指令和UI绘制指令进行识别。需要说明的是,上述示例中,识别模块314并不限于通过检测已接收到混合使能命令和深度检测关闭命令的标记来对全局变量进行赋值,还可以通过检测接收到混合使能命令、深度检测关闭命令以及清除深度缓存命令的标记,对全局变量进行赋值。
[0185] 系统框架层304中还包括分离模块318,分离模块318用于对场景绘制指令对应的场景图像中的对象进行分离。识别模块316在识别到绘制指令为场景绘制指令时,识别模块316可调用分离模块318,使得分离模块318对场景绘制指令对应的场景图像中的动态对象和静态对象进行分离,动态对象是指相邻帧之间形态、位置或者大小发生变化的对象,静态对象是指相邻帧之间形态、位置或者大小未发生变化的对象。
[0186] 分离模块318可基于场景绘制指令所携带的参数以及每个对象的标识,分离动态对象和静态对象,并将分离后的场景图像中的动态对象和动态对象的数据存储到缓存320。
[0187] 绘制指令所绘制的每个对象都包括唯一的、用于表征该对象的标识。绘制指令所携带的参数可包括对象的顶点信息,顶点信息的格式可以如下所示:
[0188] float vertices[]={0.5f,0.5f,0.0f,//右上角0.5f,‑0.5f,0.0f,//右下角‑0.5f,‑0.5f,0.0f,//左下角‑0.5f,0.5f,0.0f//左上角};顶点坐标;
[0189] unsigned int indices[]={//注意索引从0开始!0,1,3,//第一个三角形1,2,3//第二个三角形};顶点的连线;
[0190] 在一个示例中,拦截模块314拦截真实帧N场景绘制指令时,分离模块318可基于真实帧N中一个对象的标识,从缓存320中获取真实帧N‑2的对象数据,并确定真实帧N‑2中是否也包括该对象。假设真实帧N‑2不包括该对象,分离模块318可将真实帧N中该对象进行标记,标记真实帧N中该对象为动态物体。进一步地,如果真实帧N‑2包括该对象,则分离模块318获取该对象在真实帧N‑2中的顶点信息,并将该对象分别在真实帧N‑2与真实帧N的顶点信息是否一致,如果不一致,则将真实帧N中该对象的顶点信息加入记录当中,并标记此对象为动态对象,如果一致,则标记此对象为静态物体。在一个实施例中,标记动态、静态对象的标记位可设置在对象的stencil区域(对象数据结构的一个部分),如静态对象标记为0,动态对象标记为1。这样,分离模块318在分离真实帧N的对象时,可从缓存320中读取真实帧N‑2的对象数据,若真实帧N‑2包括该对象,可以直接读取真实帧N‑2中该对象的stencil区域数据,来确定对象是静态对象还是动态对象。
[0191] 在一个示例中,当拦截模块314拦截的图像帧为游戏应用的第一帧时,可以将该第一帧中的每个对象皆标记为动态对象。
[0192] 示例性地,参见图5B和图5C,分离模块318在分离真实帧N的对象502时,基于对象502的标识,可以直接从缓存320获取真实帧N‑2中对象502的stencil区域数据,若stencil区域数据为1,则确定真实帧N的对象502为动态对象,若stencil区域数据为0,则确定真实帧N的对象502为静态对象。可选地,为了保证分离结果的准确性,分离模块318基于真实帧N‑2中对象502的stencil区域数据,确定对象502为静态对象或动态对象后,可以进一步地校验真实帧N的对象502的顶点信息和真实帧N‑2的对象502的顶点信息是否一致,若一致,即使真实帧N‑2的stencil区域数据为1,分离模块也确定真实帧N中的对象502是静态对象。
[0193] 在一个示例中,与一个对象相关的指令可以有多条,一般与对象顶点相关的指令为一条。由于绘制指令基于顶点信息绘制相应的对象,因此,识别模块316可仅将包括顶点信息的场景绘制指令发送给分离模块318,使分离模块318基于场景绘制指令携带的顶点信息,对动态对象和静态对象进行分离。在另一个示例中,识别模块316可将不包括顶点信息的绘制指令回调给图形库,使得图形库继续基于回调的绘制指令,调用相关绘制函数,或者,识别模块315基于不携带顶点信息的绘制指令,进行场景识别。
[0194] 在一个示例中,当拦截模块314拦截真实帧N的绘制指令流时,缓存320可以存储有真实帧N‑2的场景图像中动态对象和静态对象的数据。可以理解,真实帧N‑2的场景图像中动态对象和静态对象的数据,是电子设备100在显示真实帧N‑2时,由分离模块318对真实帧N‑2进行分离,并存储到缓存320。
[0195] 系统框架层304还包括匹配模块322,当识别模块316识别的绘制指令为真实帧N的图像送显指令时,识别模块316调用匹配模块322,匹配模块322从缓存320中获取真实帧N以及真实帧N‑2的场景图像中的对象数据,并对真实帧N以及真实帧N‑2之间的对象进行匹配。示例性地,匹配模块322可以基于对象标识和/或对象顶点信息,进行匹配。其中真实帧N以及真实帧N‑2之间的对象进行匹配是指,将真实帧N中的动态对象与真实帧N‑2中动态对象进行匹配,以及将真实帧N中的静态对象与真实帧N‑2中静态对象进行匹配。示例性地,参见图5B和图5C,真实帧N对象502为动态对象,对象506为静态对象,真实帧N‑2中对象502为动态对象,对象506为静态对象,则匹配模块322可基于对象502的标识将真实帧N以及真实帧N‑2之间动态对象502进行匹配,以及基于对象506的标识将真实帧N以及真实帧N‑2之间静态对象506进行匹配。在一个示例中,匹配模块可将真实帧N以及真实帧N‑2之间的匹配的对象发送给计算模块324。可以理解,真实帧N以及真实帧N‑2之间的匹配的对象包括匹配的动态对象和静态对象,例如,对象502可为真实帧N以及真实帧N‑2之间的匹配的动态对象,对象506可为真实帧N以及真实帧N‑2之间的匹配的静态对象。
[0196] 计算模块324用于计算真实帧N以及真实帧N‑2匹配的对象之间的运动向量,以获得真实帧N与真实帧N‑2之间的运动向量图Y2,其中,真实帧N与真实帧N‑2之间的运动向量图可以视为真实帧N与真实帧N‑2中各匹配对象之间的运动向量的集合。示例性地,运动向量图Y2也可称为第一运动向量,第一运动向量包括一个或多个运动分量,该第一运动向量中的第一运动分量可以为真实帧N以及真实帧N‑2中对象502之间的运动向量,该第一运动向量中的第二运动分量可以为真实帧N以及真实帧N‑2中对象506之间的运动向量。
[0197] 计算模块324还用于计算真实帧N‑2与真实帧N‑4中相匹配的对象之间的运动向量,以形成真实帧N‑2与真实帧N‑4之间的运动向量图Y1。具体地,真实帧N‑2与真实帧N‑4中相匹配的对象之间的运动向量以及运动向量图Y1,在电子设备100显示真实帧N‑2时由计算模块324计算获得。示例性地,运动向量图Y1也可称为第二运动向量,第二运动向量包括一个或多个运动分量,如第一运动分量和第二运动分量,该第二运动向量中的第一运动分量可以为真实帧N‑2以及真实帧N‑4中对象502之间的运动向量,该第二运动向量中的第二运动分量可以为真实帧N‑2以及真实帧N‑4中对象506之间的运动向量。
[0198] 示例性地,第一运动向量和第二运动向量的差值的一半,定义为第三运动向量。可以理解,第三运动向量也包括第一运动分量和第二运动分量,示例性地,第三运动向量的第一运动分量为第一运动向量的第一运动分量和第二运动向量的第一运动分量的差值的一半,第三运动向量的第二运动分量为第一运动向量的第二运动分量和第二运动向量的第二运动分量的差值的一半。
[0199] 计算模块324可将真实帧N与真实帧N‑2之间的运动向量图Y1存储到缓存320。计算模块324还可以基于真实帧N与真实帧N‑2之间的运动向量图Y2、真实帧N‑2与真实帧N‑4之间的运动向量图Y1,计算真实帧N与真实帧N+1的估计运动向量图Y3。计算模块324可以将该估计运动向量图Y3存储到缓存320。在一个示例中,计算模块324计算出估计运动向量图Y3后,可将估计运动向量图Y3发送给估计模块326,以对真实帧N中场景图像中的对象进行运动估计。
[0200] 下面参见图5A‑图5D,对计算模块324计算估计运动向量图进行进一步地说明。
[0201] 图5A‑图5C中皆包括对象502、504、506和508。图5A、图5B和图5C分别对应于真实帧N‑4、真实帧N‑2和真实帧N。电子设备显示真实帧N‑2时,上述分离模块可从缓存320中获取的真实帧N‑4的对象数据,并读取对象502、对象508、对象504和506的对象数据结构的特定区域的值,如stencil区域,可确定对象502和对象508为动态对象,对象504和506为静态图像。电子设备显示真实帧N‑2时,可确定从真实帧N‑4到真实帧N‑2,对象502向方向510运动,对象508向方向512运动,场景图像中的其他静态图像整体向方向514运动。电子设备显示真实帧N时,可确定从真实帧N‑2到真实帧N,对象502向方向510运动,对象508向方向512运动,场景图像中的其他静态图像整体向方向514运动。
[0202] 参见图5D,匹配模块322对真实帧N‑4和真实帧N‑2中的对象502、对象508匹配后,计算模块324可计算真实帧N‑4和真实帧N‑2间的对象502的运动向量y1(N‑4,N‑2),以及真实帧N‑4和真实帧N‑2之间对象508的运动向量y2(N‑4,N‑2)。由于真实帧N‑4和真实帧N‑2间匹配的静态对象之间的运动向量与整个场景运动向量相等,计算模块324可计算真实帧N‑4和真实帧N‑2间任意一个匹配的静态对象(如对象504)的运动向量y3(N‑4,N‑2),从而确定真实帧N‑4和真实帧N‑2间的所有匹配的静态对象的运动向量y3(N‑4,N‑2)。计算模块324所计算的真实帧N‑4和真实帧N‑2中的所有匹配对象之间的运动向量的集合Y1{y1(N‑4,N‑2),y2(N‑4,N‑2),y3(N‑4,N‑2)},为真实帧N‑4和真实帧N‑2间的运动向量图。参见图5D中,运动向量图Y1即为真实帧N‑4和真实帧N‑2间运动向量图。
[0203] 基于相同原理,匹配模块将真实帧N‑2和真实帧N中的对象502、对象508匹配后,计算模块324可计算真实帧N‑2和真实帧N之间的对象502的运动向量y1(N‑2,N),以及真实帧N‑2和真实帧N中的对象508之间的运动向量y2(N‑2,N),计算模块324还可计算真实帧N‑2和真实帧N间任意一个匹配的静态对象(如对象504)的运动向量y3(N‑2,N),以确定整个真实帧N‑2和真实帧N间的静态对象的运动向量y3(N‑2,N)。计算模块324所计算的真实帧N‑2和真实帧N中的所有匹配对象之间的运动向量的集合Y2{y1(N‑2,N),y2(N‑2,N),y3(N‑2,N)},即为真实帧N‑2和真实帧N间的运动向量图。参见图5D中,运动向量图Y2即为真实帧N‑2和真实帧N间运动向量图。
[0204] 计算模块324还可以基于运动向量图Y1和运动向量图Y2,计算模块324可以计算出真实帧N与真实帧N+1之间估计运动向量图Y3。示例性地,假设每个对象做匀加速运动。计算模块324可以通过运动向量图Y1和运动向量图Y2,计算出真实帧N和真实帧N+1之间对象的运动加速度,例如,在真实帧N‑4、真实帧N‑2和真实帧N中均包括的对象502,即对象502为真实帧N‑4和真实帧N‑2之间相匹配的对象,也为真实帧N‑2和真实帧N之间相匹配的对象。计算模块324可通过对象502在真实帧N‑4和真实帧N‑2之间的运动向量y1(N‑4,N‑2)、对象502在真实帧N‑2和真实帧N之间的运动向量y1(N‑2,N),计算出对象502在真实帧N和真实帧N+1之间的运动向量y1(N,N+1),示例性地,y1(N,N+1)=y1(N‑2,N)/2+(y1(N‑2,N)‑y1(N‑4,N‑2))/2。基于相同原理,可以计算出对象508在真实帧N和真实帧N+1之间的运动向量y2(N,N+1),示例性地,y2(N,N+1)=y2(N‑2,N)/2+(y2(N‑2,N)‑y2(N‑4,N‑2))/2。基于相同原理,可以计算出所有静态对象在真实帧N和真实帧N+1之间的运动向量y3(N,N+1),从而形成真实帧N和真实帧N+1之间的估计运动向量图Y3{y1(N,N+1),y2(N,N+1),y3(N,N+1)}。
[0205] 系统框架层还包括估计模块326,估计模块326可通过计算模块324计算的估计运动向量图Y3和真实帧N的场景图像数据以及真实帧N和真实帧‑2之间的运动向量图Y2,对真实帧N的对象做运动估计。
[0206] 示例性地,估计模块326根据Y3中对象502的估计运动向量y1(N,N+1),对真实帧N中对象502的运动轨迹进行运动估计。具体地,对象502在预测帧N+1的坐标=对象502在真实帧N中的坐标+y1(N,N+1)。基于相同原理,估计模块326根据Y3中对象508的估计运动向量y2(N,N+1),和Y2中对象508的运动向量y2(N‑2,N),对对象508的运动轨迹进行运动估计。具体地,对象508在预测帧N+1的坐标=对象508在真实帧N中的坐标+y2(N,N+1)。基于相同原理,还可以对真实帧中的其他对象的位置进行估计。
[0207] 也就是说,估计模块326通过对象在真实帧N的坐标,以及对象在估计运动向量图Y3中的向量,对各个动态、静态对象位移,得到预测帧N+1的预测场景图像。在一个示例中,估计模块326可将预测场景图像的数据存储到缓存320。
[0208] 估计模块326在得到预测帧N+1的预测场景图像后,调用系统框架层中的校验模块328对预测场景图进行校验。
[0209] 估计模块所估计获得的预测场景图像中,可能存在前真实帧N、真实帧N‑2、以及真实帧N‑4中都没有出现过的某些像素点或者像素块,这是由于场景图像中对象之间存在相互遮挡、画面移动显示新的图像等原因造成。因此,需要对预测的场景图像进行校验。具体地,可以通过多种方法对场景图像进行校验,示例性地,可通过计算新出现的像素在整个场景图像中占的大小。然后将新出现的像素与预设校验阈值进行比较,超过该阈值则丢弃此预测帧。
[0210] 在一个实施例中,对于通过校验的预测帧N+1,可对预测的场景图像进行模糊处理。
[0211] 校验模块328对预测场景图像进行校验后,调用合并模块330,合并模块330用于将预测场景图像与UI图像进行合并。
[0212] 校验模块328对预测场景图像进行校验后,调用合并模块330以将UI图像与预测场景图像合并,形成最终的预测图像帧N+1。具体地,合并模块330可从缓存320获取预测场景图像数据和UI图像数据。UI图像在整个图像帧的位置一般是固定的,因此,可以将UI图像合并到预测场景图像中,形成最终的预测图像帧N+1。在合并模块得到最终的预测图像帧后,缓存可清除掉不需要的数据,例如,无效的运动向量图和真实帧的对象数据。示例性地,在上述实施例中,在预测获得预测帧N+1后,真实帧N‑4与真实帧N‑2间的运动向量图不会再用于预测真实帧N+3,真实帧N‑4与真实帧N‑2间的运动向量图即是无效的运动向量图。同理,真实帧N‑4在缓存中的对象数据,也为无效的对象数据,为了节省缓存320,可以对无效的运动运动向量图和无效的场景图像的对象数据进行清除。
[0213] 下面结合图2‑图6对缓存320中存储的数据变化进行说明,图6为本申请一个实施例中提供的缓存320中存储的运动向量图和真实帧场景图像中的对象数据的变化示意图。
[0214] 在电子设备显示真实帧N时,缓存320中存储有真实帧N的场景图像中的对象数据,还存储有真实帧N‑4和真实帧N‑2之间的运动向量图Y1、真实帧N‑2和真实帧N之间的运动向量图Y2。在电子设备显示预测帧N+1时,清除缓存中的真实帧N‑4和真实帧N‑2之间的运动向量图Y1。在电子设备显示真实帧N+2时,在计算出真实帧N和真实帧N+2之间的运动向量图后,即可清除真实帧N的场景图像的数据,此时,缓存320中存储有真实帧N+2的场景图像中的对象数据、真实帧N‑2和真实帧N之间的运动向量图Y2、真实帧N和真实帧N+2之间的运动向量图Y4。在电子设备显示预测帧N+3时,清除缓存中的真实帧N‑2和真实帧N之间的运动向量图Y2。
[0215] 也就是说,当电子设备100显示真实帧N时,缓存中缓存有真实帧N的场景图像数据以及真实帧N‑4和真实帧N‑2之间、真实帧N‑2和真实帧N之间的运动向量图。当显示预测帧N+1时,缓存中存储有该真实帧N的场景图像数据以及真实帧N‑2和真实帧N之间的运动向量图。这样,可以更好节省内存的存储区域。
[0216] 系统框架层还包括送显模块332,送显模块用于真实帧N显示完成后,将预测图像帧N+1进行送显。
[0217] 在本申请的一个实施例中,系统框架层还包括回调模块334。回调模块334用于在分离模块318将真实帧N的场景图像的动态对象和静态对象的数据存储到缓存320后,回调模块324将场景绘制指令回调,使得图形库对真实帧N的场景图像进行绘制。回调模块324还用于在识别模块316将UI绘制指令绘制的UI图像数据存储到缓存后,回调模块324将UI绘制指令回调,使得图形库对真实帧N的UI图像进行绘制。回调模块324还用于在识别模块316识别到图像送显指令时,回调模块324将图像送显指令回调,使得图形库对真实帧N的图像进行送显。图形库在对真实帧N绘制完成并送显后,送显模块332将预测图像帧N+1进行送显。
[0218] 具体地,在拦截模块314替换图形库函数列表指针时,回调模块334可以备份图形库中原始函数指针P1(其中指针P1指向图像库中原始函数对应的实现函数)、拦截函数指针P2(其中指针P2可指向识别模块中原始函数对应的实现函数)以及回调函数指针P3(其中P3=P1,即P3也指向图像库该原始函数对应的实现函数)。示例性地,拦截模块可通过拦截函数指针P2替换指针P1,以拦截真实帧的绘制指令流。回调模块334可以通过回调函数指针P3,将图像帧的绘制指令流回调给图形库,以使得图形库对该图像帧进行绘制。示例性地,回调模块334在识别模块316识别出场景图像指令时,通过指针P3,将场景绘制指令回调,或者回调模块334在识别模块316将对象数据存储到缓存后,通过指针P3,将场景图像指令回调。或者,回调模块334在识别模块316识别出UI绘制指令时,通过指针P3,将UI绘制指令回调,或者回调模块334在识别模块316将UI绘制图像存储到缓存后,通过指针P3,将场景图像指令回调。或者,回调模块334在识别模块316识别出图像送显指令时,通过指针P3,将图像送显指令回调。
[0219] 在一个示例中,回调模块334还可以在合并模块形成预测图像帧后,将图像送显指令回调。
[0220] 下面结合图2、图3和图4,对本申请所示预测方法进行进一步地解释和说明,其中图4为图3中系统框架层各模块的交互示意图。
[0221] 下面具体以图形库内拦截模块314拦截的图像帧的绘制指令流为真实帧N的绘制指令流中为例,对本申请中所示预测方法进行说明。
[0222] 步骤A1,图形库312中拦截模块314调用识别模块316,使得识别模块316对拦截模块314拦截的真实帧N的绘制指令流中的绘制指令进行识别。
[0223] 上文已经示出,绘制指令流中一般包括三种绘制指令,如场景绘制指令、UI绘制指令以及图像送显指令等。
[0224] 步骤A2,当识别模块316识别的绘制指令为场景绘制指令,识别模块316可调用分离模块318(步骤A3),使得分离模块318对场景图像中的动态对象和静态对象进行分离。
[0225] 步骤A4,分离模块318对场景绘制指令对应的场景图像中的动态对象和静态对象进行分离,然后将分离后的动态对象和静态对象存储到缓存320(步骤A5)。
[0226] 步骤A6,分离模块318将分离后的动态对象和静态对象存储到缓存320后,可以调用回调模块334,回调模块334将场景绘制指令进行回调(步骤A7),使得图形库对真实帧N的场景图像进行绘制。
[0227] 步骤A8,当识别模块316识别的绘制指令为UI绘制指令,识别模块316将UI绘制指令对应的UI图像进行缓存(步骤A9)。
[0228] 步骤A10,识别模块316在将UI绘制指令对应的UI图像进行缓存,然后调用回调模块334,回调模块334将UI绘制指令进行回调(步骤A11),使得图形库对真实帧N的UI图像进行绘制。
[0229] 步骤A12,当识别模块316识别的绘制指令为图像送显指令,识别模块316调用回调模块334(步骤A13),回调模块334将图像送显指令进行回调(步骤A14),使得图形库将绘制的真实帧N的图像进行送显。
[0230] 步骤B1,识别模块316识别的绘制指令为图像送显指令时,可调用匹配模块322,匹配模块322对真实帧N中的对象和真实帧N‑2中的对象进行匹配(步骤B2)。
[0231] 步骤B2,匹配模块322对真实帧N中的对象和真实帧N‑2中的对象进行匹配后,可以将匹配的对象的数据进行缓存。
[0232] 步骤B3,匹配模块322对真实帧N中的对象和真实帧N‑2的对象进行匹配后,调用计算模块324,计算模块324计算真实帧N和真实帧N‑2间匹配的对象的运动向量,以形成真实帧N和真实帧N‑2间的运动向量图,并基于真实帧N和真实帧N‑2间的运动向量图、真实帧N‑2和真实帧N‑4间的运动向量图,计算真实帧N和真实帧N+1之间的估计运动向量图(步骤B5)。
[0233] 步骤B6,计算模块324将估计运动向量图存储到缓存320。
[0234] 步骤B7,计算模块324估计运动向量图存储到缓存320后,调用估计模块326,估计模块326基于估计运动向量图和真实帧N的场景图像数据,对真实帧N的对象做运动估计,以获得预测帧N+1的预测场景图像(步骤B8)。
[0235] 步骤B9,估计模块326获取预测帧N+1的预测场景图像后,调用校验模块328,校验模块328对预测场景图进行校验(步骤B10)。
[0236] 步骤B11,校验模块328对预测场景图像进行校验后,调用合并模块330,合并模块330从缓存中获取预测场景图像(步骤B12),合并模块330将预测场景图像与UI图像进行合并,以获得预测图像帧N+1(步骤B13)。
[0237] 步骤B14,合并模块330将预测图像帧N+1发送给显示模块332,显示模块332在真实帧N完成显示后,将预测图像帧送显。
[0238] 通过上述实施例所示的预测方法,通过显示预测帧,可以减少GPU执行绘制指令时的资源消耗,也就减小了增加电子设备的负载。
[0239] 上文已经示出,本申请实施例中至少需要三个真实帧,来预测获得一个预测帧,例如,计算模块基于真实帧N‑4、真实帧N‑2以及真实帧N,可以预测获取预测帧N+1,然后在电子设备显示真实帧N后,不执行真实帧N+1的绘制指令流,直接显示预测帧N+1,这样可以减少CPU执行绘制指令所产生的资源消耗。
[0240] 上述实施例中,每个真实帧与预测帧可间隔显示,即电子设备以真实帧N‑2‑预测帧N‑1‑真实帧N‑预测帧N+1·····的顺序对图像帧流进行显示,即该图像帧流中预测帧与真实帧的显示比例为1:1,该预测帧与真实帧的显示比例为1:1指示:电子设备每隔1个真实帧,显示一个预测帧。
[0241] 在本申请的一个实施例中,预测帧不仅可以间隔一个真实帧进行显示,还可以间隔两个或者更多个真实帧进行显示,例如真实帧和预测帧的显示比例可以为2:1、3:1、以及4:1等等。示例性地,真实帧和预测帧的显示比例3:1指示:电子设备每隔3个真实帧,显示一个预测帧。
[0242] 可以理解,预测帧并不是执行图像帧的绘制指令流绘制获得,而是通过至少三个真实帧预测获得,预测帧的显示效果也就依赖于对真实帧中的对象的运动轨迹预测准确程度。示例性地,根据上文所示方法获取预测帧N+3过程中,预测帧N+3是真实帧N+2后的预测帧(预测帧N+3可以基于真实帧N‑2、真实帧N以及真实帧N+2预测获得)。若在真实帧N中的某个动态对象速度突然大幅度加快、减慢或者场景内容大幅度变化(如对象释放技能),很可能导致各个运动对象在预测帧N+3中的位置预测的不准确。也就是说,预测帧N+3很可能出现图像劣化的问题,这非常影响用户的体验。可以理解,在这种情景,为了避免影响用户体验,最简单的一个方法为对该真实帧N+3的位置不进行帧预测,不显示预测帧N+3,而是直接显示真实帧N+3,这样,可以避免显示劣质的预测帧N+3。但是,在这种场景下,电子设备显示的图像帧流中的真实帧和预测帧的显示比例也就发生了变化。也就是说,为了解决上述问题,需要调节真实帧与预测帧的显示比例。但是,电子设备在什么时候调节该真实帧与预测帧的显示比例,以及如何调节该真实帧与预测帧的显示比例是一个非常复杂的问题,这要综合考虑电子设备显示的图像帧的质量,以及最大化减小CPU执行绘制指令的功耗,还要关注用户体验。
[0243] 因此,如何平衡预测帧在整个图像帧流中的比例,以更好地保证图像显示效果,最大程度地减少CPU执行绘制指令的数量,是本申请要解决的重要技术问题。
[0244] 基于此,本申请提出了一种图像帧流的显示方法,以解决上述技术问题。
[0245] 游戏中绝大部分动态对象的运动是基于用户的操作进行的,例如游戏中的车的运动、人物的运动以及对象技能的释放等,都是根据用户在电子设备上操作游戏应用相应的操作UI控件(下文“操作UI控件”简称UI控件)完成,其中UI控件属于上文UI图像中的一种,用于控制游戏对象的运动或者技能释放等。因此,游戏图像帧流中各个的动态对象的运动轨迹是否突然变化,例如突然大幅度变快或减慢、以及技能的释放,是可以基于用户对UI控件的操作进行确定。
[0246] 本申请一个实施例所示预测帧的显示方法,电子设备基于用户对UI控件的操作,预测游戏场景中对象的运动轨迹或者游戏场景的变化程度,来调整真实帧和预测帧的显示比例。例如,在用户玩游戏过程中,电子设备可以根据用户对游戏UI控件操作的幅度、频率甚至是多个UI控件的操作关系(如点击顺序)等,确定当前游戏场景变化大小,以调整真实帧和预测帧的显示比例。
[0247] 具体地,图7为本发明实施例中电子设备100的硬件层和软件层的系统架构,图7所示系统架构建立在图3所示的硬件层和软件层的系统架构的基础上。相比于图3,电子设备100还设置第一决策模块317。
[0248] 在用户打开游戏应用后,第一决策模块317可决策以第一预设比例显示真实帧与预测帧,例如,当该第一预设比例为1:1时,电子设备将真实帧和预测帧交替显示。在电子设备显示真实帧和预测帧的过程中,第一决策模块317可以根据用户对游戏应用UI控件的操作,决策是否调节所述第一预设比例。示例性地,第一决策模块317可以根据用户对UI控件的操作,将第一预设比例调节为第二预设比例,如3:1,使得电子设备每间隔三个真实帧,显示一个预测帧。进一步地,第一决策模块317还可以继续根据用户对UI控件的操作,将第二预设比例调节为第三预设比例,如5:1等,或者将第二预设比例调节回到第一预设比例。
[0249] 在本申请的一个实施例中,在识别模块316识别出真实帧N的UI图像后,将实帧N的UI图像缓存,第一决策模块317可以基于真实帧N的UI图像中的第一目标UI控件的标识或第二目标UI控件的标识,从缓存获取该第一目标UI控件或第二目标UI控件,该第一目标UI控件或第二目标UI控件用于分别控制游戏应用中一个或多个对象的运动轨迹。示例性地,第一目标UI控件或第二目标UI控件可以为游戏操作控件,如游戏操作轮盘等。
[0250] 进一步地。第一决策模块317可以预设有第一目标UI控件和/或第二目标UI控件与用户操作之间的关系。第一决策模块317可以基于用户点击第一目标UI控件或第二目标UI控件,识别用户对应操作,如跳跃、瞄准、前进以及释放技能等功能。在本申请的另一个实施例中,第一决策模块317可以图像识别算法识别第一目标UI控件和/或第二目标UI控件形状,然后第一决策模块可以基于一目标UI控件和/或第二目标UI控件,以及用户用户的触控位置,确定用户对UI控件的操作,以进一步预测游戏场景中对象变化。
[0251] 示例性地,当电子设备显示真实帧N时,第一决策模块317可以获取用户在游戏界面中的一个或多个触控位置,该一个或多个触控位置为用户点击电子设备显示屏的位置。示例性地,一个或多个触控位置具体可以为电子设备在显示真实帧N‑4和/或真实帧N‑2和/或真实帧N时的用户触控显示屏的位置的一个或多个。可以理解,第一决策模块317在电子设备在真实帧N送显时,可以获取显示真实N对应的用户触控位置。在获取真实帧N对应的触控位置后,第一决策模块可以将该触控位置保存到缓存。第一决策模块可以从缓存获取真实帧N‑4对应的用户触控位置和/或真实帧N‑2对应的用户触控位置。需要说明的是,电子设备在送显真实帧N‑4时,第一决策模块可以获取并缓存真实帧N‑4对应的用户触控位置。同理,电子设备在送显真实帧N‑2时,第一决策模块317可以获取并缓存真实帧N‑2对应的用户触控位置。
[0252] 进一步地,第一决策模块317可以确定每个真实帧中与该真实帧中的第一目标UI控件距离最近的触控位置。示例性地,第一决策模块317可以基于UI控件中的顶点信息中的坐标位置,和各个触控位置的坐标,确定与第一目标UI控件距离最近的触控位置,该与目标UI距离最近的触控位置可以称为第一触控位置。第一决策模块317可以确定每个真实帧中与该真实帧中的第二目标UI控件距离最近的触控位置,例如基于第二UI控件中的顶点信息中的坐标位置,和各个触控位置的坐标,确定与第二目标UI控件距离最近的触控位置。该与目标UI距离最近的触控位置可以称为第二触控位置。
[0253] 进一步地,第一决策模块317可以基于一个或多个图像帧中的第一目标UI控件,与一个或多个第一触控位置之间预设关系,将第一预设比例调整为第二预设比例。
[0254] 进一步地,上述预设关系可以包括距离关系或者点击频率关系以及操作顺序等。
[0255] 下面以上述预设关系为距离关系为例,对第一决策模块317如何将第一预设比例调整为第二预设比例进行说明。每个真实帧中的第一触控位置为距离第一目标UI控件最近的触控位置,该第一触控位置大概率为用户点击在第一目标UI控件上的位置。参见图8,具体地本申请一个实施例提供的电子设备100显示真实帧N的图形界面800,电子设备当前真实帧与预测帧的显示比例为第一预设比例。进一步地,图形界面800中包括第一目标UI控件802和第二目标UI控件808,示例性地,第一目标UI控件802具体为轮盘,第二目标UI控件808为技能释放键。该第一目标UI控件包括虚线内指示的第一区域804,以及轮盘上虚线外的第二区域806。进一步地图形界面800中还包括第一触控位置810和第二触控位置812,可以理解第一触控位置810为距离第一目标UI控件802最近的触控位置,以及第二触控位置812为距离第二目标UI控件808最近的触控位置。
[0256] 进一步地,图8中该第一触控位置810位于第一区域804,指示用户通过第一目标UI控件802控制对象不运动或者小幅度运动。此时,对象所处游戏场景变化缓慢,可以保持预测帧在图像帧流中的比例不变,或者减小当前真实帧与预测帧的显示比例。若第一触控位置812位于第二区域806,指示用户通过第一目标UI控件控制对象大幅度运动,当下场景可能为游戏重要场景,应当减少预测帧在图像帧流中的比例,如将第一预设比例调整为第二预设比例,第二预设比例大于第一预设比例。示例性地,继续参见图8,在电子设备送显真实帧N时,第一决策模块317可以确定电子设备显示真实帧N‑4时的第一触控位置与轮盘中心位置的的第一距离,和/或,确定电子设备显示真实帧N‑2时第一触控位置与轮盘中心位置的第二距离,和/或,确定电子设备显示真实帧N时第一触控位置与轮盘中心位置的的第三距离。该距离关系可以包括用户的第一触控位置与轮盘中心的距离。在一个示例中,第一决策模块可以直接基于第三距离,可以确定用户的触控位置在第一区域或第二区域。也就是说,第一决策模块可以直接基于第三距离,将上述第一预设比例,调节为第二预设比例。例如第三距离大于预设阈值,第一决策模块317将第一预设比例调整为第二预设比例。在另一个示例中,第一决策模块可以直接基于上述三个距离之和的平均值大于预设阈值。将上述第一预设比例,调节为第二预设比例或者其他预设比例等。可以以理解,该平均值越大,指示电子设备显示真实帧N附近的多个真实帧时,用户的一直在点击第二区域。基于相同原理,第一决策模块317检测到第三距离再次减小时,可以再次将第二预设比例调节为第一预设比例或者其他预设比例。
[0257] 需要说明的是,该示例中第一目标UI控件802(轮盘)设置第一区域和第二区域只是示例性地。第一决策模块317还可以直接基于手指第一触控位置的坐标location(x,y),分别判断x,y分量距离第一目标UI控件802(轮盘)的中心的相对距离,根据相对距离的大小判断运动的剧烈程度,然后新一步地确定用于显示图像帧流真实帧和预测帧的比例,其中x分量表示水平运动或转向,y分量表示垂直运动。计算该相对距离大小的公式如下:
[0258] dis=a*|x|+b*|y|
[0259] 其中a,b表示x,y分量的权重。如location(0.6r,0.8r)r为轮盘的半径,轮盘中心点坐标为(0,0),a=0.8,b=0.2,dis=0.64r。该示例中,相对距离越大,表示第一目标控件控制的对象运动越剧烈,第一决策模块317越需要降低预测帧在图像帧流中的比例。
[0260] 示例性地,参见表格1,具体为第一决策模块317根据用户的第一触控位置距离第一目标组件(轮盘)之间的相对距离,确定预测帧在图像帧流中预设比例的关系。其中diss表示第一触控位置到轮盘中心的相对距离。
[0261] 参数 隔3帧 隔2帧 隔1帧dis 0.8r<=dis
[0262] 表格1
[0263] 参见表格1可知,当第一触控位置与轮盘中心的相对距离在(0.8‑1)r之间,第一决策模块可以确定以3:1的比例显示图像帧流中的真实帧和预测帧。当第一触控位置与轮盘中心的相对距离在(0.6‑8)r之间,第一决策模块可以确定以2:1的比例显示图像帧流中的真实帧和预测帧。当第一触控位置与轮盘中心的相对距离在(0‑0.6)r之间,第一决策模块可以确定以1:1的比例显示图像帧流中的真实帧和预测帧。下面继续参见图8,以上述预设关系为频率关系为例,对第一决策模块317如何调整第一预设比例进行说明。第一决策模块317可以获取用户在预设时间段内点击第一目标UI控件802的频率。具体地。电子设备可以通过游戏线程获取用户在预设时间段内所点击显示屏第一触控位置的次数,以确定用户在预设时间段内点击第一目标UI控件的频率。可以理解,由于该第一触控位置为距离目标UI控件最近的触控位置,该第一触控位置大概率为用户对目标UI控件的点击操作,所以获取用户在预设时间段内用户对电子设备显示屏中距离第一目标UI控件最近的触控位置的次数,可以确定用户点击目标UI控件的频率。
[0264] 进一步地,第一决策模块317可以获取用户在显示真实帧N‑4到真实帧N之间,点击第一目标UI控件的频率。若是该频率大于某预设阈值,则说明用户很可能在频繁操作第一目标UI控件控制对象,例如控制对象进行团战。该场景大概率为重要场景,可以减少预测帧在图像帧流中比例,即将第一预设比例调节为第二预设比例。当第一决策模块317检测到预设时间段内,用户点击第一目标控件的频率降低时,则可以增加预测帧的比例。
[0265] 下面继续参见图8,以上述预设关系为UI控件操作关系为例,对第一决策模块317如何调节第一预设比例进行说明。第一决策模块可以预先存储一个或多个UI控件操作关系,例如,操作关系包括控件之间的操作顺序等。这些操作关系可以指示用户释放大规模技能等,即第一决策模块317检测该操作关系时可以确定当前场景为重要场景,第一决策模块317可以减小预测帧的比例。示例性地,上述操作关系中包括:用户同时点击第一目标UI控件和第二目标UI控件时,用户将释放技能。进一步地,参见图8,在真实帧N送显示时,第一决策模块317通过获取到第一触控位置和第二触控位置,确定用户在同时点击第一目标UI控件和第二目标UI控件。第一决策模块317可以确定用户在释放技能,该场景为重要场景,为了避免出现劣质预测帧,可以增加图像帧流中的真实帧比例,如将第一预设比例调整为第二预设比例。需要说明的是,第一决策模块317可以根据多个真实帧中用户对每个UI控件的操作关系,确定是否调节图像帧流中真实帧和预测帧的显示比例。示例性地,第一决策模块
317可以获取真实帧N‑4到真实帧N之间,用户在每个真实帧中点击第一目标UI控件和第二目标UI控件的先后关系,确定是否调节图像帧流中真实帧和预测帧的比例。
[0266] 在本申请的一个实施例中,在电子设备打开游戏应用时,拦截模块314可基于第一预设比例,确定拦截真实帧的策略,使得电子设备以第一预设比例显示真实帧与预测帧。进一步地,当第一决策模块确定调节图像帧流中真实帧与预测帧的比例时,第一决策模块可以向拦截模块314发送指示消息,该指示消息中包括显示真实帧与预测帧的第二预设比例。拦截模块314基于第二预设比例,确定拦截真实帧的策略。
[0267] 示例性地,假设第一预设比例为1:1时,拦截模块314拦截的是间隔的真实帧。例如参见图9A,拦截模块基于第一预设比例拦截的真实帧为真实帧N‑4、真实帧N‑2以及真实帧N等,这样计算模块可以根据真实帧N‑4、真实帧N‑2以及真实帧N,计算预测帧N+1。
[0268] 示例性地,假设第一预设比例为5:1时,参见图9B,拦截模块314拦截的真实帧分别为真实帧N‑4、真实帧N‑3以及真实帧N‑2,这样计算模块324可以根据真实帧N‑4、真实帧N‑3以及真实帧N‑2,计算预测帧N‑1。进一步地,拦截模块314可以不拦截真实帧N‑6和真实帧N‑5,实现电子设备每隔5个真实帧显示一个预测帧。
[0269] 示例性地,参见图9C,具体地为电子设备由第一预设比例调整为第二预设比例时,拦截模块314拦截的真实帧的示意图。该示例中,第一预设比例为1:1,第二预设比例为3:1。图9C中电子设备显示的图像帧流中包括第一图像帧流和第二图像帧流,其中第一图像帧流包括真实帧N‑4、预测帧N‑3、真实帧N‑2、预测帧N‑1、真实帧N和预测帧N+1,预测帧N+1基于真实帧N‑4、真实帧N‑2以及真实帧N预测获得。即电子设备100以第一预设比例(1:1)显示第一图像帧流中的图像帧和预测帧。拦截模块314拦截的真实帧为真实帧N‑4、真实帧N‑2以及真实帧N。
[0270] 进一步地,假设第一决策模块317在电子设备显示预测帧N+1时,向拦截模块314发送指示消息,指示拦截模块314基于第二预设比例拦截真实帧,使得电子设备以第二预设比例(3:1)显示第二图像帧流中的真实帧和预测帧。具体地,第二图像帧流包括真实帧N+2、真实帧N+3以及真实帧N+4和预测帧N+5,其中预测帧N+5基于真实帧N+2、真实帧N+3以及真实帧N+4预测获得。在电子设备显示第二图像帧流时,拦截模块314拦截真实帧N+2、真实帧N+3以及真实帧N+4,以使得计算模块基于真实帧N+2、真实帧N+3以及真实帧N+4,计算获得预测帧N+5,这样使得电子设备每隔4个真实帧显示一个预测帧。可以理解,本领域技术人员基于上文所示的预测方法,拦截模块还可以以其他策略拦截真实帧,以计算获取预测帧,对此,本申请不进行限定。
[0271] 参见图10,具体为本申请一个实施例中图9C一个对象1002在真实帧N‑4到预测帧N+5显示位置变化的示例图。下面结合图9C和图10对本申请所示图像帧流的显示方法进行说明。
[0272] 上文已经示出,图9C中电子设备显示的图像帧流中包括第一图像帧流和第二图像帧流,其中第一图像帧流包括真实帧N‑4、预测帧N‑3、真实帧N‑2、预测帧N‑1、真实帧N和预测帧N+1,预测帧N+1基于真实帧N‑4、真实帧N‑2以及真实帧N预测获得。第二图像帧流包括真实帧N+2、真实帧N+3以及真实帧N+4和预测帧N+5,其中预测帧N+5基于真实帧N+2、真实帧N+3以及真实帧N+4预测获得。
[0273] 其中电子设备以1:1的预设比例显示第一图像帧流中的真实帧与预测帧,电子设备以3:1的预设比例显示第二图像帧流中的真实帧与预测帧。
[0274] 参见图10,其中位置1为对象1002在真实帧N‑4的位置,位置2为对象1002在预测帧N‑3的位置,位置3为对象1002在真实帧N‑2的位置,位置4为对象1002在预测帧N‑1的位置,位置5为对象1002在真实帧N的位置,位置6为对象1002在预测帧N+1的位置,位置7为对象在真实帧N+2的位置,位置8为对象在真实帧N+3的位置,位置9为对象在真实帧N+4的位置,位置10为对象1002在预测帧N+5的位置。具体地,电子设备在显示真实帧N‑4时,第一决策模块决策317以第一预设比例显示图像帧流中的真实帧和预测帧,该示例中,第一预设比例为1:1。电子设备将真实帧与预测帧间隔显示。在电子设备显示真实帧N时,计算模块326基于对象在真实帧N‑4和真实帧N‑2之间的向量y1,以及对象在真实帧和真实帧N之间的向量y2,预测出对象在预测帧N+1中的位置6。此时,第一决策模块可以基于上述预设关系,如第一UI目标控件与第一触控位置之间的距离关系,和/或第二目标控件与第二触控位置之间的点击频率关系或者操作关系,确定将第一预设比例调节为第二预设比例,该示例中,第二预设比例为3:1。电子设备可在显示完预测帧N+1后,第一决策模块317决策以第二预设比例显示图像帧流中的真实帧和预测帧。这样,电子设备会随后显示真实帧N+2、真实帧N+3、真实帧N+
4,然后在真实帧N+4之后,显示预测帧N+5,示例性地,预测帧N+5可以基于真实帧N+2、真实帧N+3、真实帧N+4中对象的位置预测获得。例如,计算模块可以计算对象在真实帧N+2、真实帧N+3之间的向量Z1,以及真实帧N+3、真实帧N+4之间的向量Z2,然后基于向量Z1和向量Z2,计算预测向量Z3,然后对象1002在真实帧N+4的基础上,基于向量Z3,确定对象1002在预测帧N+5中的位置。当然,可以理解,基于本申请上下文所示的计算预测帧方法,通过变通和简单的数学变换,还可以通过其他真实帧计算预测帧在N+5的位置。例如,通过真实帧N、真实帧N+2以及真实帧N+4获取预测帧N+5。下面继续参见图7和图10,对第一决策模块决策调整真实帧和预测帧显示比例进行进一步地说明。
[0275] 当电子设备显示真实帧N时,拦截模块314调用识别模块316,使得识别模块316对拦截模块314拦截的真实帧N的绘制指令流中的绘制指令进行识别。当识别模块316识别的绘制指令为UI绘制指令,识别模块316将UI绘制指令对应的UI图像进行缓存。第一决策模块317可以从缓存读取UI图像中一个或多个UI控件,这些UI控件用于对游戏对象进行操作。需要说明的是,第一决策模块317决策过程可以与图像预测过程并行执行。第一决策模块可以在真实帧N送显示时进行决策是否调整真实帧与预测帧的比例,或者在真实帧N送显前决策是否调整真实帧与预测帧的比例。
[0276] 下面说明第一决策模块在真实帧N送显示时,进行决策是否调整真实帧与预测帧的比例。在真实帧N送显示时,第一决策模块317预先存储有用于操作图像帧中各个对象的所有UI控件的标识,第一决策模块317基于这些UI控件的标识,从缓存中读取真实帧N中的一个或多个UI控件。示例性地,第一决策模块317可获取第一目标UI控件的绘制指令流中坐标位置,然后获取用户第一触控位置,该第一触控位置包括电子设备在显示真实帧N时,距离第一目标UI控件最近的触控位置。第一决策模块317可以基于第一触控位置和第一目标UI控件的预设关系,如距离、点击频率以及用户其他UI控件与第一目标UI控件的操作关系等,决策是否调整调整真实帧与预测帧的比例,例如将第一预设比例调整为第二预设比例。需要说明的是,第一决策模块317可以获取真实帧N以及真实N之前的多个真实帧中的第一触控位置与该第一目标UI控件的预设关系,进行决策是否调整调整真实帧与预测帧的比例。当确定将第一预设比例调节为第二预设比例时,向拦截模块发送指示消息。
[0277] 下面说明第一决策模块在真实帧N送显示前,进行决策是否调整真实帧与预测帧的比例。即第一决策模块可以在真实帧N送显前决策是否调整真实帧与预测帧的比例。需要说明的是,本申请中电子设备显示真实帧N是指从拦截模块拦截真实帧N的绘制指令到将真实帧N进行送显的过程。第一决策模块在真实帧N送显示前,可以获取真实帧N之前的一个或多个真实帧中第一触控位置与第一目标UI控件的坐标位置,确定一个或多个真实帧中第一触控位置与第一目标UI控件预设关系,以决策是否调整调整真实帧与预测帧的比例。当第一决策模块确定调整真实帧与预测帧的预设比例,向拦截模块发送指示,拦截模块可以根据新的预设比例,拦截真实帧。
[0278] 通过本申请所示方法,可以动态调节电子设备显示的图像帧流中的预测帧和真实帧的比例,平衡显示效果和CPU资源占用。
[0279] 上述实施例所示的图像帧流的显示方法中,基于用户的操作,预测场景变化以及对象的运动轨迹的变化,调整图像帧流中的预测帧和真实帧的比例。在本申请的另一个实施例中,还可以通过校验获取的预测帧的图像质量,调节图像帧流中的真实帧和预测帧的比例。例如,当电子设备显示图像帧N时,可以基于图像帧N‑4、图像帧N‑2以及图像帧N,获取预测帧N+1。可以理解,若是预测帧N+1的图像质量比较劣化,如图像帧中出现空洞等问题,那么也就是说明,计算模块所计算的图像帧中对象的运动轨迹,与对象实际的运动轨迹相差比较大,那么可以减少预测帧在整个图像帧流中的比例,提高图像的显示质量。
[0280] 图11为本发明另一个实施例中电子设备100的硬件层和软件层的系统架构,图11所示系统架构建立在图3所示的硬件层和软件层的系统架构的基础上。相比于图3,电子设备100还设置第二决策模块327。且第二决策模块的作用包括在图3中校验模块的作用,可以直接将第二决策模块327替换为校验模块。第二决策模块327用于对预测图像帧的图像质量进行校验,基于校验结果,确定是否调整图像帧流中的真实帧与预测帧的比例。
[0281] 示例性地,电子设备当前显示的图像帧为真实帧N,且在第一预设比例下显示图像帧中真实帧和预测帧。具体地,当估计模块基于真实帧N‑4、真实帧N‑2以及真实帧N,估计获得预测帧N+1时,估计模块326可以将预测帧N+1发送给第二决策模块,第二决策模块可以根据预测帧的图像质量,确定是否调节上述第一预设比例。
[0282] 在本申请的一个实施例中,预测帧N+1的图像质量可以基于图像帧N+1空洞对图像帧的影响确定。空洞指的指没有插入像素值的像素点,即空洞中的像素RGBA的参数皆为0,如RGBA(0,0,0,0)。参见图12,具体示出了图像中的空洞1202的示意图。
[0283] 空洞的产生原因有很多,例如预测帧各个对象运动轨迹的准确率过低,或者画面中物体相互遮挡、画面移动显示新的图像等等。第二决策模块327可以计算空洞对于图像帧质量的影响程度,若影响越大,则图像质量越差。在本申请的一个实施例中,若是空洞对预测帧的质量影响过大,第二决策模块可以决策丢弃该预测帧,并将第一预设比例调节为第二预设比例,并向拦截模块发送指示消息,使得拦截模块基于第二预设比例,确定拦截策略,以改善图像的显示质量。进一步地,电子设备显示多个真实帧后,第二决策模块327继续预测帧的质量校验,根据校验结果,重新将第二预设比例调节为第一预设比例或其他预设比例。
[0284] 具体地,空洞对预测帧图像质量的影响可以通过多个参数进行衡量,参数包括但不限于:空洞周边对象模型顶点(vertex)个数、周边色彩种类、空洞像素点总个数、最大的单个或多个空洞像素点个数、空洞周边重复模型数量、空洞周边是否有混合(blend)等等。
[0285] 示例性地,参见表格2,具体为用于计算空洞对图像质量影响程度的各个参数,以及每个参数对应的真实帧与预测帧的预设比例,
[0286]
[0287] 表格2
[0288] 其中k代表1000。上述参数选取参考电子设备在运行重负载游戏场景下的一般数据,如画面总顶点数一般为30万至50万,屏幕像素点总个数受分辨率影响,一般数量级在200万。
[0289] 具体地,上述表格中各个参数包括空洞的周边顶点个数(Nv)、空洞像素点总个数(Np_all)、最大空洞像素点个数(Np_max),每个参数对应一个用于指示图像帧流中真实帧与预测帧的预设比例。其中空洞的周边顶点个数(Nv)越多,、空洞像素点总个数(Np_all)越大或最大空洞像素点个数(Np_max)越大,则图像质量越不好。第二决策模块327可以通过获取与空洞相关的一个或多个参数,确定预测帧的质量以及选择与参数对应的真实帧与预测帧的预设显示比例。例如,空洞周边顶点个数(Nv)为15k时,对应的预设比例为4:1,也就是说,第二决策模块327在获取到空洞周边顶点个数(Nv)为15k时,确定图像帧流中的真实帧与预测帧的比例为4:1,该4:1指示每隔四个真实帧显示一个预测帧。具体地,第二决策模块可以基于每个空洞的位置信息,从缓存中获取空洞周边的顶点个数(Nv)。第二决策模块可以直接通过图像识别,获取每个空洞像素点总个数、空洞像素点总个数(Np_all)。
[0290] 进一步地,如果预测帧中的空洞对应的多个参数满足不同的预设比例,第二决策模块可以选择真实帧与预测帧之间预设比例最大的一个,以保证图像帧的显示质量。示例性地,如果预测帧N+1中各个参数中空洞周边顶点个数为11k(隔4帧)、空洞像素点总个数为25k(隔3帧)以及最大空洞像素点个数19k(隔3帧),则第二决策模块选择是隔4个真实帧替换一个预测帧,即真实帧与预测帧比例4:1。可以理解,本申请上下文的实施例中,在显示预测帧前,需要先丢弃该预测帧对应的真实帧。例如电子设备显示预测帧N+5时,需要先丢弃真实帧N+5的绘制指令流,即不执行真实帧N+5的绘制指令流。
[0291] 具体地,参见图9C和图11,对本申请所示图像帧的显示方法进行说明。在用户打开游戏应用时,电子设备以第一预设比例(如1:1)显示第一图像帧流中的真实帧与预测帧。在一个示例中,在估计模块326估计获得预测帧N+1时,第二决策模块327可以获取预测帧N+1中的空洞的相关参数,并基于这些相关参数确定与参数对应第二预设比例,若该第二预设比例小于或等于第一预设比例,则在真实帧N送显后,显示预测帧N+1,同时第二决策模块327继续以第一预设比例显示图像帧流。但是,若该第二预设比例大于第一预设比例,则说明预测图像帧N+1的图像质量不高,可丢弃预测帧N+1,并向拦截模块314发送指示消息,该指示消息包括第二决策模块327新确定的第二预设比例,使得拦截模块327基于第二预设比例,确定拦截真实帧的策略,以使得电子设备以第二预设比例显示第二图像帧流中的真实帧与预测帧。
[0292] 该方法中,通过第二决策模块327对每个预测帧校验,并动态地调整真实帧与预测帧的显示比例,保证了图像帧的显示质量。
[0293] 本申请实施例还提供了一种计算机可读存储介质,该计算机可读存储介质包括计算机指令,当所述计算机指令在所述电子设备上运行时,使得上述电子设备执行如本申请提供的显示方法。
[0294] 在本申请实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
[0295] 所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:快闪存储器、移动硬盘、只读存储器、随机存取存储器、磁碟或者光盘等各种可以存储程序代码的介质。
[0296] 以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何在本申请揭露的技术范围内的变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。