一种基于垂直同步信号的图像处理方法及电子设备与流程
未命名
10-09
阅读:122
评论:0
1.本技术实施例涉及图像处理及显示技术领域,尤其涉及一种基于垂直同步信号的图像处理方法及电子设备。
背景技术:
2.随着电子技术的发展,各类电子设备(如手机)的性能越来越好。消费者对电子产品的人机交互性能的要求也越来越高。其中,电子设备的显示内容在用户视觉上的连贯性是一项重要的人机交互性能。
3.而电子设备的高帧率显示也是一种发展趋势。例如,电子设备的帧率由60赫兹(hz)发展到90hz,再到120hz。而电子设备的帧率越高,则更容易出现丢帧的问题,则会导致电子设备的显示内容的不连贯,影响用户体验。因此,如何在高帧率的场景下,减少甚至避免电子设备显示图像时出现丢帧的现象是亟待解决的问题。
技术实现要素:
4.本技术实施例提供一种基于垂直同步信号的图像处理方法及电子设备,可以降低电子设备显示图像时出现丢帧的可能性,可以保证显示屏显示图像的流畅性,从而提升用户的视觉体验。
5.第一方面,本技术提供一种基于垂直同步信号的图像处理方法,该方法可以包括:电子设备响应于第一垂直同步信号,绘制一个或多个图层;电子设备响应于第二垂直同步信号,渲染电子设备绘制的图层。
6.例如,第一垂直同步信号可以是vsync_app信号,第二垂直同步信号可以是vsync_render信号。
7.一般而言,电子设备(如电子设备的render线程)是在电子设备(如电子设备的ui线程)绘制完一个或多个图层后,对该一个或多个图层进行图层渲染的。ui线程是基于vsync_app信号周期性地进行图层的绘制。也就是说,ui线程和render线程是基于vsync_app信号这一级流水进行图层的绘制和渲染的。这样,电子设备的显示屏显示图像出现丢帧现象的可能性较高。
8.而本技术中,则不要求ui线程和render线程必须在一个同步周期内完成每一帧图层的绘制和渲染。具体的,本技术实施例中,可以为电子设备的render线程增加一级流水(如vsync_render信号)。render线程不是在ui线程绘制完图层后,立即渲染该图层,而是响应于vsync_render信号渲染图层。
9.如此,只要ui线程响应于vsync_app信号,可以在一个同步周期2内完成每一帧图层的绘制;render线程响应于vsync_render信号,可以在一个同步周期内完成每一帧图层的渲染,电子设备的显示屏显示图像则不会出现丢帧的现象。采用本技术的方法,可以降低电子设备显示图像时出现丢帧的可能性,可以保证显示屏显示图像的流畅性,从而提升用户的视觉体验。
10.在第一方面的一种可能的设计方式中,如果电子设备满足以下至少一个预设条件,电子设备则可以响应于上述第二垂直同步信号,渲染一个或多个图层。其中,上述预设条件包括:电子设备的屏幕刷新率大于预设刷新率阈值;电子设备的当前应用是预设应用,预设应用不包括游戏应用;电子设备在第一统计周期的第一处理帧长大于预设单帧帧长。
11.其中,第一处理帧长是第一绘制帧长和第一渲染帧长之和,第一绘制帧长是电子设备绘制图层所需的时长,第一渲染帧长是电子设备渲染图层所需的时长。
12.一方面,如果电子设备的屏幕刷新率大于预设刷新率阈值,则表示电子设备处于高帧率场景。在高帧率场景下,电子设备显示图像时出现丢帧的可能性较高。因此,在该高帧率场景下,电子设备可以执行上述方法,以降低电子设备显示图像时出现丢帧的可能性,保证显示屏显示图像的流畅性。
13.另一方面,如果电子设备的当前应用不是游戏应用,则表示电子设备处于非游戏场景。一般而言,在非游戏场景下,电子设备对时延的要求较低。而采用上述方法,虽然可以降低电子设备显示图像时出现丢帧的可能性;但是,也延长了电子设备从绘制一帧图层-刷新显示该图层对应的图像帧的响应时延。因此,在上述非游戏场景电子设备可以执行上述方法,以降低电子设备显示图像时出现丢帧的可能性,保证显示屏显示图像的流畅性。
14.另一方面,如果电子设备在第一统计周期的第一处理帧长大于预设单帧帧长,则表示电子设备显示图像时出现丢帧的可能性较高。此时,电子设备可以执行上述方法,以降低电子设备显示图像时出现丢帧的可能性,保证显示屏显示图像的流畅性。
15.在第一方面的另一种可能的设计方式中,上述第二垂直同步信号(如vsync_render信号)与第一垂直同步信号(如vsync_app信号)同频率。
16.在第一方面的另一种可能的设计方式中,即使增加了vsync_render信号这一级流水,如果电子设备的ui线程绘制图层所需的时长较大,电子设备显示图像还是会出现丢帧的现象。为了减少电子设备的显示屏显示图像出现丢帧现象的可能性,电子设备可以调整上述vsync_render信号,使vsync_render信号相对于vsync_app信号延迟第一延迟时长。这样,可以提升上述ui线程在一个同步周期内完成图层绘制任务的可能性。
17.具体的,在电子设备响应于第二垂直同步信号,渲染一个或多个图层之后,本技术的方法还可以包括:电子设备调整第二垂直同步信号,使第二垂直同步信号(如vsync_render信号)相比于第一垂直同步信号(如vsync_app信号)延迟第一延迟时长。之后,电子设备可以响应于调整后的第二垂直同步信号(如vsync_render信号)渲染电子设备绘制的图层。
18.在第一方面的另一种可能的设计方式中,上述电子设备调整第二垂直同步信号,使第二垂直同步信号相比于第一垂直同步信号延迟第一延迟时长,可以包括:如果第二统计周期的第二绘制帧长大于预设单帧时长,电子设备则调整第二垂直同步信号,使第二垂直同步信号相比于第一垂直同步信号延迟第一延迟时长。其中,第一延迟时长大于或等于第二绘制帧长与预设单帧时长的差值。
19.其中,如果第二统计周期的第二绘制帧长大于预设单帧时长,则表示ui线程在一个同步周期内完成图层绘制任务的可能性较低,电子设备显示图像出现丢帧现象的可能性较高。此时,电子设备则调整第二垂直同步信号,使第二垂直同步信号相比于第一垂直同步信号延迟第一延迟时长,然后响应于调整后的第二垂直同步信号渲染电子设备绘制的图
层,可提升ui线程在一个同步周期内完成图层绘制任务的可能性。从而可以降低电子设备显示图像时出现丢帧的可能性,保证显示屏显示图像的流畅性。
20.在第一方面的另一种可能的设计方式中,即使增加了vsync_render信号这一级流水,如果电子设备的render线程渲染图层所需的时长较大,电子设备显示图像还是会出现丢帧的现象。为了减少电子设备的显示屏显示图像出现丢帧现象的可能性,电子设备可以调整上述vsync_render信号,使vsync_render信号相对于vsync_app信号提前第二延迟时长。这样,可以提升上述render线程在一个同步周期内完成图层绘制任务的可能性。
21.具体的,在电子设备响应于第二垂直同步信号,渲染一个或多个图层之后,本技术的方法还包括:电子设备调整第二垂直同步信号,使第一垂直同步信号相比于第二垂直同步信号提前第二延迟时长;电子设备响应于调整后的第二垂直同步信号渲染电子设备绘制的图层。
22.在第一方面的另一种可能的设计方式中,上述电子设备调整第二垂直同步信号,使第二垂直同步信号相比于第一垂直同步信号延迟第一延迟时长,可以包括:如果第二统计周期的第二绘制帧长小于预设单帧时长,第二统计周期的第二渲染时长大于预设单帧时长,电子设备则调整第二垂直同步信号,使第一垂直同步信号相比于第二垂直同步信号提前第二延迟时长。其中,第二延迟时长大于或等于预设单帧时长与第二绘制帧长的差值。
23.其中,如果第二统计周期的第二绘制帧长小于预设单帧时长,则表示ui线程在一个同步周期内完成图层绘制任务的可能性较高。在这种情况下,为了降低由于render线程在一个同步周期内完成图层渲染任务的可能性,电子设备可以调整第二垂直同步信号,使第一垂直同步信号相比于第二垂直同步信号提前第二延迟时长,然后响应于调整后的第二垂直同步信号渲染电子设备绘制的图层,可提升render线程在一个同步周期内完成图层渲染任务的可能性。从而可以降低电子设备显示图像时出现丢帧的可能性,保证显示屏显示图像的流畅性。
24.第二方面,本技术提供一种基于垂直同步信号的图像处理方法。该方法可以包括:电子设备响应于第一垂直同步信号绘制一个或多个图层,并渲染一个或多个图层;电子设备在预设单帧时长内渲染完一个或多个图层,电子设备响应于渲染完一个或多个图层后的第二个第二垂直同步信号对一个或多个图层进行图层合成;电子设备在预设单帧时长内未渲染完一个或多个图层,电子设备响应于渲染完一个或多个图层后的第一个第二垂直同步信号对一个或多个图层进行图层合成得到图像帧。
25.通过本技术的方案,电子设备针对一帧内完成绘制和渲染的图层,可以将该图层延后一帧进行图层合成。这样,可以延后一帧显示该图层对应的图像帧。如此,即使后续存在电子设备无法在一帧内完成绘制和渲染的情况,也可以留出一帧(即一个同步周期)的缓冲时间,可以降低电子设备显示图像时出现丢帧的可能性,保证显示屏显示图像的流畅性。
26.在第一方面的一种可能的设计方式中,如果电子设备满足以下至少一个预设条件,电子设备则可以响应于上述第二垂直同步信号,渲染一个或多个图层。其中,上述预设条件包括:电子设备的屏幕刷新率大于预设刷新率阈值;电子设备的当前应用是预设应用,预设应用不包括游戏应用;电子设备在第一统计周期的第一处理帧长大于预设单帧帧长。
27.其中,第一处理帧长是第一绘制帧长和第一渲染帧长之和,第一绘制帧长是电子设备绘制图层所需的时长,第一渲染帧长是电子设备渲染图层所需的时长。
28.一方面,如果电子设备的屏幕刷新率大于预设刷新率阈值,则表示电子设备处于高帧率场景。在高帧率场景下,电子设备显示图像时出现丢帧的可能性较高。因此,在该高帧率场景下,电子设备可以执行上述方法,以降低电子设备显示图像时出现丢帧的可能性,保证显示屏显示图像的流畅性。
29.另一方面,如果电子设备的当前应用不是游戏应用,则表示电子设备处于非游戏场景。一般而言,在非游戏场景下,电子设备对时延的要求较低。而采用上述方法,虽然可以降低电子设备显示图像时出现丢帧的可能性;但是,也延长了电子设备从绘制一帧图层-刷新显示该图层对应的图像帧的响应时延。因此,在上述非游戏场景电子设备可以执行上述方法,以降低电子设备显示图像时出现丢帧的可能性,保证显示屏显示图像的流畅性。
30.另一方面,如果电子设备在第一统计周期的第一处理帧长大于预设单帧帧长,则表示电子设备显示图像时出现丢帧的可能性较高。此时,电子设备可以执行上述方法,以降低电子设备显示图像时出现丢帧的可能性,保证显示屏显示图像的流畅性。
31.第三方面,本技术提供一种电子设备,该电子设备包括显示屏、存储器和一个或多个处理器。该显示屏、存储器和处理器耦合。该存储器用于存储计算机程序代码,计算机程序代码包括计算机指令。当上述处理器执行计算机指令时,电子设备执行如第一方面或第二方面及其任一种可能的设计方式所述的方法。
32.第四方面,本技术提供一种芯片系统,该芯片系统应用于包括显示屏的电子设备。该芯片系统包括一个或多个接口电路和一个或多个处理器。该接口电路和处理器通过线路互联。该接口电路用于从电子设备的存储器接收信号,并向处理器发送信号,信号包括存储器中存储的计算机指令。当处理器执行计算机指令时,电子设备执行如第一方面或第二方面及其任一种可能的设计方式所述的方法。
33.第五方面,本技术提供一种计算机存储介质,该计算机存储介质包括计算机指令,当该计算机指令在电子设备上运行时,使得电子设备执行如第一方面或第二方面及其任一种可能的设计方式所述的方法。
34.第六方面,本技术提供一种计算机程序产品,当该计算机程序产品在计算机上运行时,使得该计算机执行如第一方面或第二方面及其任一种可能的设计方式所述的方法。
35.可以理解地,上述提供的第三方面所述的电子设备,第四方面所述的芯片系统,第五方面所述的计算机存储介质,第六方面所述的计算机程序产品所能达到的有益效果,可参考如第一方面或第二方面及其任一种可能的设计方式中的有益效果,此处不再赘述。
附图说明
36.图1为本技术实施例提供的一种电子设备的硬件结构示意图;
37.图2为本技术实施例提供的一种垂直同步信号的示意图;
38.图3为本技术实施例提供的一种电子设备响应于触摸操作显示图像的软件处理流程示意图;
39.图4为常规技术中的一种电子设备进行图层绘制、渲染、合成以及图像帧显示的原理示意图;
40.图5为本技术实施例提供的一种不同帧率下的同步周期示意图;
41.图6为常规技术中的一种电子设备在高帧率场景下进行图层绘制、渲染、合成以及
图像帧显示的原理示意图;
42.图7为本技术实施例提供的一种基于垂直同步信号的图像处理方法流程图;
43.图8为本技术实施例提供的一种电子设备进行图层绘制、渲染、合成以及图像帧显示的原理示意图;
44.图9为本技术实施例提供的另一种基于垂直同步信号的图像处理方法流程图;
45.图10为本技术实施例提供的另一种电子设备进行图层绘制、渲染、合成以及图像帧显示的原理示意图;
46.图11为本技术实施例提供的另一种基于垂直同步信号的图像处理方法流程图;
47.图12为本技术实施例提供的另一种电子设备进行图层绘制、渲染、合成以及图像帧显示的原理示意图;
48.图13为本技术实施例提供的另一种电子设备进行图层绘制、渲染、合成以及图像帧显示的原理示意图;
49.图14为本技术实施例提供的另一种基于垂直同步信号的图像处理方法流程图;
50.图15为本技术实施例提供的另一种电子设备进行图层绘制、渲染、合成以及图像帧显示的原理示意图;
51.图16为本技术实施例提供的另一种基于垂直同步信号的图像处理方法流程图;
52.图17为本技术实施例提供的另一种电子设备进行图层绘制、渲染、合成以及图像帧显示的原理示意图;
53.图18为本技术实施例提供的一种电子设备的结构组成示意图;
54.图19为本技术实施例提供的一种芯片系统的结构组成示意图。
具体实施方式
55.以下,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。在本实施例的描述中,除非另有说明,“多个”的含义是两个或两个以上。
56.本技术实施例提供一种基于垂直同步信号的图像处理方法,该方法可以应用于包括显示屏(如触摸屏)的电子设备。通过该方法,可以降低电子设备显示图像时出现丢帧的可能性,可以保证显示屏显示图像的流畅性,从而提升用户的视觉体验。
57.示例性的,上述电子设备可以是手机、平板电脑、桌面型、膝上型、手持计算机、笔记本电脑、超级移动个人计算机(ultra-mobile personal computer,umpc)、上网本,以及蜂窝电话、个人数字助理(personal digital assistant,pda)、增强现实(augmented reality,ar)\虚拟现实(virtual reality,vr)设备等包括显示屏(如触摸屏)的设备,本技术实施例对该电子设备的具体形态不作特殊限制。
58.下面将结合附图对本技术实施例的实施方式进行详细描述。
59.请参考图1,为本技术实施例提供的一种电子设备100的结构示意图。如图1所示,电子设备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,摄像头293,显示屏194,以及用户标识模块(subscriber identification module,sim)卡接口195等。其中,传感器模块180可以包括压力传感器180a,陀螺仪传感器180b,气压传感器180c,磁传感器180d,加速度传感器180e,距离传感器180f,接近光传感器180g,指纹传感器180h,温度传感器180j,触摸传感器180k,环境光传感器180l,骨传导传感器180m等。
60.可以理解的是,本实施例示意的结构并不构成对电子设备100的具体限定。在另一些实施例中,电子设备100可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。
61.处理器110可以包括一个或多个处理单元,例如:处理器110可以包括应用处理器(application processor,ap),调制解调处理器,图形处理器(graphics processing unit,gpu),图像信号处理器(image signal processor,isp),控制器,存储器,视频编解码器,数字信号处理器(digital signal processor,dsp),基带处理器,和/或神经网络处理器(neural-network processing unit,npu)等。其中,不同的处理单元可以是独立的器件,也可以集成在一个或多个处理器中。
62.控制器可以是电子设备100的神经中枢和指挥中心。控制器可以根据指令操作码和时序信号,产生操作控制信号,完成取指令和执行指令的控制。
63.处理器110中还可以设置存储器,用于存储指令和数据。在一些实施例中,处理器110中的存储器为高速缓冲存储器。该存储器可以保存处理器110刚用过或循环使用的指令或数据。如果处理器110需要再次使用该指令或数据,可从所述存储器中直接调用。避免了重复存取,减少了处理器110的等待时间,因而提高了系统的效率。
64.在一些实施例中,处理器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)接口等。
65.可以理解的是,本实施例示意的各模块间的接口连接关系,只是示意性说明,并不构成对电子设备100的结构限定。在另一些实施例中,电子设备100也可以采用上述实施例中不同的接口连接方式,或多种接口连接方式的组合。
66.充电管理模块140用于从充电器接收充电输入。充电管理模块140为电池142充电的同时,还可以通过电源管理模块141为电子设备供电。
67.电源管理模块141用于连接电池142,充电管理模块140与处理器110。电源管理模块141接收电池142和/或充电管理模块140的输入,为处理器110,内部存储器121,外部存储器,显示屏194,摄像头293,和无线通信模块160等供电。在其他一些实施例中,电源管理模块141也可以设置于处理器110中。在另一些实施例中,电源管理模块141和充电管理模块140也可以设置于同一个器件中。
68.电子设备100的无线通信功能可以通过天线1,天线2,移动通信模块150,无线通信
organic light emitting diode,amoled),柔性发光二极管(flex light-emitting diode,fled),miniled,microled,micro-oled,量子点发光二极管(quantum dot light emitting diodes,qled)等。
76.其中,本技术实施例中的显示屏194可以是触摸屏。即该显示屏194中集成了触摸传感器180k。该触摸传感器180k也可以称为“触控面板”。也就是说,显示屏194可以包括显示面板和触摸面板,由触摸传感器180k与显示屏194组成触摸屏,也称“触控屏”。触摸传感器180k用于检测作用于其上或附近的触摸操作。触摸传感器180k检测到的触摸操作后,可以由内核层的驱动(如tp驱动)传递给上层,以确定触摸事件类型。可以通过显示屏194提供与触摸操作相关的视觉输出。在另一些实施例中,触摸传感器180k也可以设置于电子设备100的表面,与显示屏194所处的位置不同。
77.电子设备100可以通过isp,摄像头293,视频编解码器,gpu,显示屏194以及应用处理器等实现拍摄功能。isp用于处理摄像头293反馈的数据。摄像头293用于捕获静态图像或视频。数字信号处理器用于处理数字信号,除了可以处理数字图像信号,还可以处理其他数字信号。视频编解码器用于对数字视频压缩或解压缩。电子设备100可以支持一种或多种视频编解码器。这样,电子设备100可以播放或录制多种编码格式的视频,例如:动态图像专家组(moving picture experts group,mpeg)1,mpeg2,mpeg3,mpeg4等。
78.npu为神经网络(neural-network,nn)计算处理器,通过借鉴生物神经网络结构,例如借鉴人脑神经元之间传递模式,对输入信息快速处理,还可以不断的自学习。通过npu可以实现电子设备100的智能认知等应用,例如:图像识别,人脸识别,语音识别,文本理解等。
79.外部存储器接口120可以用于连接外部存储卡,例如micro sd卡,实现扩展电子设备100的存储能力。外部存储卡通过外部存储器接口120与处理器110通信,实现数据存储功能。例如将音乐,视频等文件保存在外部存储卡中。内部存储器121可以用于存储计算机可执行程序代码,所述可执行程序代码包括指令。处理器110通过运行存储在内部存储器121的指令,从而执行电子设备100的各种功能应用以及数据处理。例如,在本技术实施例中,处理器110可以通过执行存储在内部存储器121中的指令,内部存储器121可以包括存储程序区和存储数据区。其中,存储程序区可存储操作系统,至少一个功能所需的应用程序(比如声音播放功能,图像播放功能等)等。存储数据区可存储电子设备100使用过程中所创建的数据(比如音频数据,电话本等)等。此外,内部存储器121可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件,闪存器件,通用闪存存储器(universal flash storage,ufs)等。
80.电子设备100可以通过音频模块170,扬声器170a,受话器170b,麦克风170c,耳机接口170d,以及应用处理器等实现音频功能。例如音乐播放,录音等。
81.音频模块170用于将数字音频信息转换成模拟音频信号输出,也用于将模拟音频输入转换为数字音频信号。音频模块170还可以用于对音频信号编码和解码。扬声器170a,也称“喇叭”,用于将音频电信号转换为声音信号。受话器170b,也称“听筒”,用于将音频电信号转换成声音信号。麦克风170c,也称“话筒”,“传声器”,用于将声音信号转换为电信号。耳机接口170d用于连接有线耳机。
82.压力传感器180a用于感受压力信号,可以将压力信号转换成电信号。在一些实施
例中,压力传感器180a可以设置于显示屏194。压力传感器180a的种类很多,如电阻式压力传感器,电感式压力传感器,电容式压力传感器等。电容式压力传感器可以是包括至少两个具有导电材料的平行板。当有力作用于压力传感器180a,电极之间的电容改变。电子设备100根据电容的变化确定压力的强度。当有触摸操作作用于显示屏194,电子设备100根据压力传感器180a检测所述触摸操作强度。电子设备100也可以根据压力传感器180a的检测信号计算触摸的位置。在一些实施例中,作用于相同触摸位置,但不同触摸操作强度的触摸操作,可以对应不同的操作指令。本技术实施例中,电子设备100可以通过压力传感器180a获取用户的触摸操作的按压力度。
83.按键190包括开机键,音量键等。按键190可以是机械按键。也可以是触摸式按键。电子设备100可以接收按键输入,产生与电子设备100的用户设置以及功能控制有关的键信号输入。马达191可以产生振动提示。马达191可以用于来电振动提示,也可以用于触摸振动反馈。指示器192可以是指示灯,可以用于指示充电状态,电量变化,也可以用于指示消息,未接来电,通知等。sim卡接口195用于连接sim卡。sim卡可以通过插入sim卡接口195,或从sim卡接口195拔出,实现和电子设备100的接触和分离。电子设备100可以支持1个或n个sim卡接口,n为大于1的正整数。sim卡接口195可以支持nano sim卡,micro sim卡,sim卡等。
84.为了便于理解,本技术实施例这里介绍常规技术中所述的垂直同步信号,如垂直同步信号1、垂直同步信号2和垂直同步信号3。
85.垂直同步信号1:如vsync_app。该垂直同步信号1可以用于触发绘制一个或多个图层,并渲染绘制的图层。也就是说,上述垂直同步信号1可用于触发ui线程绘制一个或多个图层,并由render线程对ui线程绘制的一个或多个图层进行渲染。
86.垂直同步信号2:如vsync_sf。该垂直同步信号2可以用于触发对渲染的一个或多个图层进行图层合成得到图像帧。也就是说,上述垂直同步信号2可用于触发合成线程对render线程渲染的一个或多个图层进行图层合成得到图像帧。
87.垂直同步信号3:如hw_vsync。该垂直同步信号3可以用于触发硬件刷新显示图像帧。
88.其中,垂直同步信号3是由电子设备的显示屏驱动触发的一个硬件信号。本技术实施例中,垂直同步信号3(如hw_vsync)的信号周期t3是根据电子设备的显示屏的屏幕刷新率确定的。具体的,垂直同步信号3的信号周期t3是电子设备的显示屏(如lcd或oled)的屏幕刷新率的倒数。其中,电子设备的屏幕刷新率与该电子设备的帧率可以相同。电子设备的高帧率就是高屏幕刷新率。
89.例如,电子设备的显示屏的屏幕刷新率和帧率可以为60赫兹(hz)、70hz、75hz、80hz、90hz或者120hz等任一值。以帧率是60hz为例,上述垂直同步信号3的信号周期为1/60=0.01667秒(s)=16.667毫秒(ms)。以帧率是90hz为例,上述垂直同步信号3的信号周期为1/90=0.01111秒(s)=11.11毫秒(ms)。需要注意的是,其中,电子设备可能支持多个不同的帧率。电子设备的帧率可以在上述不同的帧率之间切换。本技术实施例中所述的帧率是电子设备当前所使用的帧率。即垂直同步信号3的信号周期是电子设备当前所使用的帧率的倒数。
90.需要注意的是,本技术实施例中的垂直同步信号3是一个周期性离散信号。例如,如图2所示,每间隔一个信号周期就会有一个由硬件驱动触发的垂直同步信号3。垂直同步
信号1和垂直同步信号2是基于垂直同步信号3产生的,即垂直同步信号3可以是垂直同步信号1和垂直同步信号2的信号源。或者,垂直同步信号1和垂直同步信号2与垂直同步信号3同步。故垂直同步信号1和垂直同步信号2的信号周期与垂直同步信号3的信号周期相同,且相位一致。例如,如图2所示,垂直同步信号1的信号周期t1,垂直同步信号2的信号周期t2,与垂直同步信号3的信号周期t3相同。并且,如图2所示,垂直同步信号1、垂直同步信号2,以及垂直同步信号3的相位一致。可以理解的是,实际实施过程中,垂直同步信号1、垂直同步信号2,以及垂直同步信号3之间可能会因为各种因素(如处理性能)存在一定的相位误差。需要注意的是,在理解本技术实施例的方法时,上述相位误差被忽略。
91.综上所述,上述垂直同步信号1、垂直同步信号2和垂直同步信号3均为周期性离散信号。例如,如图2所示,每间隔一个信号周期就会有一个垂直同步信号1,每间隔一个信号周期就会有一个垂直同步信号2,每间隔一个信号周期就会有一个垂直同步信号3。上述垂直同步信号1、垂直同步信号2和垂直同步信号3的信号周期都可以称为同步周期tz,t1=t2=t3=tz。也就是说,本技术实施例中的同步周期是电子设备的帧率的倒数。
92.需要注意的是,在不同的系统或者架构中,垂直同步信号的名称可能不同。例如,在一些系统或者架构中,上述用于触发绘制一个或多个图层的垂直同步信号(即垂直同步信号1)的名称可能不是vsync_app。但是,无论垂直同步信号的名称是什么,只要是具备类似功能的同步信号,符合本技术实施例提供的方法的技术思路,都应涵盖在本技术的保护范围之内。
93.为了便于理解,本技术实施例这里结合图3,以上述显示屏是触摸屏,用户在显示屏的操作是触摸操作为例,介绍从“用户手指在触摸屏输入触摸操作”到“触摸屏显示该触摸操作对应的图像”过程中,电子设备的软件处理流程。
94.如图3所示,电子设备可以包括:触控面板(touch panel,tp)/tp驱动(driver)10、input框架(即input framework)20、ui框架(即ui framework)30、display框架(即display framework)40和硬件显示模块50。
95.如图3所示,电子设备的软件处理流程可以包括以下步骤(1)-步骤(5)。步骤(1):tp ic/tp驱动10中的tp采集用户手指对电子设备的tp的触摸操作后,tp驱动向event hub上报相应的触摸事件。步骤(2):input框架20的input reader线程可以从event hub中读取触摸事件,然后向input dispatcher线程发送该触摸事件;由input dispatcher线程向ui框架30中的ui线程上传该触摸事件。步骤(3):ui框架30中的ui线程(如do frame)绘制该触摸事件对应的一个或多个图层;渲染(render)线程(如draw frame)对一个或多个图层进行图层渲染。步骤(4):display框架40中的合成线程(surface flinger)对绘制的一个或多个图层(即渲染后的一个或多个图层)进行图层合成得到图像帧。步骤(5):硬件显示模块50的液晶显示面板(liquid crystal display,lcd)驱动可接收合成的图像帧,由lcd显示合成的图像帧。lcd显示图像帧后,lcd显示的图像可被人眼感知。
96.一般而言,响应于用户对tp的触摸操作或者ui事件,ui框架可以在垂直同步信号1到来后,调用ui线程绘制触控事件对应的一个或多个图层,再调用render线程以对该一个或多个图层进行渲染;然后,硬件合成(hardware composer,hwc)可以在垂直同步信号2到来后,调用合成线程对绘制的一个或多个图层(即渲染后的一个或多个图层)进行图层合成得到图像帧;最后,硬件显示模块可以在垂直同步信号3到来后,在lcd刷新显示上述图像
帧。其中,上述ui事件可以是由用户对tp的触摸操作触发的。或者,该ui事件可以是由电子设备自动触发的。例如,电子设备的前台应用自动切换画面时,可以触发上述ui事件。前台应用是电子设备的显示屏当前显示的界面对应的应用。
97.其中,tp可以周期性检测用户的触摸操作。tp检测到触摸操作后,可以唤醒上述垂直同步信号1和垂直同步信号2,以触发ui框架基于垂直同步信号1进行图层绘制和渲染,硬件合成hwc基于垂直同步信号2进行图层合成。其中,tp检测触摸操作的检测周期与垂直同步信号3(如hw_vsync)的信号周期t3相同。
98.需要注意的是,ui框架是基于垂直同步信号1周期性的进行图层绘制和渲染的;硬件合成hwc是基于垂直同步信号2周期性的进行图层合成的;lcd是基于垂直同步信号3周期性的进行图像帧刷新的。
99.示例性的,本技术实施例这里,以上述垂直同步信号1是vsync_app信号,垂直同步信号2是vsync_sf信号,垂直同步信号3是hw_vsync信号为例,介绍常规技术中电子设备执行绘制、渲染、合成和图像帧显示的流程。
100.例如,如图4所示,电子设备的ui线程响应于t1时刻的vsync_app信号,执行“绘制1”绘制图层1,然后由render线程执行“渲染1”渲染该图层1;电子设备的合成线程响应于t2时刻的vsync_sf信号,执行“图像帧合成1”对上述图层1进行图层合成得到图像帧1;电子设备的lcd响应于t3时刻的hw_vsync信号,执行“图像帧显示1”刷新显示上述图像帧1。
101.又例如,如图4所示,电子设备的ui线程响应于t2时刻的vsync_app信号,执行“绘制2”绘制图层2,然后由render线程执行“渲染2”渲染该图层2;电子设备的合成线程响应于t3时刻的vsync_sf信号,执行“图像帧合成2”对上述图层2进行图层合成得到图像帧2;电子设备的lcd响应于t4时刻的hw_vsync信号,执行“图像帧显示2”刷新显示上述图像帧2。
102.其中,电子设备响应于上述vsync_app信号、vsync_sf信号和hw_vsync信号,进行图层的绘制、渲染、合成和刷新显示图像帧的过程中,可能会出现丢帧的现象。具体的,显示屏刷新显示图像帧的过程中,可能会显示一帧空白图像。这样,会影响显示屏显示图像的连贯性和流畅性,从而影响用户的视觉体验。
103.例如,如图6所示,响应于ta时刻的vsync_app信号,电子设备的ui线程执行“绘制1”绘制图层1,由render线程执行“渲染1”渲染该图层1;电子设备的合成线程响应于tb时刻的vsync_sf信号,执行“图像帧合成1”对上述图层1进行图层合成得到图像帧1;电子设备的lcd响应于tc时刻的hw_vsync信号,执行“图像帧显示1”刷新显示上述图像帧1。
104.如图6所示,响应于tb时刻的vsync_app信号,电子设备的ui线程执行“绘制2”绘制图层2,由render线程执行“渲染2”渲染该图层2。如图6所示,由于“渲染2”所需时长较大,导致“绘制2”和“渲染2”无法在一个同步周期(如tb时刻到tc时刻这一同步周期)内完成。即电子设备在tc时刻的vsync_sf信号到来之前,未完成“渲染2”;因此,电子设备只能等待td时刻的hw_vsync信号到来,响应于td时刻的vsync_sf信号,执行“图像帧合成2”。如此,电子设备也只能等待te时刻的垂直同步信号3到来,响应于te时刻的垂直同步信号3,电子设备执行“图像帧显示2”。
105.同样的,ui线程绘制图层所花费的时长较大,也会导致“绘制”和“渲染”无法在一个同步周期内完成(附图未示出)。
106.由图6可知,在td时刻-te时刻这一同步周期,显示屏显示图像出现丢帧现象,即显
示屏会显示一帧空白图像。而通过本技术实施例的方法,可以避免显示图像出现丢帧现象,以避免显示屏显示一帧空白图像。也就是说,通过本技术实施例的方法可以降低电子设备显示图像时出现丢帧的可能性,可以保证显示屏显示图像的流畅性,从而提升用户的视觉体验。
107.需要说明的是,导致电子设备的显示屏显示图像出现丢帧现象的原因不仅是ui线程绘制图层所花费的时长较大或者render线程渲染图层所花费的时长较大,还可能是因为电子设备的帧率和屏幕刷新率较高。具体的,相比于低帧率场景,在电子设备的高帧率场景下,电子设备在一秒内所显示的图像帧的帧数会增多。这样,vsync_app信号、vsync_sf信号和hw_vsync信号的信号周期(即上述同步周期)则会变小。如果要保证电子设备的显示屏显示图像不出现丢帧的现象,ui线程和render线程则需要在上述变小的信号周期内完成图层的绘制和渲染。
108.例如,如图5或图4所示,当电子设备的帧率为60hz时,vsync_app信号、vsync_sf信号和hw_vsync信号的信号周期t
z1
=16.66ms。如果ui线程和render线程可以在该16.66ms内完成每一帧图层的绘制和渲染,电子设备的显示屏显示图像则不会出现丢帧的现象。
109.又例如,如图5或图6所示,当电子设备的帧率提高至120hz后,vsync_app信号、vsync_sf信号和hw_vsync信号的信号周期t
z2
=8.33ms。如果ui线程和render线程可以在该8.33ms内完成每一帧图层的绘制和渲染,电子设备的显示屏显示图像则不会出现丢帧的现象。
110.可以理解的是,相比于在16.66ms内完成一帧图层的绘制和渲染,电子设备在8.33ms内完成一帧图层的绘制和渲染的难度较大。因此,在高帧率的场景下,电子设备的显示屏显示图像出现丢帧现象的可能性较高。
111.目前的一些方案中,为了降低电子设备显示图像时出现丢帧的可能性,保证显示屏显示图像的流畅性,提升了电子设备的cpu和gpu的工作频率。其中,提升电子设备的cpu和gpu的工作频率,可以提升ui线程和render线程的处理速度,从而可以减少ui线程和render线程绘制图层和渲染图层所花费的时长,进而可以降低电子设备显示图像时出现丢帧的可能性。但是,提升电子设备的cpu和gpu的工作频率,会增加电子设备的功耗,减少电子设备的续航时间。由此可见,通过提升工作频率的方式降低丢帧率的方案,能效比较低。
112.本技术实施例提供一种基于垂直同步信号的图像处理方法,可以在不增加电子设备功耗的前提下,降低电子设备显示图像时出现丢帧的可能性,保证显示屏显示图像的流畅性。
113.示例性的,本技术实施例提供的方法的执行主体可以是用于处理图像的装置。该装置可以是上述电子设备中的任一种(例如,该装置可以为图1所示的电子设备100)。或者,该装置还可以为电子设备的中央处理器(central processing unit,cpu),或者电子设备中的用于执行本技术实施例提供的方法的控制模块。本技术实施例中以上述电子设备(如手机)执行图像处理方法为例,介绍本技术实施例提供的方法。
114.实施例(一)
115.本技术实施例提供一种基于垂直同步信号的图像处理方法。该方法可以应用于包括显示屏的电子设备。在该实施例中,电子设备可以为电子设备的render线程增加一级流水,称为垂直同步信号1
′
(如vsync_render信号)。render线程响应于该vsync_render信号
渲染图层。在该实施例中,垂直同步信号1(如vsync_app信号)是第一垂直同步信号,垂直同步信号1
′
(如vsync_render信号)是第二垂直同步信号。如图7所示,该基于垂直同步信号的图像处理方法可以包括s701-s704。
116.s701、电子设备响应于vsync_app信号,绘制一个或多个图层。
117.s702、电子设备响应于vsync_render信号,渲染该一个或多个图层。
118.一般而言,电子设备的render线程是在ui线程绘制完一个或多个图层后,对该一个或多个图层进行图层渲染的;ui线程是基于vsync_app信号周期性地进行图层的绘制。也就是说,ui线程和render线程是基于vsync_app信号这一级流水进行图层的绘制和渲染的。
119.例如,如图6所示,响应于ta时刻的vsync_app信号,电子设备的ui线程执行“绘制1”绘制图层1;ui线程执行完“绘制1”后,由render线程执行“渲染1”渲染该图层1。又例如,如图6所示,响应于tb时刻的vsync_app信号,电子设备的ui线程执行“绘制2”绘制图层2,ui线程执行完“绘制2”后,由render线程执行“渲染2”渲染该图层2。
120.采用图6的方案,如果ui线程和render线程可以在一个同步周期t
z2
内完成每一帧图层的绘制和渲染,电子设备的显示屏显示图像则不会出现丢帧的现象。但是,在高帧率的场景下,同步周期t
z2
较小,电子设备在一个同步周期t
z2
内完成一帧图层的绘制和渲染的可能性较低。这样,电子设备的显示屏显示图像则会出现丢帧的现象。
121.而本技术实施例中,则不要求ui线程和render线程必须在一个同步周期t
z2
内完成每一帧图层的绘制和渲染。具体的,本技术实施例中,可以为电子设备的render线程增加一级流水,称为vsync_render信号。render线程不是在ui线程绘制完图层后,立即渲染该图层,而是响应于vsync_render信号渲染图层。其中,上述vsync_render信号与vsync_app信号同频率。
122.在本技术实施例中,只要ui线程响应于vsync_app信号,可以在一个同步周期t
z2
内完成每一帧图层的绘制;render线程响应于vsync_render信号,可以在一个同步周期t
z2
内完成每一帧图层的渲染,电子设备的显示屏显示图像则不会出现丢帧的现象。
123.例如,如图8所示,响应于ta时刻的vsync_app信号,电子设备的ui线程执行“绘制1”绘制图层1;响应于tb时刻的vsync_render信号,电子设备的render线程执行“渲染1”渲染图层1。如此,只要ui线程可以在ta时刻-tb时刻这一同步周期t
z2
内完成“绘制1”,render线程可以在tb时刻-tc时刻这一同步周期t
z2
内完成“渲染1”,电子设备的显示屏显示的图像就不会因为电子设备绘制和渲染图层1超时,而出现丢帧的现象。
124.又例如,如图8所示,响应于tb时刻的vsync_app信号,电子设备的ui线程执行“绘制2”绘制图层2;响应于tc时刻的vsync_render信号,电子设备的render线程执行“渲染2”渲染图层2。如此,只要ui线程可以在tb时刻-tc时刻这一同步周期t
z2
内完成“绘制2”,render线程可以在tc时刻-td时刻这一同步周期t
z2
内完成“渲染2”,电子设备的显示屏显示的图像就不会因为电子设备绘制和渲染图层2超时,而出现丢帧的现象。
125.本技术实施例中,电子设备可以在sf缓存队列(buffer)中缓存渲染后的图层。该sf buffer可以以队列的方式,按照先进先出的原则缓存渲染后的图层。电子设备响应于vsync_sf信号,可以对sf buffer中的图层进行图层合成得到图像帧;响应于hw_vsync信号,刷新显示图像帧。具体的,在上述s702之后,本技术实施例的方法还可以包括s703-s704。
126.s703、电子设备响应于vsync_sf信号,对渲染的图层进行图层合成得到图像帧。
127.s704、电子设备响应于hw_vsync信号,刷新显示图像帧。
128.例如,如图8所示,响应于tc时刻的vsync_sf信号,电子设备的合成线程执行“图像帧合成1”得到图像帧1;响应于td时刻的hw_vsync信号,电子设备的lcd执行“图像帧显示1”刷新显示该图像帧1。
129.又例如,如图8所示,响应于td时刻的vsync_sf信号,电子设备的合成线程执行“图像帧合成2”得到图像帧1;响应于te时刻的hw_vsync信号,电子设备的lcd执行“图像帧显示2”刷新显示该图像帧2。
130.需要注意的是,在上述一个或多个第一图层仅包括一个图层的情况下,电子设备对这一个图层进行图层合成,具体包括:电子设备对这一个图层进行格式转换,将这一个图层转换为图像帧。在上述一个或多个图层包括多个图层的情况下,电子设备对该多个图层进行图层合成,具体包括:电子设备对该多个图层进行图层合成,得到图像帧。
131.本技术实施例中,增加vsync_render信号这一级流水,可以给电子设备的ui线程留出更多的时间进行图层绘制,给render线程留出更多的时间进行图层渲染。例如,如图6所示,常规技术的方案中,ui线程绘制图层和render线程渲染图层在一个同步周期t
z2
内进行。如图8所示,本技术实施例的方法中,ui线程绘制图层在一个同步周期t
z2
内进行,render线程渲染图层在另一个同步周期t
z2
内进行。
132.其中,电子设备的ui线程在一个同步周期t
z2
内绘制完一帧图层的可能性,以及render线程在一个同步周期t
z2
内渲染完一帧图层的可能性,高于ui线程和render线程在一个同步周期t
z2
内完成一帧图层的绘制和渲染的可能性。例如,如图8所示,虽然ui线程执行“绘制2”所需的时长较大,但是ui线程还是可以在一个同步周期t
z2
内“绘制2”;虽然render线程执行“渲染2”所需的时长较大,但是render线程还是可以在一个同步周期t
z2
内“渲染2”。如图8所示,电子设备显示图像没有出现丢帧的现象。综上所述,采用本技术实施例的方法,可以降低电子设备显示图像时出现丢帧的可能性,可以保证显示屏显示图像的流畅性,从而提升用户的视觉体验。
133.并且,采用本技术实施例的方法,电子设备不需要提升电子设备的cpu和gpu的工作频率。也就是说,采用本技术实施例的方法,可以在不增加电子设备的功耗的前提下,降低电子设备显示图像时出现丢帧的可能性,保证显示屏显示图像的流畅性。
134.实施例(二)
135.其中,电子设备可以选择采用常规技术的方案进行图层绘制、渲染、合成以及图像帧显示,也可以选择执行上述s701-s704进行图层绘制、渲染、合成以及图像帧显示。也就是说,电子设备并不会在所有场景下,都会执行上述s701-s704。本技术实施例这里介绍电子设备执行上述s701-s704进行图层绘制、渲染、合成以及图像帧显示的具体场景或条件。
136.在一种实现方式中,电子设备可以在高帧率场景下,执行上述s701-s704。由上述实施例的描述可知:在高帧率场景下,电子设备显示图像时出现丢帧的可能性较高。因此,在该高帧率场景下,电子设备可以执行s701-s704,以降低电子设备显示图像时出现丢帧的可能性,保证显示屏显示图像的流畅性。
137.其中,电子设备可以根据电子设备的屏幕刷新率,判断该电子设备是否处于高帧率场景。具体的,电子设备可以判断该电子设备的屏幕刷新率是否大于预设刷新率阈值。如
果电子设备的屏幕刷新率大于预设刷新率阈值,电子设备则可以执行s701-s704。如果电子设备的屏幕刷新率小于或等于预设刷新率阈值,电子设备则可以执行常规技术的方法。该常规技术的方法可以包括s701
′
、s703和s704。s701
′
:电子设备响应于vsync_app信号,绘制一个或多个图层,并渲染该一个或多个图层。
138.例如,上述预设刷新率阈值可以90hz或者120hz等任一值。该预设刷新率阈值可以预先配置在电子设备中;或者,该预设刷新率阈值可以由用户在电子设备中设置。
139.在另一种实现方式中,电子设备可以在非游戏场景下,执行上述s701-s704。一般而言,电子设备在游戏场景下要求电子设备低时延。即电子设备在游戏场景下对时延的要求较高。而对比如图6所示的常规技术的方案和图8所示的本技术实施例的方案可知:采用本技术实施例的方法,虽然可以降低电子设备显示图像时出现丢帧的可能性;但是,也延长了电子设备从绘制一帧图层-刷新显示该图层对应的图像帧的响应时延。
140.例如,如图6所示,电子设备从ta时刻执行“绘制1”开始,到tc时刻可以执行“图像帧显示1”刷新显示图像帧1,电子设备从绘制图层1到刷新显示图像帧1的响应时延为ta时刻-tc时刻这两个同步周期t
z2
。如图8所示,电子设备从ta时刻执行“绘制1”开始,到td时刻可以执行“图像帧显示1”刷新显示图像帧1,电子设备从绘制图层1到刷新显示图像帧1的响应时延为ta时刻-td时刻这三个同步周期t
z2
。
141.因此,在非游戏场景(即时延要求较低)下,电子设备可以执行s701-s704,以降低电子设备显示图像时出现丢帧的可能性,保证显示屏显示图像的流畅性。
142.具体的,电子设备可以在电子设备的当前应用是预设应用时,执行上述s701-s704。该预设应用不包括游戏应用。在电子设备的当前应用是游戏应用时,电子设备则可以执行s701
′
、s703和s704。
143.在另一种实现方式中,相比于上述实施例(一),电子设备可以在执行s701-s704之前,先预测电子设备进行图层绘制和渲染所需的时长是否大于预设单帧帧长(该预设单帧帧长小于或等于上述同步周期)。如果预测得到电子设备进行图层绘制和渲染所需的时长大于预设单帧帧长,则表示电子设备在一个同步周期完成图层的绘制和渲染的可能性较低,电子设备显示图像出现丢帧的可能性较高。在这种情况下,电子设备可以执行上述s701-s704。具体的,如图9所示,在上述s701-s704之前,本技术实施例的方法还可以包括s901。
144.s901、电子设备判断第一统计周期的第一处理帧长是否大于预设单帧帧长。
145.其中,上述第一处理帧长是第一绘制帧长和第一渲染帧长之和。第一绘制帧长是电子设备进行图层绘制所需的时长。第一渲染帧长是电子设备对绘制的图层进行图层渲染所需的时长。
146.示例性的,电子设备可以周期性统计每一个统计周期内的第一处理帧长。该第一统计周期是当前时刻的前一个统计周期。例如,本技术实施例中的统计周期可以为1s、2s、3s或者5s等任一时长。例如,电子设备可以执行s901a-s901b,以获取第一统计周期的第一处理帧长。
147.s901a、电子设备获取第一统计周期的一个或多个第二处理帧长,每个第二处理帧长是第一绘制帧长和第一渲染帧长之和。
148.其中,电子设备可以统计第一统计周期内每次绘制图层所需的时长(即第一绘制
帧长)和渲染该图层所需的时长(即第一渲染帧长),计算第一绘制帧长和对应第一渲染帧长之和,得到每次进行图层绘制和渲染所需的总时长(即第二处理帧长)。
149.例如,假设电子设备在第一统计周期内进行了3次图层绘制和渲染成。电子设备绘制图层a所需的时长为第一绘制帧长a,电子设备对图层a进行渲染所需的时长为第一渲染帧长a。电子设备绘制图层b所需的时长为第一绘制帧长b,电子设备对图层b进行渲染所需的时长为第一渲染帧长b。电子设备绘制图层c所需的时长为第一绘制帧长c,电子设备对图层a进行渲染所需的时长为第一渲染帧长c。电子设备可以计算第一绘制帧长a与第一渲染帧长a之和得到第二处理帧长a;计算第一绘制帧长b与第一渲染帧长bb之和得到第二处理帧长b;计算第一绘制帧长c与第一渲染帧长c之和得到第二处理帧长c。如此,电子设备便可以得到第一统计周期内的三个第二处理帧长。
150.s901b、电子设备根据一个或多个第二处理帧长,确定第一处理帧长。
151.在一种实现方式中,一个或多个第二处理帧长中仅包括一个第二处理帧长。在这种实现方式中,上述第一处理帧长等于这一个第二处理帧长。
152.在一种实现方式中,一个或多个第二处理帧长中可以包括多个第二处理帧长。第一处理帧长是上述多个第二处理帧长的平均值。结合上述实例,第一统计周期的第一处理帧长可以为第二处理帧长a、第二处理帧长b和第二处理帧长c的平均值。
153.在另一种实现方式中,一个或多个第二处理帧长中可以包括多个第二处理帧长。第一处理帧长是上述多个第二处理帧长中最大的第二处理帧长。结合上述实例,第一统计周期的第一处理帧长可以为上述第二处理帧长a、第二处理帧长b和第二处理帧长c中的最大值。
154.其中,本技术实施例中的预设单帧帧长小于或等于同步周期。例如,该预设单帧帧长可以是上述同步周期与预设时延阈值的差值。
155.可以理解,s901之后,如果第一统计周期(即当前时刻的前一个统计周期)的第一处理帧长大于预设单帧帧长,则表示在第一统计周期电子设备不能在一个同步周期完成图层的绘制和渲染。那么在该第一统计周期的下一个统计周期(即当前时刻所在的统计周期),电子设备在一个同步周期完成图层的绘制和渲染的可能性则较低,电子设备显示图像出现丢帧现象的可能性较高。在这种情况下,电子设备则可以执行s701-s704,以降低电子设备显示图像时出现丢帧现象的可能性,可以保证显示屏显示图像的流畅性。
156.本技术实施例中,电子设备可以在预测得到电子设备进行图层绘制和渲染所需的时长大于预设单帧帧长的情况下,增加vsync_render信号这一级流水,响应于vsync_render绘制图层。这样,电子设备在一个同步周期完成图层的绘制和渲染的可能性较低的情况下,执行s701-s704,这样可以降低电子设备显示图像时出现丢帧现象的可能性,可以保证显示屏显示图像的流畅性。
157.需要注意的是,本技术实施例中,电子设备在一个同步周期进行图层的绘制和渲染具体可以包括:响应于vsync_app信号,在第一同步周期绘制一个或多个图层,并渲染一个或多个图层。该第一同步周期是vsync_app信号对应的同步周期。例如,该第一同步周期可以为图6所示的ta时刻至tb时刻这一同步周期t
z2
。
158.如果第一统计周期(即当前时刻的前一个统计周期)的第一处理帧长小于或等于预设单帧帧长,则表示在第一统计周期电子设备可以在一个同步周期完成图层的绘制和渲
染。那么在该第一统计周期的下一个统计周期(即当前时刻所在的统计周期),电子设备在一个同步周期完成图层的绘制、渲染和合成的可能性则较高,电子设备显示图像出现丢帧现象的可能性较低。
159.需要说明的是,在第一统计周期的第一处理帧长小于或等于预设单帧帧长的情况下,电子设备显示图像出现丢帧的可能性较低;因此,不需要执行s701-s704降低电子设备显示图像出现丢帧的可能性。并且,由上述实施例可知:在第一统计周期的第一处理帧长小于或等于预设单帧帧长的情况下,如果电子设备执行s701-s704,则会延长电子设备从绘制一帧图层-刷新显示该图层对应的图像帧的响应时延。因此,在这种情况下,电子设备可以执行s701
′
、s703和s704。具体的,电子设备执行s701
′
,可以响应于vsync_app信号,绘制一个或多个图层,并渲染该一个或多个图层。
160.实施例(三)
161.电子设备执行上述实施例(一)或实施例(二)的方法,即使增加了vsync_render信号这一级流水,如果电子设备的ui线程绘制图层所需的时长较大,电子设备显示图像还是会出现丢帧的现象。
162.例如,如图10所示,电子设备执行s701,响应于ta时刻的vsync_app信号,ui线程可以执行“绘制a”绘制图层a;电子设备执行s702,响应于tb时刻的vsync_render信号,render线程可以执行“渲染a”渲染图层a;电子设备执行s703,响应于tc时刻的vsync_sf信号,合成线程可以执行“图像帧合成a”渲染图层a;电子设备执行s704,响应于td时刻的hw_vsync信号,lcd可以执行“图像帧显示a”刷新显示图像帧a。
163.如图10所示,电子设备执行s701,响应于tb时刻的vsync_app信号,ui线程可以执行“绘制b”绘制图层b。如图10所示,由于“绘制b”所需时长较大,导致ui线程无法在tb时刻-tc时刻这一个同步周期t
z2
绘制完图层b,即ui线程无法在tc时刻之外完成“绘制b”;因此,电子设备的render线程不能响应于tc时刻的vsync_render信号执行“渲染b”渲染图层b,只能等待td时刻的vsync_render信号到来。电子设备执行s702,响应于td时刻的vsync_render信号,执行“渲染b”。之后,电子设备执行s703,响应于te时刻的vsync_sf信号,电子设备的合成线程执行“图像帧合成b”;电子设备执行s704,响应于tf时刻的hw_vsync信号,电子设备的lcd执行“图像帧显示b”刷新显示图像帧b。由图10可知,在te时刻-tf时刻这一同步周期,显示屏显示图像出现丢帧现象,即显示屏会显示一帧空白图像。
164.为了减少图10所示的电子设备的显示屏显示图像出现丢帧现象的可能性,电子设备可以调整上述vsync_render信号,使vsync_render信号相对于vsync_app信号延迟第一延迟时长。这样,可以提升上述ui线程在一个同步周期内完成图层绘制任务的可能性。如此,便可以降低电子设备显示图像时出现丢帧的可能性,保证显示屏显示图像的流畅性。
165.具体的,如图11所示,本技术实施例的方法可以包括“调整信号前的处理流程”、“调整信号的流程”和“调整信号后的处理流程”。如图11所示,该“调整信号前的处理流程”可以包括上述s701-s704;“调整信号的流程”可以包括s1101;“调整信号后的处理流程”可以包括s1102-s1105。
166.s1101、电子设备调整vsync_render信号,使vsync_render信号相对于vsync_app信号延迟第一延迟时长。
167.其中,第一延迟时长的具体取值可以参考本技术实施例(四)中的详细描述,本申
请实施例这里不予赘述。
168.结合图10,如图12所示,假设电子设备在t
x
时刻执行了s1101。那么,在图12所示的t
x
时刻之后,vsync_render信号相对于vsync_app信号延迟第一延迟时长offset_1。而在t
x
时刻之前,vsync_render信号相对于vsync_app信号的延迟时间为零。
169.例如,如图12所示,在t
x
时刻之前的ta时刻和tb时刻,vsync_render信号、vsync_app信号、vsync_sf信号和hw_vsync信号同时到达。
170.如图12所示,在t
x
时刻之后的tc时刻,vsync_app信号、vsync_sf信号和hw_vsync信号同时到达,但vsync_render信号在tc时刻之后的t
c1
时刻到达,t
c1
时刻落后于tc时刻offset_1;在t
x
时刻之后的td时刻,vsync_app信号、vsync_sf信号和hw_vsync信号同时到达,但vsync_render信号在td时刻之后的t
d1
时刻到达,t
d1
时刻落后于td时刻offset_1;在t
x
时刻之后的te时刻,vsync_app信号、vsync_sf信号和hw_vsync信号同时到达,但vsync_render信号在te时刻之后的t
e1
时刻到达,t
e1
时刻落后于te时刻offset_1;在t
x
时刻之后的tf时刻,vsync_app信号、vsync_sf信号和hw_vsync信号同时到达,但vsync_render信号在tf时刻之后的t
f1
时刻到达,t
f1
时刻落后于tf时刻offset_1。
171.需要说明的是,上述vsync_render信号相对于vsync_app信号延迟第一延迟时长,可以理解为:vsync_render信号相对于hw_vsync信号延迟第一延迟时长。
172.具体的,hw_vsync是由电子设备的显示屏驱动触发的一个硬件信号。每间隔一个同步周期就会有一个由硬件驱动触发的hw_vsync信号。常规技术中,vsync_app信号和vsync_sf信号是基于hw_vsync信号产生的。因此,vsync_app信号和vsync_sf信号与hw_vsync信号同相位,即vsync_app信号和vsync_sf信号相比于hw_vsync信号的延迟时间为零。因此,vsync_render信号相对于vsync_app信号延迟第一延迟时长,可以理解为:vsync_render信号相对于hw_vsync信号延迟第一延迟时长。电子设备可以基于hw_vsync信号(即硬件信号)调整vsync_render信号,使vsync_render信号相对于hw_vsync信号延迟第一延迟时长。
173.需要注意的是,本技术实施例所述的“vsync_render信号相对于vsync_app信号的延迟时间”为:从任一个vsync_app信号到达的时刻开始,在一个同步周期内到达的vsync_render信号相对于该vsync_render信号的延迟时间。
174.例如,如图12所示,在t
x
时刻之后,“vsync_render信号相对于vsync_app信号或者hw_vsync信号的延迟时间”可以为:tc时刻的vsync_app信号或者hw_vsync信号与t
c1
时刻的vsync_render信号到达时刻的时间差,即tc时刻到t
c1
时刻的时长;或者,td时刻的vsync_app信号或者hw_vsync信号与t
d1
时刻的vsync_render信号到达时刻的时间差,即td时刻到t
d1
时刻的时长。
175.需要注意的是,调整vsync_render信号,使vsync_render信号相比于vsync_app信号延迟第一延迟时长后,vsync_render信号与vsync_app信号便会存在相位差。调整vsync_render信号,使vsync_render信号与vsync_app信号存在相位差后,vsync_render信号相对于vsync_app信号便会有一定的延迟时间(如第一延迟时长)。其中,调整vsync_render信号,使vsync_render信号与vsync_app信号存在相位差,该相位差转换为时长后可以表现为vsync_render信号延迟第一延迟时长。
176.s1102、电子设备响应于vsync_app信号,绘制一个或多个图层。
177.s1103、电子设备响应于调整后的vsync_render信号,渲染该一个或多个图层。
178.s1104、电子设备响应于vsync_sf信号,对渲染的图层进行图层合成得到图像帧。
179.s1105、电子设备响应于hw_vsync信号,刷新显示图像帧。
180.例如,如图12所示,电子设备执行s1102,电子设备的ui线程响应于tb时刻的vsync_app信号执行“绘制b”绘制图层b;电子设备的render线程响应于t
c1
时刻的vsync_render信号执行“渲染b”渲染图层b;电子设备的合成线程响应于td时刻的vsync_sf信号执行“图像帧合成b”得到图像帧b;电子设备的lcd响应于te时刻的hw_vsync信号执行“图像帧显示b”刷新显示图像帧b。其中,电子设备执行图12所示的“绘制c”、“渲染c”、“图像帧合成c”和“图像帧显示c”的方式,本技术实施例这里不予赘述。
181.可以理解的是,电子设备执行s1101之后,vsync_render信号相对于vsync_app信号延迟第一延迟时长offset_1,如t
c1
时刻的vsync_render信号相比于tc时刻的vsync_app信号延迟offset_1。这样,在t
c1
时刻的vsync_render信号到来之前,ui线程可以有更多的时间(如tb时刻-t
c1
时刻这段时间)执行“绘制b”。其中,tb时刻-t
c1
时刻这段时间的时长为t
z2
+offset_1。如此,即使ui线程无法在一个同步周期t
z2
内完成“绘制b”,render线程也可以尽快执行“渲染b”渲染图层b(如在t
c1
时刻执行“渲染b”),而不需要等待一个同步周期t
z2
后的下一个vsync_render信号(如图10所示的td时刻的vsync_render信号)再执行“渲染b”。因此,如图12所示,电子设备的显示屏显示图像不会出现丢帧现象。由此可见,采用本实施例的方法,可以降低电子设备显示图像时出现丢帧的可能性,保证显示屏显示图像的流畅性。
182.实施例(四)
183.本实施例这里介绍上述实施例(三)中,电子设备执行s1101-s1105的条件。具体的,如果第二统计周期的第二绘制帧长大于预设单帧时长,电子设备则可以执行s1101-s1105。
184.示例性的,电子设备可以周期性统计每一个统计周期内的第二绘制帧长。该第二统计周期是当前时刻的前一个统计周期。第二绘制帧长是电子设备进行图层绘制所需的时长。
185.其中,电子设备获取第二统计周期的第二绘制帧长的方法可以包括:电子设备可以获取第二统计周期的一个或多个第三绘制帧长;根据一个或多个第三绘制帧长,确定第二绘制帧长。在一个或多个第三绘制帧长中仅包括一个第三绘制帧长的情况下,上述第三绘制帧长等于这一个第三绘制帧长。在一个或多个第三绘制帧长中包括多个第三绘制帧长的情况下,第二绘制帧长是上述多个第三绘制帧长的平均值或者多个第三绘制帧长中最大的第三绘制帧长。
186.可以理解,如果第二统计周期的第二绘制帧长大于预设单帧时长,则表示电子设备在第二统计周期不能在一个同步周期完成图层的绘制。那么在该第二统计周期的下一个统计周期(即当前时刻所在的统计周期),电子设备在一个同步周期完成图层的绘制的可能性则较低,电子设备显示图像出现丢帧现象的可能性较高。在这种情况下,电子设备则可以执行s1101-s1105,以降低电子设备显示图像时出现丢帧现象的可能性,可以保证显示屏显示图像的流畅性。
187.本技术实施例这里介绍上述实施例(三)中第一延迟时长的取值。
188.在一种实现方式中,第一延迟时长offset_1是第一预设时长。其中,该第一预设时
长可以预先配置在电子设备中。或者,该第一预设时长可以由用户在电子设备中设置。例如,该第一预设时长可以为2毫秒(ms)、2.5ms、3ms或者4ms等任一时长。
189.在另一种实现方式中,第一延迟时长大于或等于第二绘制帧长与预设单帧时长的差值。也就是说,电子设备可以根据上述第二绘制帧长与预设单帧时长确定上述第一延迟时长。
190.例如,假设预设单帧帧长为16.66ms,第二绘制帧长为21ms,则上述第一延迟时长可以大于或等于第二绘制帧长21ms与预设单帧时长16.66ms的差值4.34ms。如,第一延迟时长可以为4.4ms、5ms或者5.5ms等任一时长。
191.实施例(五)
192.电子设备执行上述实施例(一)或实施例(二)的方法,即使增加了vsync_render信号这一级流水,如果电子设备的render线程渲染图层所需的时长较大,电子设备显示图像还是会出现丢帧的现象。
193.例如,如图13所示,电子设备执行s701,响应于ta时刻的vsync_app信号,ui线程可以执行“绘制a”绘制图层a;电子设备执行s702,响应于tb时刻的vsync_render信号,render线程可以执行“渲染a”渲染图层a;电子设备执行s703,响应于tc时刻的vsync_sf信号,合成线程可以执行“图像帧合成a”渲染图层a;电子设备执行s704,响应于td时刻的hw_vsync信号,lcd可以执行“图像帧显示a”刷新显示图像帧a。
194.如图13所示,电子设备执行s701,响应于tb时刻的vsync_app信号,ui线程可以执行“绘制b”绘制图层b;电子设备执行s702,响应于tc时刻的vsync_render信号,render线程可以执行“渲染b”渲染图层b。如图13所示,由于“渲染b”所需时长较大,导致render线程无法在tc时刻-td时刻这一个同步周期t
z2
渲染完图层b,即render线程无法在td时刻之外完成“渲染b”;因此,电子设备的合成线程不能响应于td时刻的vsync_sf信号执行“图像帧合成b”得到图像帧b,只能等待te时刻的vsync_sf信号到来。电子设备执行s703,响应于te时刻的vsync_sf信号,电子设备的合成线程执行“图像帧合成b”;电子设备执行s704,响应于tf时刻的hw_vsync信号,电子设备的lcd执行“图像帧显示b”刷新显示图像帧b。由图13可知,在te时刻-tf时刻这一同步周期,显示屏显示图像出现丢帧现象,即显示屏会显示一帧空白图像。
195.为了减少图13所示的电子设备的显示屏显示图像出现丢帧现象的可能性,电子设备可以调整上述vsync_render信号,使vsync_app信号相对于vsync_render提前第二延迟时长。这样,可以提升上述render线程在一个同步周期内完成图层渲染任务的可能性。如此,便可以降低电子设备显示图像时出现丢帧的可能性,保证显示屏显示图像的流畅性。
196.具体的,如图14所示,本技术实施例的方法可以包括“调整信号前的处理流程”、“调整信号的流程”和“调整信号后的处理流程”。如图14所示,该“调整信号前的处理流程”可以包括上述s701-s704;“调整信号的流程”可以包括s1401;“调整信号后的处理流程”可以包括s1402-s1405。
197.s1401、电子设备调整vsync_render信号,使vsync_render信号相对于vsync_app信号提前第二延迟时长。
198.其中,第二延迟时长的具体取值可以参考本技术实施例(六)中的详细描述,本技术实施例这里不予赘述。
199.结合图13,如图15所示,假设电子设备在ty时刻执行了s1401。那么,在图15所示的ty时刻之后,vsync_render信号相对于vsync_app信号提前第二延迟时长offset_2。而在ty时刻之前,vsync_render信号与vsync_app信号的延迟时间为零。
200.例如,如图15所示,在ty时刻之前的ta时刻和tb时刻,vsync_render信号、vsync_app信号、vsync_sf信号和hw_vsync信号同时到达。
201.如图15所示,在ty时刻之后的tc时刻,vsync_app信号、vsync_sf信号和hw_vsync信号同时到达,但vsync_render信号在tc时刻之前的t
c2
时刻到达,tc时刻落后于t
c2
时刻offset_2;在ty时刻之后的td时刻,vsync_app信号、vsync_sf信号和hw_vsync信号同时到达,但vsync_render信号在td时刻之前的t
d2
时刻到达,td时刻落后于t
d2
时刻offset_2;在ty时刻之后的te时刻,vsync_app信号、vsync_sf信号和hw_vsync信号同时到达,但vsync_render信号在te时刻之前的t
e2
时刻到达,te时刻落后于t
e2
时刻offset_2;在ty时刻之后的tf时刻,vsync_app信号、vsync_sf信号和hw_vsync信号同时到达,但vsync_render信号在tf时刻之前的t
f2
时刻到达,tf时刻落后于t
f2
时刻offset_2。
202.需要说明的是,上述vsync_render信号相对于vsync_app信号提前第二延迟时长,可以理解为:上述vsync_render信号相对于hw_vsync信号提前第二延迟时长。因此,电子设备可以基于hw_vsync信号(即硬件信号)调整vsync_render信号,使vsync_render信号相对于hw_vsync信号提前第二延迟时长。
203.需要注意的是,调整vsync_render信号,使vsync_render信号相比于vsync_app信号提前第二延迟时长后,vsync_render信号与vsync_app信号便会存在相位差。调整vsync_render信号,使vsync_render信号与vsync_app信号存在相位差后,vsync_app信号相对于vsync_render信号便会有一定的延迟时间(如第二延迟时长)。其中,调整vsync_render信号,使vsync_render信号与vsync_app信号存在相位差,该相位差转换为时长后可以表现为vsync_render信号提前第二延迟时长。
204.s1402、电子设备响应于vsync_app信号,绘制一个或多个图层。
205.s1403、电子设备响应于调整后的vsync_render信号,渲染该一个或多个图层。
206.s1404、电子设备响应于vsync_sf信号,对渲染的图层进行图层合成得到图像帧。
207.s1405、电子设备响应于hw_vsync信号,刷新显示图像帧。
208.例如,如图15所示,电子设备执行s1402,电子设备的ui线程响应于tb时刻的vsync_app信号执行“绘制b”绘制图层b;电子设备的render线程响应于t
c2
时刻的vsync_render信号执行“渲染b”渲染图层b;电子设备的合成线程响应于td时刻的vsync_sf信号执行“图像帧合成b”得到图像帧b;电子设备的lcd响应于te时刻的hw_vsync信号执行“图像帧显示b”刷新显示图像帧b。其中,电子设备执行图15所示的“绘制c”、“渲染c”、“图像帧合成c”和“图像帧显示c”的方式,本技术实施例这里不予赘述。
209.可以理解的是,电子设备执行s1401之后,vsync_render信号相对于vsync_app信号提前第一延迟时长offset_2,如t
c2
时刻的vsync_render信号相比于tc时刻的vsync_app信号提前offset_2。这样,ui线程在tb时刻执行“绘制b”之后,render线程响应于t
c2
时刻的vsync_render信号,便可以执行“渲染b”。这样,在td时刻的vsync_sf信号到来之前,render线程可以有更多的时间(如t
c2
时刻-td时刻这段时间)执行“渲染b”。其中,t
c2
时刻-td时刻这段时间的时长为t
z2
+offset_2。如此,render线程便可以有足够的时间在td时刻的vsync_sf
信号到来之前完成“渲染b”。因此,如图15所示,电子设备的显示屏显示图像不会出现丢帧现象。由此可见,采用本实施例的方法,可以降低电子设备显示图像时出现丢帧的可能性,保证显示屏显示图像的流畅性。
210.实施例(六)
211.本实施例这里介绍上述实施例(五)中,电子设备执行s1401-s1405的条件。具体的,如果第二统计周期的第二绘制帧长小于预设单帧时长,第二统计周期的第二渲染时长大于预设单帧时长,电子设备则可以执行s1401-s1405。
212.示例性的,电子设备可以周期性统计每一个统计周期内的第二绘制帧长和第二渲染时长。该第二统计周期是当前时刻的前一个统计周期。第二绘制帧长是电子设备进行图层绘制所需的时长。第二渲染时长是电子设备进行图层渲染所需的时长。
213.其中,电子设备获取第二统计周期的第二绘制帧长的方法可以参考上述实施例(四)中的详细介绍,这里不予赘述。电子设备获取第二统计周期的第二渲染帧长的方法可以包括:电子设备可以获取第二统计周期的一个或多个第三渲染帧长;根据一个或多个第三渲染帧长,确定第二渲染帧长。在一个或多个第三渲染帧长中仅包括一个第三渲染帧长的情况下,上述第三渲染帧长等于这一个第三渲染帧长。在一个或多个第三渲染帧长中包括多个第三渲染帧长的情况下,第二渲染帧长是上述多个第三渲染帧长的平均值或者多个第三渲染帧长中最大的第三渲染帧长。
214.可以理解,如果第二统计周期的第二渲染时长大于预设单帧时长,则表示电子设备在第二统计周期不能在一个同步周期完成图层的渲染。那么在该第二统计周期的下一个统计周期(即当前时刻所在的统计周期),电子设备在一个同步周期完成图层的渲染的可能性则较低,电子设备显示图像出现丢帧现象的可能性较高。
215.并且,如果第二统计周期的第二绘制帧长小于预设单帧时长,则表示电子设备在第二统计周期可以在一个同步周期完成图层的绘制。因此,在第二统计周期的第二绘制帧长小于预设单帧时长,第二统计周期的第二渲染时长大于预设单帧时长的情况下,电子设备执行s1101-s1105,可以在电子设备能够在一个同步周期完成图层绘制的可能性较高的前提下,提升电子设备在一个同步周期完成渲染的可能性。如此,便可以降低电子设备显示图像时出现丢帧现象的可能性,可以保证显示屏显示图像的流畅性。
216.本技术实施例这里介绍上述实施例(五)中第二延迟时长的取值。
217.在一种实现方式中,第二延迟时长offset_2是第二预设时长。其中,该第二预设时长可以预先配置在电子设备中。或者,该第二预设时长可以由用户在电子设备中设置。例如,该第二预设时长可以为2.5ms、3ms、3.6ms或者4ms等任一时长。
218.在另一种实现方式中,第二延迟时长大于或等于预设单帧时长与第二绘制帧长的差值。也就是说,电子设备可以根据上述第二绘制帧长与预设单帧时长确定上述第二延迟时长。
219.例如,假设预设单帧帧长为16.66ms,第二绘制帧长为14ms,则上述第二延迟时长可以大于或等于预设单帧时长16.66ms与第二绘制帧长14ms的差值2.66ms。如,第一延迟时长可以为2.7ms、3ms、4ms或者5ms等任一时长。
220.实施例(七)
221.在该实施例中,在s701-s704之后,如果第二统计周期的第二绘制帧长大于预设单
帧时长,电子设备可以执行上述实施例(三)或实施例(四)所述的s1101-s1105;如果第二统计周期的第二绘制帧长小于预设单帧时长,且第二统计周期的第二渲染时长大于预设单帧时长,电子设备可以执行上述实施例(五)或实施例(六)所述的s1401-s1405。
222.实施例(八)
223.本技术实施例提供一种基于垂直同步信号的图像处理方法。该方法可以应用于包括显示屏的电子设备。与上述实施例提供的方法不同的是,电子设备不需要为电子设备的render线程增加一级流水。在该实施例中,垂直同步信号1(如vsync_app信号)是第一垂直同步信号,垂直同步信号2(如vsync_sf信号)是第二垂直同步信号。具体的,如图16所示,该基于垂直同步信号的图像处理方法可以包括s1601-s1604。
224.s1601、电子设备响应于vsync_app信号,绘制一个或多个图层,并渲染该一个或多个图层。
225.s1602、电子设备在预设单帧时长内未渲染完上述一个或多个图层,则电子设备响应于渲染完该一个或多个图层后的第一个vsync_sf信号对所述一个或多个图层进行图层合成得到图像帧。
226.其中,在该实施例中,预设单帧时长可以等于vsync_app信号、vsync_sf信号或者hw_vsync信号的信号周期,即上述同步周期t
z2
。
227.s1603、电子设备在预设单帧时长内渲染完一个或多个图层,则电子设备响应于渲染完该一个或多个图层后的第二个vsync_sf信号对该一个或多个图层进行图层合成得到图像帧。
228.在s1602或s1603之后,本技术实施例的方法还可以包括s1604。
229.s1604、电子设备响应于hw_vsync信号,刷新显示图像帧。
230.在常规技术,render线程渲染完图层后,可以立即将渲染的图层送到gpu供合成线程进行处理。这样,在下一个vsync_sf信号到来时,合成线程便可以对该渲染的图层进行图层合成。也就是说,无论电子设备的ui线程和render线程是否可以在一帧内完成“绘制”和“渲染”,电子设备都可以响应于渲染完该图层后的第一个vsync_sf信号对该图层进行图层合成得到图像帧。
231.例如,如图6所示,render线程在tb时刻之前完成“渲染1”,可以将图层1送到gpu供合成线程进行处理;tb时刻的vsync_sf信号到来之后,合成线程便可以执行“图像帧合成1”。又例如,如图6所示,render线程在tc时刻之后完成“渲染2”,可以将图层2送到gpu供合成线程进行处理;td时刻的vsync_sf信号到来之后,合成线程便可以执行“图像帧合成2”。
232.而本实施例中,针对绘制和渲染在一帧内完成(即电子设备在预设单帧时长内渲染完图层)的情况,与绘制和渲染未在一帧内完成(即电子设备在预设单帧时长内未渲染完图层)的情况,电子设备可以做出不同的处理。
233.例如,如图17所示,电子设备执行s1601,电子设备的ui线程响应于t1时刻的vsync_app信号执行“绘制1”绘制图层1,然后由render线程执行“渲染1”渲染图层1。其中,电子设备的render线程在图17所示的t2时刻之前完成“渲染1”,即render线程在t1时刻-t2时刻这一同步周期t
z2
渲染完图层1,即电子设备在预设单帧时长(如t
z2
)内渲染完图层1;因此,电子设备可以执行s1603,电子设备的合成线程响应于render线程渲染完图层1后的第二个vsync_sf信号,对图层1进行“图像帧合成1”得到图像帧1。其中,render线程在t1时刻
之后,t2时刻之前渲染完图层1;因此,t2时刻的vsync_sf信号是render线程渲染完图层1后的第一个vsync_sf信号,t3时刻的vsync_sf信号是render线程渲染完图层1后的第二个vsync_sf信号。由此可见,如图17所示,电子设备的合成线程可以响应于t3时刻的vsync_sf信号,对图层1进行“图像帧合成1”得到图像帧1。然后,电子设备可以执行s1604,电子设备的lcd可以响应于t4时刻的hw_vsync信号,执行“图像帧显示1”刷新显示图像帧1。
234.又例如,如图17所示,电子设备执行s1601,电子设备的ui线程响应于t2时刻的vsync_app信号执行“绘制2”绘制图层2,然后由render线程执行“渲染2”渲染图层2。其中,电子设备的render线程在图17所示的t3时刻之前未完成“渲染2”,即render线程在t2时刻-t2时刻这一同步周期t
z2
未渲染完图层2,即电子设备在预设单帧时长(如t
z2
)内未渲染完图层2;因此,电子设备可以执行s1602,电子设备的合成线程响应于render线程渲染完图层1后的第一个vsync_sf信号,对图层2进行“图像帧合成2”得到图像帧2。其中,render线程在t3时刻之后染完图层2;因此,t4时刻的vsync_sf信号是render线程渲染完图层2后的第一个vsync_sf信号。由此可见,如图17所示,电子设备的合成线程可以响应于t4时刻的vsync_sf信号,对图层2进行“图像帧合成2”得到图像帧2。然后,电子设备可以执行s1604,电子设备的lcd可以响应于t5时刻的hw_vsync信号,执行“图像帧显示2”刷新显示图像帧2。
235.需要说明的是,本技术实施例中,render线程将渲染后的图层送到gpu,具体是指:render线程将渲染后的图层保存至gpu的sf缓存队列(buffer)。该sf buffer可以以先进先出的原则保存渲染后的图层。合成线程响应于vsync_sf信号,可以对sf buffer的队首的图层进行图层合成,该图层从sf buffer中出队。
236.在一种实现方式中,电子设备实现上述s1603中“电子设备在预设单帧时长内渲染完一个或多个图层,则电子设备响应于渲染完该一个或多个图层后的第二个vsync_sf信号对该一个或多个图层进行图层合成得到图像帧”的方法可以包括:电子设备在预设单帧时长内渲染完上述一个或多个图层,则电子设备的render线程可以响应于渲染完该一个或多个图层后的第一个vsync_sf信号,将渲染的一个或多个图层保存至sf buffer;然后,电子设备的合成线程响应于渲染完该一个或多个图层后的第二个vsync_sf信号,对该一个或多个图层进行图层合成得到图像帧。
237.也就是说,如果绘制和渲染在一帧内完成(即电子设备在预设单帧时长内渲染完图层),render线程不会立即将渲染的图层保存至sf buffer,而是进入休眠sleep状态(如图17所示的sleep状态);响应于渲染完该一个或多个图层后的第一个vsync_sf信号,才会将渲染的图层送到保存至sf buffer;因此,在同一时刻(即渲染完该一个或多个图层后的第一个vsync_sf信号到达的时刻),sf buffer中还未保存该图层,合成线程则不能对该图层进行图层合成。
238.在另一种实现方式中,电子设备实现上述s1603中“电子设备在预设单帧时长内渲染完一个或多个图层,则电子设备响应于渲染完该一个或多个图层后的第二个vsync_sf信号对该一个或多个图层进行图层合成得到图像帧”的方法可以包括:电子设备在预设单帧时长内渲染完上述一个或多个图层,则电子设备的render线程可以立即将该一个或多个图层保存至sf buffer;但是,电子设备的合成线程响应于render线程渲染完该一个或多个图层后的第一个vsync_sf信号,不会对该一个或多个图层进行图层合成;该电子设备的合成线程响应于渲染完该一个或多个图层后的第二个vsync_sf信号,才会对该一个或多个图层
进行图层合成得到图像帧。
239.通过本实施例的方案,电子设备针对一帧内完成绘制和渲染的图层,可以将该图层延后一帧进行图层合成。这样,可以延后一帧显示该图层对应的图像帧。如此,即使后续存在电子设备无法在一帧内完成绘制和渲染的情况,也可以留出一帧(即一个同步周期t
z2
)的缓冲时间,可以降低电子设备显示图像时出现丢帧的可能性,保证显示屏显示图像的流畅性。
240.需要说明的是,电子设备执行本实施例的方法(如执行s1601-s1604)进行图层绘制、渲染、合成以及图像帧显示的具体场景或条件,可以参考上述实施例(二)所述的场景或条件,本技术实施例这里不予赘述。
241.实施例(九)
242.本实施例中对本技术任一实施例中,电子设备确定一个或多个图层渲染完成的具体方法进行说明。
243.在第一种应用场景中,上述一个或多个图层可以为一个图层。在第二种应用场景中,上述一个或多个第一图层可以包括多个图层。在不同的应用场景中,电子设备确定一个或多个图层渲染完成的方式不同。
244.在第一种应用场景中,一个或多个图层渲染完成是指:上述一个图层渲染完成。
245.在第二种应用场景中,一个或多个图层渲染完成是指:上述多个图层中的预设图层渲染完成;或者,上述多个图层中的所有图层渲染完成。例如,该预设图层可以包括该多个图层中、图层面积与显示屏的面积的比值大于预设比例阈值的图层。
246.实施例(十)
247.请参考图18,其示出本技术实施例提供的一种优化模块的示意图。该优化模块可以是基于垂直同步信号的图像处理装置或电子设备中,用于实现本技术实施例的方法的功能模块。如图18所示,该优化模块可以包括:图形负载检测模块1801、场景识别模块1802、多级显示流水策略模块1803、显示流水调节模块1804、调度策略调节模块1805、offset算法模块1806和render线程错帧并行模块1807。
248.其中,图形负载检测模块1801用于监测和统计ui线程绘制每一帧图层所需要的绘制帧长(即绘制每一帧图层所需的时长)和render线程渲染每一帧图层所需要的渲染帧长(即渲染每一帧图层所需的时长),作为多级显示流水策略的输入例如,图形负载检测模块1801用于支持电子设备执行上述方法实施例中的s901中“统计第一统计周期的第一处理帧长”的操作,s901a-s901b,/或用于本文所描述的技术的其它过程。
249.场景识别模块1802用于识别电子设备的场景类型(如前台应用的场景类型)。例如,场景识别模块1802用于支持电子设备执行上述方法实施例中的“识别电子设备是否处于高帧率场景”、“识别电子设备的前台应用是否为预设应用”的操作,/或用于本文所描述的技术的其它过程。
250.多级显示流水策略模块1803用于决策是否生效并指导调度策略调整模块1805调整电子设备绘制、渲染、合成图层并进行图像帧显示的策略。示例性的,多级显示流水策略模块1803可以根据上述图形负载检测模块1801的检测或统计结果,以及场景识别模块1802的识别结果,决策是否生效并指导调度策略调整模块1805调整电子设备绘制、渲染、合成图层并进行图像帧显示的策略。例如,多级显示流水策略模块1803用于支持电子设备执行上
述方法实施例中的s901,和/或用于本文所描述的技术的其它过程。
251.调度策略调节模块1805用于根据多级显示流水策略模块1803的决策,调整电子设备绘制、渲染、合成图层并进行图像帧显示的策略。例如,调度策略调节模块1805可以调整电子设备绘制、渲染、合成图层并进行图像帧显示的策略,使得电子设备执行上述s701-s704,或者s701
′
和s703-s704,或者s1101-s1105,或者s1401-s1405,或者s1601-s1604。
252.显示流水调节模块1804为本技术实施例提供的统一使能接口。调度策略调节模块1805可以通过该显示流水调节模块1804与render线程、offset算法模块1806和render线程错帧并行模块1807等模块通信。
253.offset算法模块1806用于调节vsync_render信号的偏移。例如,offset算法模块1806用于支持电子设备执行上述方法实施例中的“获取第一延迟时间”和“获取第二延迟时间”的操作,/或用于本文所描述的技术的其它过程。offset算法模块1806还用于支持电子设备执行上述方法实施例中的s1101,s1401,和/或用于本文所描述的技术的其它过程。
254.render线程错帧并行模块1807可以是上述render线程。例如,该render线程错帧并行模块1807用于支持电子设备执行上述方法实施例中的s702,s701
′
中“渲染图层”的操作,s1103,s1403,s1601中“渲染图层”的操作,和/或用于本文所描述的技术的其它过程。其中,上述优化模块可以在图3所示的ui框架30中实现。
255.当然,上述电子设备还可以包括ui线程并行模块、合成线程并行模块和显示模块。例如,ui线程并行模块用于支持电子设备执行上述方法实施例中的s701,s701
′
中“绘制图层”的操作,s1102,s1402,s1601中“绘制图层”的操作,和/或用于本文所描述的技术的其它过程。合成线程并行模块用于支持电子设备执行上述方法实施例中的s703,s1104,s1404,s1602,s1603,和/或用于本文所描述的技术的其它过程。显示模块用于支持电子设备执行上述方法实施例中的s704,s1105,s1405,s1604,和/或用于本文所描述的技术的其它过程。
256.实施例(十一)
257.本技术一些实施例提供了一种电子设备,该电子设备可以包括:显示屏(如触摸屏)、存储器和一个或多个处理器。该显示屏、存储器和处理器耦合。该存储器用于存储计算机程序代码,该计算机程序代码包括计算机指令。当处理器执行计算机指令时,电子设备可执行上述方法实施例中电子设备执行的各个功能或者步骤。该电子设备的结构可以参考图1所示的电子设备100的结构。
258.本技术实施例还提供一种芯片系统,如图19所示,该芯片系统1900包括至少一个处理器1901和至少一个接口电路1902。处理器1901和接口电路1902可通过线路互联。例如,接口电路1902可用于从其它装置(例如电子设备的存储器)接收信号。又例如,接口电路1902可用于向其它装置(例如处理器1901或者电子设备的触摸屏)发送信号。示例性的,接口电路1902可读取存储器中存储的指令,并将该指令发送给处理器1901。当所述指令被处理器1901执行时,可使得电子设备执行上述实施例中的各个步骤。当然,该芯片系统还可以包含其他分立器件,本技术实施例对此不作具体限定。
259.本技术实施例还提供一种计算机存储介质,该计算机存储介质包括计算机指令,当所述计算机指令在上述电子设备上运行时,使得该电子设备执行上述方法实施例中电子设备执行的各个功能或者步骤。
260.本技术实施例还提供一种计算机程序产品,当所述计算机程序产品在计算机上运
行时,使得所述计算机执行上述方法实施例中电子设备执行的各个功能或者步骤。
261.通过以上实施方式的描述,所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。
262.在本技术所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个装置,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
263.所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是一个物理单元或多个物理单元,即可以位于一个地方,或者也可以分布到多个不同地方。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
264.另外,在本技术各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
265.所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个可读取存储介质中。基于这样的理解,本技术实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该软件产品存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本技术各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read only memory,rom)、随机存取存储器(random access memory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。
266.以上内容,仅为本技术的具体实施方式,但本技术的保护范围并不局限于此,任何在本技术揭露的技术范围内的变化或替换,都应涵盖在本技术的保护范围之内。因此,本技术的保护范围应以所述权利要求的保护范围为准。
技术特征:
1.一种基于垂直同步信号的图像处理方法,应用于高帧率场景,其特征在于,所述方法包括:电子设备响应于第一垂直同步信号,绘制一个或多个图层;所述电子设备响应于第二垂直同步信号,渲染所述电子设备绘制的图层;其中,所述高帧率大于60hz,所述第一垂直同步信号或者所述第二垂直同步信号的信号周期小于16.66ms。2.根据权利要求1所述的方法,其特征在于,所述电子设备响应于第二垂直同步信号,渲染所述一个或多个图层,包括:如果所述电子设备满足以下至少一个预设条件,所述电子设备则响应于所述第二垂直同步信号,渲染所述一个或多个图层;其中,所述预设条件包括:所述电子设备的当前应用是预设应用,所述预设应用不包括游戏应用;所述电子设备在第一统计周期的第一处理帧长大于预设单帧帧长,所述第一处理帧长是第一绘制帧长和第一渲染帧长之和,所述第一绘制帧长是所述电子设备绘制图层所需的时长,所述第一渲染帧长是所述电子设备渲染图层所需的时长。3.根据权利要求1或2所述的方法,其特征在于,所述第二垂直同步信号与所述第一垂直同步信号同频率。4.根据权利要求1或2所述的方法,其特征在于,在所述电子设备响应于第二垂直同步信号,渲染所述一个或多个图层之后,所述方法还包括:所述电子设备调整所述第二垂直同步信号,使所述第二垂直同步信号相比于所述第一垂直同步信号延迟第一延迟时长;所述电子设备响应于调整后的所述第二垂直同步信号渲染所述电子设备绘制的图层。5.根据权利要求4所述的方法,其特征在于,所述电子设备调整所述第二垂直同步信号,使所述第二垂直同步信号相比于所述第一垂直同步信号延迟第一延迟时长,包括:如果第二统计周期的第二绘制帧长大于预设单帧时长,所述电子设备则调整所述第二垂直同步信号,使所述第二垂直同步信号相比于所述第一垂直同步信号延迟所述第一延迟时长;其中,所述第一延迟时长大于或等于所述第二绘制帧长与所述预设单帧时长的差值。6.根据权利要求1或2所述的方法,其特征在于,在所述电子设备响应于第二垂直同步信号,渲染所述一个或多个图层之后,所述方法还包括:所述电子设备调整所述第二垂直同步信号,使所述第一垂直同步信号相比于所述第二垂直同步信号提前第二延迟时长;所述电子设备响应于调整后的所述第二垂直同步信号渲染所述电子设备绘制的图层。7.根据权利要求6所述的方法,其特征在于,所述电子设备调整所述第二垂直同步信号,使所述第二垂直同步信号相比于所述第一垂直同步信号延迟第一延迟时长,包括:如果第二统计周期的第二绘制帧长小于预设单帧时长,所述第二统计周期的第二渲染时长大于所述预设单帧时长,所述电子设备则调整所述第二垂直同步信号,使所述第一垂直同步信号相比于所述第二垂直同步信号提前第二延迟时长;其中,所述第二延迟时长大于或等于所述预设单帧时长与所述第二绘制帧长的差值。
8.根据权利要求1或2所述的方法,其特征在于,所述方法还包括:所述电子设备响应于第三垂直同步信号,合成所述电子设备渲染的图层。9.一种基于垂直同步信号的图像处理方法,应用于高帧率场景,其特征在于,所述方法包括:电子设备响应于第一垂直同步信号绘制一个或多个图层,并渲染所述一个或多个图层;当所述电子设备在所述第一垂直同步信号内未渲染完所述一个或多个图层,所述电子设备响应于渲染完所述一个或多个图层后的第一个第二垂直同步信号对所述一个或多个图层进行图层合成;或者,当所述电子设备在所述所述第一垂直同步信号内渲染完所述一个或多个图层,所述电子设备响应于渲染完所述一个或多个图层后的第二个第二垂直同步信号对所述一个或多个图层进行图层合成得到图像帧;其中,所述高帧率大于60hz,所述第一垂直同步信号或者所述第二垂直同步信号的信号周期小于16.66ms。10.根据权利要求9所述的方法,其特征在于,在所述电子设备响应于第一垂直同步信号,渲染所述一个或多个图层,包括:如果所述电子设备满足以下至少一个条件,所述电子设备则响应于所述第一垂直同步信号,渲染所述一个或多个图层;其中,所述条件包括:所述电子设备的当前应用是预设应用,所述预设应用不包括游戏应用;所述电子设备在第一统计周期的第一处理帧长大于预设单帧帧长,所述第一处理帧长是第一绘制帧长和第一渲染帧长之和,所述第一绘制帧长是所述电子设备绘制图层所需的时长,所述第一渲染帧长是所述电子设备渲染图层所需的时长。11.一种电子设备,其特征在于,所述电子设备包括显示屏、存储器和一个或多个处理器;所述显示屏、所述存储器和所述处理器耦合;所述存储器用于存储计算机程序代码,所述计算机程序代码包括计算机指令,当所述处理器执行所述计算机指令时,所述电子设备执行如权利要求1-10中任一项所述的方法。12.一种芯片系统,其特征在于,所述芯片系统应用于包括显示屏的电子设备;所述芯片系统包括一个或多个接口电路和一个或多个处理器;所述接口电路和所述处理器通过线路互联;所述接口电路用于从所述电子设备的存储器接收信号,并向所述处理器发送所述信号,所述信号包括所述存储器中存储的计算机指令;当所述处理器执行所述计算机指令时,所述电子设备执行如权利要求1-10中任一项所述的方法。13.一种计算机存储介质,其特征在于,包括计算机指令,当所述计算机指令在电子设备上运行时,使得所述电子设备执行如权利要求1-10中任一项所述的方法。
技术总结
本申请公开一种基于垂直同步信号的图像处理方法及电子设备,涉及图像处理及显示技术领域,可以降低电子设备显示图像时出现丢帧的可能性,保证显示屏显示图像的流畅性。具体方案包括:电子设备响应于第一垂直同步信号,绘制一个或多个图层;电子设备响应于第二垂直同步信号,渲染电子设备绘制的图层。渲染电子设备绘制的图层。渲染电子设备绘制的图层。
技术研发人员:陈健 余谭其 李煜 王亮 吉星春
受保护的技术使用者:华为技术有限公司
技术研发日:2020.09.30
技术公布日:2023/10/7
版权声明
本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
飞行汽车 https://www.autovtol.com/
